Mobile Robot
Experimental Robotics - CS/EE/ME 129
I built a mobile, line and wall following robot as part of the CS/EE/ME 129 course at Caltech. The hardware includes three IR sensors for line following, end of road and intersection detection behaviors, a magnetometer board to measure the orientation of the robot and three ultrasonic sensors to detect blockages in front and at the sides of the robot.
For the robot’s software, I wrote the autonomous navigation algorithms, UI and mapping. At every intersection, there are eight possible headings for the robot to explore. Each heading (streets) is denoted by the following status colored on the map shown in the video below:
- Black: existence of the street is unknown
- Blue: street exists but is unexplored
- Green: street is fully explored (connect to another intersection)
- Red: street has a dead end
I implemented Dijkstra’s algorithm to find the optimal path to a goal node set by the user. If the node is not on the current map, I implemented Dijkstra to the nearest nodes with unexplored headings while also exploring the map in the direction of the goal. Blockages are denoted by a red X on the map in the video below. The robot is able to replan around static blockages along with perform a panic u-turn on moving blockages.
Below is a demonstration of the robot where we run directed explore to some goal node.