MPC path planning and obstacle avoidance for an autonomous vehicle, part of the final project for the course titled ESE680-007: Autonomous Racing, taken during fall 2019 at the University of Pennsylvania.
- Install Google cartographer for building the map of the desired racetrack: https://github.com/googlecartographer
- Install the particle filter used for localization: https://github.com/mit-racecar/particle_filter
- Install the racecar simulator from the course's repo: https://github.com/mlab-upenn/f110-fall2019-skeletons
- Generate waypoints using wapoint logger: https://github.com/mlab-upenn/f110-fall2019-skeletons
- Generate the yaml and pgm files for the racetrack map using google cartographer. Save and update the files appropriately inside the particle filter folders. Alternatively, use the default maps inside "map" folder.
- Generate desired waypoints using the waypoint_logger.py file from Dependencies(3). Save the waypoint file inside the waypoint_CSVs folder of this repo. Alternatively, use the default waypoints inside "waypoint_CSVs" folder.
- Update the parameter file called "mpc_planning_params" inside this repo to the correct file address of the desired waypoint file.
- Update the drive and lidar topics appropriately.
- Optional - update the map files in the racecar simulator to test the MPC capabilities on the simulator.
Note: We use CVXGEN for MPC optimization, and is used under an academic license.
- Launch the particle filter
roslaunch particle_filter localize.launch
- Localize the vehicle on the RVIZ GUI
rosrun rviz rviz
- Launch the MPC package
roslaunch mpc_auto mpc_auto.launch
Static obstacle avoidance in action, with a nominal velocity of 6 m/s:
Static obstacle avoidance with a nominal velocity of 4m/s:
For questions and queries email me at [email protected]