Welcome to an open-source repository that contains materials and exercises needed to learn the essential robotics skills using ROS 2.
This material is implemented for the 2024 iteration of the Master's level "Robotics & XR" course taught by Dr. Ilkka Jormanainen at the University of Eastern Finland, in collaboration with Henki Robotics.
This course is designed to give you hands-on experience with the basics of robotics using ROS 2 and Gazebo simulation. The exercises focus on the Andino robot from Ekumen and are structured to gradually introduce you to ROS 2 and Docker.
No prior experience with ROS 2 or Docker is needed, and since everything runs through Docker, you won’t need to install ROS 2 on your system beforehand. Along the way, you’ll learn essential concepts like autonomous navigation and mapping for mobile robots. All the practical coding exercises are done in Python.
This repository contains a set of exercises to learn the core concepts taught over the course through practical demos and coding exercises. Start from the exercises "0 - Setup" and follow the exercises one by one to learn the basics of robotics and ROS 2!
- Setup
- Setup the exercises
- Run the Gazebo simulation
- Learn to use Docker
- ROS 2 Introduction
- ROS 2 introduction
- Gazebo and Rviz
- ROS 2 topics; publish and subscribe
- Transformations and tf-frames
- SLAM and Navigation Demo
- Create a map using slam-toolbox
- Navigate autonomously using Nav2
- ROS 2 services
- Create your first ROS 2 package
- ROS 2 packages - how to create your own package
- Building and sourcing
- ROS 2 Nodes
- Robot Odometry
- Calculate and publish your robot's odometry using wheel velocities
- Robot odometry and how to calculate it
- Publish and subscribe to topics from Python code
- Path Planning
- Basic navigation concepts
- Modify Nav2 parameters
- Custom path planning using Nav2
These slides accompany the practical exercises included in this repository and are meant to be covered at the same time.
- Theme 1: Robotics in society
- Theme 2: Robotics applications
- Theme 3: Robot control theory
- Theme 4: Navigation
- Theme 5: Robotics & AI
- Theme 6: XR applications in Robotics
Did you encounter a problem during your exercises, or did you find a mistake? Report issues in the "Issues" section in GitHub, and we will help you.
If you've found a fix to an existing issue, you can open a new Pull Request to fix it and contribute to this course. We highly appreciate all the contributions!