A simulator I coded in MATLAB with help from graduate students at the University of Waterloo Robotics Team. The code simulates an autonomous rover modeled as a front-wheel steering car that drives along a race course.
My algorithm generates a set of possible paths, called “motion primitives,” that each correspond to a fixed steering angle (eg. full left, straight, full right). The paths are then scored based on factors such as steering angle, path length before obstacle collision (filtering out circular loops), distance to pylons, and straightness along the course.
The robot goes through the following actions at each time step:
- Simulate a laser scanner (LIDAR) to scan for pylons around the robot
- Construct a set of motion primitives corresponding to pre-defined steering angles.
- Use the heuristic to evaluate each path and choose the steering angle corresponding to the best path.
- Drive the robot at the new steering angle until the next time step and laser scan.