
Explore ROS2 in C++ with a beginner-friendly curriculum that uses four learning mediums, project walkthroughs, and runs across operating systems including virtual machines.
Let's take a look at what features the Robot Operating System (ROS) version 2 (ROS2) has to offer us as robotics developers
Installing a Ubuntu Virtual Machine can be an incredibly helpful tool so you can easily learn the ROS features while still having full access to your Windows computer. So let's use VMWare to run a Ubuntu 22.04 operating system on our Windows system.
For MacOS users, I highly suggest installing VirtualBox so that you can utilize a Ubuntu 22.04 Virtual Machine to try out your ROS2 programming in an isolated environment, while still having access to your main MacOS computer.
In this lecture we will go through how to install the ROS2 Humble distribution on an Ubuntu 22.04 machine.
In this lecture we will be installing are Visual Studio Code editor along with some extensions which help us with programming our ROS2 Nodes in C++. Feel free to use you preferred code editor, but this will be the code editor I will be using throughout the course.
Explore the ROS2 framework features for robotics software, including the data distribution service, topics, messages, and communication via publishers, subscribers, services, actions, and parameters.
In order to develop our custom ROS2 packages, we must first set up our development workspace which we will be compiling our code. Here you will see how to set up your project so we can use the colcon build tool to compile our code we will be creating in the upcoming lectures.
Learn to use the ROS logging system in C++ to print to the terminal and persist logs at info, warning, error, and debugging levels in files.
Explore ros interface types and how to use standard and sensor messages in ROS2 C++, import diverse message types for publishers and subscribers, and view available interfaces.
Create two ros 2 c++ nodes: a rpm publisher on topic rpm and a speed calculator subscriber that computes speed from rpm and wheel radius, publishing on topic speed.
master ros2 parameters as dynamic variables to configure node behavior, declare and load rpm val parameter, and use ros2 param set and get for runtime updates, including sim time.
Create a Python ROS 2 launch file to start the RPM publisher and speed calculator nodes, configure wheel radius as a parameter, and echo the speed topic in one command.
In this project we will implement ROS Services in a realistic robotics application, in which we want to request images from our robot only at particular locations. In this walkthrough I will briefly cover the OpenCV library, which is used to help with Computer Vision applications and image processing.
Discover tools beyond coding in ROS, focusing on supplemental features to interact with data, using visualization tools for simulation development, and previewing advanced functionalities later in the course.
Learn to locate and install USB cam package with ROS index, install via apt, or build from source, and run a demo launch to stream the camera image over ROS.
Explore Ignition Gazebo, install and launch the simulator, run example worlds, bridge Ignition topics to ROS, visualize the LIDAR and camera data, and create simple SDF models and ground planes.
Launch a wheeled robot simulation in ros2 with ignition gazebo, build a launch file to start the simulation and ignition parameter bridge, and manage remappings and environment variables.
Explore Ignition Gazebo as a ROS-friendly simulation option alongside Gazebo Classic, and see how Move It enables motion planning, inverse kinematics, 3D perception, and AI-focused tools like Isaac Sim.
See how you can communicate with different robotic systems on the same network. In this lecture we will see how you can use Domain ID's to help multiple robots communicate with each other, or keep similar ROS Nodes separate on the same network.
Learn how to build ROS 2 Humble from source on Ubuntu 22.04, including locale setup, repository configuration, downloading the source from GitHub, installing dependencies, and performing a full build.
Bridge ROS 1 and ROS 2 nodes with the ROS bridge to enable cross-version communication. Learn to install, build, and test the bridge with talker and listener examples across devices.
Congratulations on completing the ROS 2 C++ robotics developer course. Learn to use ROS 2 in your C++ code with simulation and visualization tools for production-ready robotics projects.
Learn how to use the Robot Operating System (ROS) version 2 platform (ROS2) which is used to program real world robotics.
From Industrial Robots, to Autonomous Cars, to Research & Development systems; ROS is the back-bone of a wide variety of automated systems.
The course is designed for beginners with little, to no experience using ROS2. The coding in this course is done in C++ using ROS2 Humble. We will go over installation of ROS2, how to develop code that uses the framework, and even go over simulation tools so you can make your own robot and control it in simulation, with code that can easily be ported to a real robotic system.
This course is also well suited towards developers who utilized the previous ROS version, and want to learn how to use the newly reworked ROS2 API. It is also worth noting unlike ROS1, ROS2 has cross-platform support which allows it to be used on Ubuntu, Windows 10, and some versions of MacOS. ROS2 also allows for compatibility with ROS1 systems, so you can integrate your new ROS2 projects with your previous ROS1 systems.
Course Outline:
The course is broken into 7 main sections:
Course Introduction
Environment Setup
ROS2 Overview
Using ROS2 in C++
Additional ROS2 Tools
Robotics Simulation
Advanced Features In ROS2
Section 1 is a general introduction to the course.
In section 2 you will learn how to setup your computer to be able to run ROS 2. This includes utilizing the Ubuntu operating system, installing ROS 2, and introducing you to the code editors we will be using in this course.
In section 3 I will teach you at a high level what "tools" are included in the ROS 2 framework, and what each of them do.
You will spend the majority of this course in section 4, learning how to implement all the various ROS2 tools in your very own C++ code.
Section 5 will look at some tools which ROS2 provides outside of the coding environment.
Section 6 will touch on using the simulation and sensor data visualization tools ROS 2 has to offer.
Section 6 will go over advanced features of ROS 2. This will cover building ROS 2 from source in order to utilize tools such as SROS, which allows you to secure your topic data, as well as utilizing the ROS 2 bridge which lets you communicate with ROS 1 Nodes.
We will also be working with the famous OpenCV library to work with image data coming from our robot's camera.
So what are you waiting for? Let's get to programming, using the new and improved version of the most widely used open source robotics platform: ROS version 2.