The MRSD Software Bootcamp aims to equip incoming MRSD students (and other aspiring robotics engineers) with the software skills needed to initiate and complete a robotics project from start to finish.
Much of this Bootcamp is based on F1Tenth (now RoboRacer
), sourced from courses taught at UPenn by Dr. Rahul Mangharam and CMU by Dr. John Dolan.
Students will learn how to setup development environments (Git, Docker, simulation, etc.), implement various algorithms for the F1Tenth vehicle, incorporate multiple modules into a single system for the vehicle, and test their algorithms in the F1Tenth-Gym-ROS
simulation.
This Bootcamp utilizes both Python and C++ to emphasize that the underlying programming concepts remain consistent regardless of the language used. While some sections are written in Python and others in C++, the idea is that if you're comfortable in one, you can apply the same principles in the other.
Note that while the Bootcamp doesn't dive deeply into programming techniques, Section 1(D) does provide additional resources for those needing further guidance.
Note that some parts of this Bootcamp will lead you directly to external links.
This course is designed as a self-paced, self-guided course. Some sections are accompanied by a set of exercises that you can complete to test your knowledge. Each topic aims to explain the foundational concepts and practical usage of a particular tool or platform and provide you with the resources you need to learn more. While you can find below a recommended order of topics, you are free to explore the topics in any order you wish, following external and internal hyperlinks as you see fit.
Moreover, users are recommended to go over the RoboticsKnowledgebase for additional resources that complement this Bootcamp. The RoboticsKnowledgebase contains not only basic knowledge related to software skills needed for robotics but also robotics-project-specific knowledge that starting engineers and students might find useful.
* If you want to get some hands-on experience with introductory material on reinforcement learning, go to RL Car Racing!
-
Basics
If you are new to software development, start here. It covers a lot of the necessary concepts and skills that are required for software development.
- Linux Basics
- Version Control and Collaborating through GitHub
- Basic Programming
- Code Editors and Custom Workspace for Programming
- ROS/ROS2 Basics
Please note that the latter part of the Bootcamp utilizes ROS 2 for `F1Tenth`. Furthermore, ROS2 is the preferred ROS version in most of industry and research nowadays. Thus, while some part of the Bootcamp talks about ROS, ❗please only install ROS2, specifically ROS-Foxy, for the Bootcamp. For ROS-Foxy, you need Ubuntu 20.04, otherwise, please use Docker containers❗ The topics in section "Basics" that contain "ROS" instead of "ROS2" are for ROS1. We are keeping those as reference for users who want to use ROS1 for their projects.
-
Practical Math Tools in Python for Robotics & System Dynamics
You’ll need a working knowledge of key mathematical tools to implement and debug the algorithms that make robots move, perceive, and plan. The goal of Section 2(A) is not to teach an entire math curriculum, but to equip you with just enough theory — and the right Python libraries — to tackle the coding exercises with confidence. In Section 2(B), we will get into the details of F1Tenth vehicle states & dynamics so that you can implement the algorithms in Section 4.
- Math tools you’ll lean on every day
- Robot dynamics (for F1Tenth)
-
Simulation Basics with
F1Tenth-Gym-ROS
- Simulation Basics
F1Tenth-Gym-ROS
- Setting up the
F1Tenth-Gym-ROS
environment with ROS2 F1Tenth-Gym-ROS
exercise 1: Automatic Emergency BrakingF1Tenth-Gym-ROS
exercise 2: Wall FollowingF1Tenth-Gym-ROS
exercise 3: Gap Following- Custom robot and simulation development in Gazebo
- (still in development)
- (still in development)
-
Algorithms
Sections i, ii, iii, and iv are for F1Tenth. You can use either Python or C++ for these exercises. Python skeleton code is provided in
/scripts
directory and C++ is provided in/src
directory, in each algorithm package.- Mapping algorithms
- Localization algorithms
- Control algorithms
- Motion planning algorithms
- Reinforcement Learning
- Model-based RL (still in development)
- Model-free RL
RL Car Racing is an independent course for an introduction to common reinforcement methods (RL) leveraging Gymnasium (formerly OpenAI Gym), developed by Alec Trela.
If you find a typo or error in the course material, please submit a pull request to the GitHub repository. If you have a suggestion for a new topic, please open an issue on the repository.