Week 1-2: Introduction to ROS2
This is how far we will get by the end of this course:
In the first half of the course we’ll learn how to simulate mobile robots, sensors, actuators. How to do mapping localization and navigation.

In the second half of the course we’ll learn about the simulation of robotic arms with direct and inverse kinematics.


Here you can see a short video about the final projects from the previous years:

Requirements for completing the course:
Detailed description and requirements of the final project can be found on this link.
Short summary:
Registration deadline for projects: week 4
Submission deadline: week 14
- Project teams should consist of 3, maximum 4 members.
- The project submission will take place live (on Teams) in 15+5 minutes
- The project documentation should be in Markdown format on GitHub (no PPT required!)
Available real robots at the department:

Table of Contents
- What is ROS(2)?
- Required softwares
-
Basics of ROS2
3.1. Running some examples
3.2. Create a colcon workspace
3.3. Let’s write the simplest possible hello_world
in python
3.4. Create a python publisher
3.5. Create a C++ publisher
3.6. Create a python subscriber
3.7. Create a C++ subscriber
3.8. Launchfiles
3.9. Remap
-
Parameters
4.1. Set the parameter from a launchfile
4.2. A more advanced example for setting parameters
-
Services
5.1. Service server
5.2. Service client
5.3. Use services and parameters with turtlesim
-
Recap
6.1. Useful Linux commands
6.2. Useful ROS2 commands
What is ROS(2)?
ROS, or Robot Operating System, is an open-source framework designed to facilitate the development of robotic applications. It provides a collection of tools, libraries, and conventions that simplify the process of designing complex robot behaviors across a wide variety of robotic platforms.
ROS was initially developed in 2007 by the Stanford Artificial Intelligence Laboratory and continued by Willow Garage, with the goal of providing a common platform for research and development in robotics. The primary motivation was to create a standard framework that could support a broad range of robotic applications, promote code reuse, and foster collaboration within the robotics community.
Key reasons for ROS development include:
-
Standardization: Creating a common platform that simplifies the integration of different hardware and software components.
-
Modularity: Enabling the development of modular and reusable software components (nodes) that can be easily shared and adapted for various robotic systems.
-
Community Collaboration: Encouraging collaboration among researchers and developers, resulting in a vast collection of tools and libraries.
Transition to ROS 2
ROS 2 was developed to address the limitations of ROS 1 and meet the growing demands for industrial and commercial robotics applications. The development began around 2014 and aimed to enhance the capabilities of ROS, particularly in areas such as security, real-time performance, and support for multi-robot systems. In practice, the biggest difference is in the underlying middleware, ROS1 uses a custom transport layer and message-passing system that was not designed for real-time or distributed applications (see ROS1’s roscore
).
The latest ROS1 release is ROS Noetic which was intended to be used on Ubuntu 20.04. It goes to EOL in May, 2025 together with Ubuntu 20.04.
Required softwares
Ubuntu 24.04 LTS
In the course we'll use ROS2 [Jazzy Jalisco](https://docs.ros.org/en/jazzy/index.html), which requires Ubuntu 24.04 for the smoothest operation.
File truncated at 100 lines [see the full file](https://github.com/mogi-ros/week-1-2-introduction-to-ros2/tree/main/README.md)