Screenshots     Download     Pricing     Documentation     Tutorials     Resources     Contact     Forum     Search  

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


Robot Navigation [1]

Robot Navigation [2]

Follow Me

Walking from p2 to p1 and back

Walking from p1 to p0 and back

Orientation Based
on Beacons

Target Training

Quake 3 Odometry Test

Navigation by map

Visual Landmark Navigation

Visual Odometry

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 PostsLast postPostsViews
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

© 2005 - 2012 RoboRealm. All Rights Reserved. | Contact | Glossary | Privacy | Disclaimer | Link to Us | Resources | Site Map