Autonomous navigation
The navigation software is implemented as a Finite State Machine (please refer to the next figure).
The FSM has four states:
- START - initial state
- FREE_NAVIGATION - no obstacle or obstacle is far away
- AVOID_OBSTACLE - obstacle is close, maneuver to avoid
- STOP - no possible maneuver to avoid obstacles, stop robot
The robot reads the front and rear sensor in a loop (e.g. every 200ms). Based on the distance to obstacles the following events can be generated: no_obstacle, obstacle_detect, stop_robot.
Currently FREE_NAVIGATION is implemented as a straight forward drive (no steering). In the future some random walk algorithm can be used.
At present AVOID_OBSTACLE is implemented as follows: steer right and slowly advance forward. If no obstacle is detected during avoidance maneuver, stop steering, generate a no_obstacle event and enter FREE_NAVIGATION state. If during steering and forward moving the robot approaches an obstacle at very close range the robot stops and enters backward movement for 3 seconds or until a rear obstacle is in range. After that the robot enters either FREE_NAVIGATION or starts the AVOID_OBSTACLE sequence from the beginning.
The following movie shows the robot operating outdoors (basketball court).
...TO BE UPDATED WITH BETTER QUALITY MOVIE
Last blog coming: Connectors review.