I don't know if it's because I'm unfamiliar with RoboRealm, but I find this thread to be quite impressive. Thank you for your posts EDV!
Regards
I don't know if it's because I'm unfamiliar with RoboRealm, but I find this thread to be quite impressive. Thank you for your posts EDV!
Regards
I believe that the machines finally will be able to see real world in the near future and this faith help me in my developing.
You're welcome and thank you for your support!
Next modification of AVM Navigator v0.7.2 is released.
Changes:
The "Navigation map" was placed into main Navigator dialog window.
Also was added map scrolling and resizing abilities.
![]()
Some user video of face tracking by AVM:
Next modification of AVM Navigator v0.7.2.1 is released.
Changes:
Visual odometry algorithm was updated:
1. Connect your robot to AVM Navigator.Originally Posted by Mel
Just use the variables that described below for connection of your robot to AVM Navigator:
Use variable NV_TURRET_BALANCE for camera turning:
NV_TURRET_BALANCE - indicates the turn degree amount.
This value range from -100 to 100 with forward being zero.
Use for motor control NV_L_MOTOR and NV_R_MOTOR variables
that have range from -100 to 100 for motion control
("-100 " - full power backwards, "100" - full power forwards, "0" - motor off).
You also can used alternative control variables
(motors range from 0 to 255 with 128 being neutral):
NV_L_MOTOR_128, NV_R_MOTOR_128 - motors control
NV_TURRET_128 - control of camera turning
NV_TURRET_INV_128 - inversed control of camera turning
2. Further you should train AVM to some object in "Object recognition" mode
and then switch to "Navigate mode" for activation of control variables (NV_L_MOTOR,
NV_R_MOTOR, NV_TURRET_BALANCE and others). The "follow me" algorithm will be activated
(Navigate mode) when you show object which was learned earlier in front of your robot.
Navigator package is updated now and you can download next modification of AVM Navigator v0.7.2.2Originally Posted by Kamlesh Thakur
from your account link.
And now you can disable object trajectory in Navigator dialog window by checkbox "Show the object trajectory"
in “Object recognition” mode.
For reducing of object windows size:
Click "Set key image size (New)" in Navigator dialog window (object recognition mode) and then
answer "No" on question "Do you want to set 80x80 recommended key size?".
Further choose 40x40 key image size (click the left mouse button) and answer "Yes" in next dialog window.
Now you can train AVM on objects with resolution 40x40 pixels.
I have done new plugin for RoboRealm:
Digital Video Recording system (DVR)
You can use the "DVR Client-server" package as a Video Surveillance System in which parametric data
(such as VR_VIDEO_ACTIVITY) from different video cameras will help you search for a video fragment
that you are looking for.
You can use the "DVR Client-server" package as a powerful instrument for debugging your video processing
and control algorithms that provides access to the values of your algorithm variables that were archived
during recording.
Technical Details
- ring video/parametric archive with duration of 1 - 12 months;
- configurable database record (for parametric data) with maximal length of 190 bytes;
- writing of parameters to database with discretization 250 ms;
- the DVR Client can work simultaneously with four databases that can be located at remote computers.
![]()
I think you could use AVM Navigator with VBScript program like this:Originally Posted by Ben
=============================Code:' Get turret control variables turret_v = GetVariable("TURRET_V_CONTROL") turret_h = GetVariable("TURRET_H_CONTROL") turret_f = GetVariable("TURRET_FIRE") nvObjectsTotal = GetVariable("NV_OBJECTS_TOTAL") if nvObjectsTotal>0 then ' If any object was found ' Get image size img_w = GetVariable("IMAGE_WIDTH") img_h = GetVariable("IMAGE_HEIGHT") ' Get array variables of recognized objects nvArrObjRectX = GetArrayVariable("NV_ARR_OBJ_RECT_X") nvArrObjRectY = GetArrayVariable("NV_ARR_OBJ_RECT_Y") nvArrObjRectW = GetArrayVariable("NV_ARR_OBJ_RECT_W") nvArrObjRectH = GetArrayVariable("NV_ARR_OBJ_RECT_H") ' Get center coordinates of first object from array obj_x = nvArrObjRectX(0) + nvArrObjRectW(0)/2 obj_y = nvArrObjRectY(0) - nvArrObjRectH(0)/2 ' Get difference between object and screen centers dX = img_w/2 - obj_x dY = img_h/2 - obj_y threshold = 40 if dX > threshold and turret_h > -128 then ' The object is at left side turret_h = turret_h - 1 end if if dX < -threshold and turret_h < 127 then ' The object is at right side turret_h = turret_h + 1 end if if dY > threshold and turret_v > -128 then ' The object is at the bottom turret_v = turret_v - 1 end if if dY < -threshold and turret_v < 127 then ' The object is at the top turret_v = turret_v + 1 end if ' Is the target locked? if dX < threshold and dX > -threshold and dY < threshold and dY > -threshold then turret_f = 1 else turret_f = 0 end if else ' Back to the center if object is lost if turret_h > 0 then turret_h = turret_h - 1 if turret_h < 0 then turret_h = turret_h + 1 if turret_v > 0 then turret_v = turret_v - 1 if turret_v < 0 then turret_v = turret_v + 1 turret_f = 0 end if turret_v128 = turret_v + 128 turret_h128 = turret_h + 128 ' Set turret control variables SetVariable "TURRET_V_CONTROL", turret_v SetVariable "TURRET_H_CONTROL", turret_h SetVariable "TURRET_FIRE", turret_f SetVariable "TURRET_V_128", turret_v128 SetVariable "TURRET_H_128", turret_h128
TURRET_H_128 - horizontal turret control
TURRET_V_128 - vertical turret control
TURRET_FIRE - fire signal
See attached program.
I tested it on the prototype of "Twinky rover" and it works fine as you can visibly understand
It is a testing of the enhanced tracking algorithm that takes into consideration variable servo speed:
See VBScript program and diagram below for more details:
Check: Publix Ad and Kroger ad on Weekly Circulars.
Last edited by EDV; 04-21-2012 at 01:25 PM.
The source data for turret control is deviation of the object center from center of screen (variables dX, dY).Originally Posted by Ben
Further it influence on status of intermediate control variables "turret_h" and "turret_v" that has range from -128 to 127.
The variable "threshold" is working like hysteresis that prevents self-oscillation of turret.Code:if dX > threshold and turret_h > -128 then ' The object is at left side turret_h = turret_h - 1 end if if dX < -threshold and turret_h < 127 then ' The object is at right side turret_h = turret_h + 1 end if if dY > threshold and turret_v > -128 then ' The object is at the bottom turret_v = turret_v - 1 end if if dY < -threshold and turret_v < 127 then ' The object is at the top turret_v = turret_v + 1 end if
When object is found in center of screen then it activate fire signal (variable turret_f).Code:if dX < threshold and dX > -threshold and dY < threshold and dY > -threshold then turret_f = 1 else turret_f = 0 end if
There are currently 7 users browsing this thread. (0 members and 7 guests)
Bookmarks