AVM Navigator
The AVM Navigator module is a third party module that provides object recognition functionality that allows you
to program your robot to recognize objects in the environment. Using the AVM Navigator module you can
change robot behavior based on recognized objects or navigate the robot relative to those objects.
The AVM Algorithm uses a principle of multilevel decomposition of recognition matrices,
is steady against camera noise, scales well with additional objects and is simple and quick to train.
It also performs well on higher image resolutions
(960x720 and more). The algorithm works with grayscale images.
Detailed information about the AVM algorithm can be found here.
A training demonstration video how to train objects using the AVM algorithm can be found here.
The AVM Module has several modes that instruct the module how to perform.
Object Recognition - This mode allows you to train on a particular object as seen within the camera. Once
trained the object will be identified when seen again.
Navigate mode - This mode is similar to the Object Recognition mode but it provides variables that specify
which direction the object is in relation to the robot. Using these variables you can steer the robot
towards a particular object.
The algorithm attempts to align the position of a turret (with a camera fixed on top) and body of the
robot to the center of the recognized object. If the object is far away
it will alter the NV_FORWARD variable to signal a move forward. If it is too
close the NV_BACKWARDS variable will be set to move the robot backwards. If multiple objects
are recognized the object with the highest index (most recently learned object) is chosen.
Nova gate mode - Similar to the Navigate mode this mode provides a visual stepping
stone functionality by identifying 'gate' objects in succession. By sequentially identifying
objects you can lead a robot along a path of visual markers.
The gate data contains weights for the seven routes that indicate the importance of this gateway
for each route. At the bottom of the screen is an indicator "horizon" which shows the direction
to adjust the robot's motion for further progress along the route. The gates are painted
blue if the gates do not participate in the current route (weight rate 0) with warmer colors
(up till yellow) show a gradation of "importance" of the gate in the current route.
To train a route press the "Walking by way" button and then drive the robot manually through
the route. The appropriate gates will be created automatically as the robot
progresses through its route. When you reach the end of the route press the "Set
Checkpoint" button which will cause the robot to turn on that spot and mark the
spot as a checkpoint.
Once a route is complete, the robot can re-travel that route by identifying the same
gates/objects and use these gates to steer the robot along the correct path.
If the robot loses track of where it is along the route (i.e. no gates are in view) it
will turn around on one spot to search for the next gate in the route sequence. As targeting
gates may be momentarily lost from time to time this behavior may cause a slight twitching
of the robot from time to time.
Interface






Instructions
1. Navigator Mode - Select which mode the AVM module should function as. Object Recognition will recognize object, Navigate
will recognize a visual landmark and indicate which direction to move using the provided variables, and Nova gate
mode will steer the robot through a sequence of gates.
Navigation by map - In this mode you should first point the robot to the first target position. The
robot then plans the path from the current location to the target position (big green circle) and
then begins walking to the interim point of path (big red circle). When the interim
point is achieved the robot gets the new direction to the next waypoint and so forth.
Marker mode - The marker mode provides for the creation of the navigation map that will done automatically
by manually leading the robot along a path. For best results you should repeat the path several times in order
to create appropriate map details.
2. Show associative tree - Shows the inner workings of the AVM module and its recognition tree structure.
3. New - To clear all recognition objects press the New button.
4. Clear the gate data - Press to clear all the current gate data and begin a new route.
5. Save - Save the current recognition objects to disk.
6. Load - Loads back in previously saved objects.
7. Learn Object - Press to learn a new object to recognize (Recognition mode)
8. Walking to the point number -
Activating of route that was selected by user for autonomous navigation and sets destination checkpoint (Navigate mode)
9. Walking by way - Press to start a new route or to correct the route index selected. This starts processing
for images for potential gate creation. Once you have pressed this button you can manually move the
robot along the path to create gates for later recall. (Nova gate mode)
10. Set Checkpoint - When you have completed the route press this button to signal the end of the path.
11. Turret/Body Inertia - Different robots require different timings based on their mass and size. Use
the Inertia numbers to adjust the movement of your robot to compensate for different sizes.
12. Move/Turn speed - Definition of maximal speed for robot moving and turning. These parameters
can limit the values of control variables.
Examples
Speak an Object's Name
The variable NV_ARR_OBJ_IDX is an array and can be used to construct a string to speak using the
following VBScript:
TotalObj = GetVariable("NV_OBJECTS_TOTAL")
ObjIdx = GetArrayVariable("NV_ARR_OBJ_IDX")
ReDim ObjName(20)
ObjName(0) = "1"
ObjName(1) = "2"
ObjName(2) = "3"
ObjName(3) = "4"
ObjName(4) = "5"
SpeakStr = "I see"
for i = 0 to TotalObj-1 step 1
SpeakStr = SpeakStr + " " + ObjName(ObjIdx(i))
next
if TotalObj = 0 then SpeakStr = SpeakStr + " nothing"
SetVariable "SPEAK_STR", SpeakStr
For the complete example download the robofile.
Notes
How "Navigation by Map" works.
Obstacle avoidance
The robot processes the motion history of input images for the previous second. If
any commands were given (i.e. the "forward" command) but no changes where seen in the input
image (nothing happened) then the robot is assumed to be
stuck (i.e. the robot is pushing against a wall). When stuck the module will set the
movement variables to move backwards. The stuck situation is indicated by a red rectangle with
a circle in the center.
Odometry / localization
The robot sets the marks (it writes central part of the screen image with associated data to AVM tree). Marker
data (inside AVM) contain horizon angle (azimuth), path length from start and
X, Y location position (relative to the start position). Information for the marker data is based
on marks tracking (horizontal shift for azimuth and change of mark scaling for
path length measurement). Generalization of all recognized data of marks in input image gives
actual value of azimuth and path length. If we have information about motion direction
and value of path length from previous position and x, y coordinates of previous position
then we can calculate the next coordinates of the current position. This information will be
written to the new mark (inside AVM) when it is created and so forth.
The set of marks inside the AVM gives a map of locations (robot see the marks and recognize
its location).
Quake 3 Mod
Don't have a robot just yet? Then click here to view the manual that explains how to setup RoboRealm with
the AVM module to control the movement and processing of images from the Quake first person
video game. This allows you to work with visual odometry techniques without needing a robot!
The additional software needed for this integration can be downloaded here.
Variables
The AVM Navigator module produces several variables that can be used to guide a robot.
NV_FORWARD - set when the robot should move forward
NV_BACKWARDS - set when the robot should move backwards
NV_LEFT - set when the robot should move forward or backwards
to the left side
NV_RIGHT - set when the robot should move forward or backwards
to the right side
NV_TURRET_RIGHT - set when the robot should move the turret (with an
attached camera) to the right ("Delete" key in
Nova gate mode)
NV_FIRE - reserved signal (however it can be activated if you
press the "End" key in Nova gate mode). If the "End"
key is pressed in "Marker mode" it will set
NV_TURRET_BALANCE to zero (turns the camera to face
the front).
NV_TURRET_LEFT - set when the robot should move the turret to the left
side ("Page down" key in Nova gate mode)
NV_TURRET_BALANCE - indicates the turn degree amount. This value range
from -100 to 100 with forward being zero.
NV_OBJECTS_TOTAL - total number of recognized objects
NV_ARR_OBJ_IDX - index (identifier) of object
NV_ARR_OBJ_RECT_X - left-top corner X coordinate of recognized object
NV_ARR_OBJ_RECT_Y - left-top corner Y coordinate of recognized object
NV_ARR_OBJ_RECT_W - width of recognized object
NV_ARR_OBJ_RECT_H - height of recognized object
NV_ARR_OBJ_SIM - similarity rate (0...1) of recognized object
NV_ARR_OBJ_CORNER - left-top corner coordinate of recognized object. This
variable contains both the x and y value. (X,Y)
NV_ARR_OBJ_RECT - the rectangle coordinates of the recognized object
consisting of 8 numbers comma
seperated. (X1,Y1,X2,Y2,X3,Y3,X4,Y4).
NV_IN_WAY_NUMBER - the curernt route number (from 1 to 7)
NV_IN_SUBMIT_WAY - submitting of route number (value should be
set 0 -> 1 for action)
NV_IN_CHECKPOINT - the current setting of checkpoint in Nova gate
mode. It also needs to set 0 -> 1 for action.
NV_GATE_HORIZON - indication of gate horizone (float from -1 to 1) which
shows the direction to adjust the robot's
motion (0 - no adjustment)
NV_CHECKPOINT_NOW - indicates the checkpoint number when the robot arrives
at the end of the current route (1-7).
This variable is 0 if the checkpoint has not yet been
recognized.
NV_LOCATION_X - current location X coordinate;
NV_LOCATION_Y - current location Y coordinate;
NV_LOCATION_ANGLE - horizontal angle of robot in current location (in
radians).
NV_IN_TRG_POS_X - target position X coordinate of the navigation map
NV_IN_TRG_POS_Y - target position Y coordinate of the navigation map
NV_IN_SUBMIT_POS - submitting of target position (value should be
set 0 -> 1 for action).
NV_IN_SET_MODE - the current setting of module's mode:
0 - Object recognition
1 - Navigate mode
2 - Nova gate mode
3 - Marker mode
4 - Navigate by map
- Additional control variables for Lego NXT (scaled to 255) -
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
Recommended use of control variables
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).
Note that the commands NV_LEFT and NV_RIGHT should be interpreted along with the commands
NV_FORWARD and NV_BACKWARDS.
Click Here to load a robofile that shows the object variables.
Click Here to load a robofile that shows the control variables.
For more information
AVM Navigator Technical Overview
| AVM_Navigator Related Forum Posts | Last post | Posts | Views |
Now AVM is working faster
Now AVM is working appreciably faster after recent algorithm update. It showed real-time action in "Object recognition" mode (... |
Yesterday |
81 |
658 |
AVM
Hi,
Can I get some detail literature on Associative video memory technology which is based on multi... |
5 days |
5 |
430 |
x and y coordinates
Hi there,
1. Why the total number of path on navigate mode is limited to 7 ?
2. Can file... |
1 month |
4 |
135 |
AVM Navigator variables
Hi everyone, i am having a little trouble interfacing the avm module with my robot, my problem is as follows, in the module for... |
2 months |
7 |
204 |
Clarrify licence ( 1st january 2012)
Hi steven, why is stated the purchased licenced till 1st january. So if we bought now is that the actual duration. Please advise... |
2 months |
5 |
207 |
Interfacing problem
Hi guys i am very new to this.I have created a robot using atmega and i ve programmed it using avr studio it is contolled by the... |
2 months |
2 |
214 |
AVM Navigator & Parallax Control
I am having touble using the Navigate mode to move my vehicle with a fixed camera to follow the learned object via the Parallax... |
2 months |
4 |
297 |
Using AVM to go to a location, perform a task, then go to another
I am in the process of incorporating the AVM module in my application and have reached one of those "I really don't know how t... |
3 months |
2 |
235 |
AVM Navigator variables
Im not able to find the email adress of the AVM Navigator creator, so i will adress my question here.
I would like... |
3 months |
22 |
2212 |
AVM Map dont work
Hello,
I've tried just the avm navigator. I realized that the rotary movement is detected correct... |
4 months |
38 |
691 |
AVM Navigator
Hi,
I am using the AVM_Navigator plugin for human eye tracking in my academic project. Upon eye obj... |
6 months |
5 |
649 |
AVM Navigator Trained object file location
Hello there,
I'm wanting to delete some of my trained objects. where would I find the t... |
9 months |
2 |
659 |
AVM
HI there its me CJ
i was wondering i want to buy the AVM plugin but i have question can the AVM plu... |
10 months |
3 |
607 |
AVR Navigator
Does the body inertia setting of the AVM Navigator module ramp the movement variables up and down? I'm worried that giving a si... |
1 month |
8 |
1141 |
|