Skip to content

RoboticsKnowledgebase/mrsd-software-bootcamp

Repository files navigation

MRSD Software Bootcamp

About This Course

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.

How to Use This Course

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!

Recommended Order of Topics

  1. 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.

    1. Linux Basics
      1. Introduction
      2. Linux CLI Tools
      3. Docker
      4. Remote Access using SSH
      5. Job Control
    2. Version Control and Collaborating through GitHub
      1. Version control basics
      2. Git Basics
      3. GitHub Basics and Exercises
      4. Exercise: Pull & Request exercise
    3. Basic Programming
      1. Choosing a Programming Language for Robotics
      2. Online resources
      3. Writing Documentation in Markdown
    4. Code Editors and Custom Workspace for Programming
      1. What is VS Code and why use it?
      2. How to config your workspace in VS Code
      3. How to debug in VS Code
    5. ROS/ROS2 Basics
    6. 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.
      1. Introduction
      2. Getting Started with ROS/ROS2 for Robotics
      3. ROS2 with Docker
      4. ROS2 basics
      5. Exercise: Test your understanding for ROS2 [Required for Bootcamp]
      6. ROS Action Server (ROS1)
      7. Reading Sensor Data(ROS1)
      8. ROS and C++ Exercise: AI mechanics for controlling a game(ROS1)
  2. 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.
    1. Math tools you’ll lean on every day
      1. Linear Algebra and NumPy
      2. Calculus and SymPy
      3. Optimization and SciPy
    2. Robot dynamics (for F1Tenth)
      1. System Dynamics
      2. F1Tenth Vehicle States & Dynamics (single track model)
  3. Simulation Basics with F1Tenth-Gym-ROS

    1. Simulation Basics
    2. F1Tenth-Gym-ROS
      1. Setting up the F1Tenth-Gym-ROS environment with ROS2
      2. F1Tenth-Gym-ROS exercise 1: Automatic Emergency Braking
      3. F1Tenth-Gym-ROS exercise 2: Wall Following
      4. F1Tenth-Gym-ROS exercise 3: Gap Following
    3. Custom robot and simulation development in Gazebo
      1. (still in development)
      2. (still in development)
  4. 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.
    1. Mapping algorithms
      1. SLAM
    2. Localization algorithms
      1. Particle Filter: AMCL
    3. Control algorithms
      1. Pure Pursuit
      2. MPC (Model Predictive Control)
    4. Motion planning algorithms
      1. RRT (Rapidly Exploding Tree)
      2. RRT*
    5. Reinforcement Learning
      1. Model-based RL (still in development)
      2. 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.

Contributing

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.

About

Course content for MRSD software bootcamp

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •