RoboNav

RoboNav is an Android application for visual navigation of mobile robots (OpenCV + BlueTerm)

Notes:

Active buttons (corners) on screen (in landscape orientation):

RoboNav screenshot (example)
RoboNav screenshot (example)
Search mode is 3 (RoboTour). Debug is off. Input mode is 0 (run). Voice output is muted. Blue dots and lines are part of the map. Green dots in the map are defined waypoints. Orange line is an actual section of the defined path. Grey outlined orange dot is an actual (next) waypoint. Red line is an actual azimuth (course). Red contour indicates detected road. Sloping blue line indicates navigation recommendation (turn left). Big blue circle is the sign of the actual command (left). Smaller blue circle (near the center) is the centroid of the detected road. Top red point indicates a top point of the detected road. Yellow numbers at top center shows an actual time and configured start time (in brackets). Yellow and violet numbers and characters at bottom center shows current state information (parameters, angles, mode, command).

Supported serial/bluetooth commands for robot:

Required map format (for RoboNavMap.txt) [example]:
0 49.3092137 14.1513494 0
1 49.309096 14.1504934 0
2 49.309726 14.1484146 0
3 49.3096508 14.1486873 0
4 49.3095187 14.1490986 0
0 1
0 2
2 3
3 4
(first few linas are in format "id latitude longitude 0" => nodes)
(last/shorter lines are in format "id1 id2" => edges)

Default serial/bluetooth telemetry from robot (about once per second):
-------------------------------------------------------------------------
          111111111122222222223333333333444444444455555555556666666666777
0123456789012345678901234567890123456789012345678901234567890123456789012
   cyc hea tgt  set dir rng dst spd ams      lat      lon lef rig bck pwm
-------------------------------------------------------------------------
cyc:  0 -  5 (cycles) [not used/recognized]
hea:  7 -  9 (heading: 0 - 359) [used in the algorithm] (if available)
tgt: 11 - 14 (steer target: -99 - +99) or desired heading [not used/recognized]
set: 16 - 18 (desired run direction: -1/0/1) or PWM [not used/recognized]
dir: 20 - 22 (actual run direction: -1/0/1) [not used/recognized]
rng: 24 - 26 (forward sonar range: 0 - 50) [dm] [used in the algorithm] (if available)
dst: 28 - 30 (total distance) [m] [used in the algorithm] (if available)
spd: 32 - 34 (actual speed) [cm/s] [used in the algorithm]
ams: 36 - 38 (avoiding/mode/odoState) or homolog/power/aux [not used/recognized]
lat: 40 - 47 (GPS lattitude: 48.00000 - 52.00000) [used in the algorithm] (if available)
lon: 49 - 56 (GPS longitude: 13.00000 - 15.00000) [used in the algorithm] (if available)
lef: 58 - 60 (left sonar range: 0 - 50) [dm] [used in the algorithm] (if available)
rig: 62 - 64 (right sonar range: 0 - 50) [dm] [used in the algorithm] (if available)
bck: 66 - 68 (back IR range: 0 - 255) [cm] [used in the algorithm] (if available)
pwm: 70 - 72 (driving PWM: 0 - 255) [not used/recognized]

You can define your own telemetry table in the RoboNavRobots.txt:
BTaddress1;robotName1;commandsTable1;telemetryTable1;
BTaddress2;robotName2;commandsTable2;telemetryTable2;

Default commandTable:
lrswfbhkptn
(extraLeft extraRight stop straight forward back left right payloadDrop turn newAzimuth)

Default telemetryTable:
   ... hhh ...  ... ... fff ddd sss ... aaaaaaaa oooooooo lll rrr bbb www

Recognized characters:
space or .=anything, h=heading, d=distance, s=speed, a=lattitude, o=longitude, 
f=frontObstacleRange, l=leftObstacleRange, r=rightObstacleRange,
b=backObstacleRange, p=payload, w=pwm

To-do:

Changelog:

Author: Ales Holub (aholub@centrum.cz)