About this ROS 2 workshop
Understanding how ROS2 works is becoming a MUST. ROS2 is expected to fully replace ROS1 by 2023. The Galactic distribution released in May 2021 shows ROS2 is very mature and ready for real-world applications.
In this five-day ROS2 training, learn how to program warehouse robots with ROS 2 Foxy & Galactic, including Navigation 2 and grasping with MoveIt2.
Participants will practice with robot simulations and then with real robots to test their programs live.
Connect to real indutrial robots remotely
Click & connect!
Using technology we have developed for our remote real robot labs, you can practice by remotely connecting to real warehouse robots from any location. At the end of the training, what you take away is not “paper” skills but real, practical experience that can be applied to your daily robotics development.
At a glance
- Basic Linux, Python, C++
- Knowledge of ROS1 (recommended but not required)
Who is this workshop for?
- ROS developers that want to transition to ROS2
- Researchers focusing their research on ROS2
- Engineers or CTOs who want to build scalable robotics products, faster.
- Companies that want to train engineers to use ROS 2
Theory and practice with robot simulations & real robots
9 AM - 4 PM PST
5 days of training in Pacific Standard Time Zone
Only 20 spots
For the full program experience
The enrollment window is now open for the November (Fall 2) session. This is the last class session of the 2021 calendar year.
- November 17: €2950 Regular Registration Deadline
- November 19: €3650 Late Registration Deadline
What you’ll learn
Creation of ROS2 Packages
Management of the new Colcon universal building system
Topic publishers and subscribers in ROS2 Python
Nodes management: life cycle, executors, and callback groups
Services and actions
Hybrid application with ROS1 and ROS2
Use of debugging tools in ROS2
ROS2 Path Planning
ROS2 + DDS
ROS2 Object Detection in Pick & Place Task
Create and configure a MoveIt2 package for a robotic arm
Perform ROS2 Motion Planning & Grasping
Real robots used
You will be using the following real robots throughout the training
Autonomous and collaborative mobile platform
RB-1 BASE can integrate a wide number of laser range finders with operation distances from 5 to 30-60 meters. RGBD sensors (Asus Xtion, Kinect One, etc.) can be mounted on the top of the platform for the detection of obstacles. The standard configuration integrates the UST-20LX sensor and the Orbbec Astra sensor.
The robot is able to detect obstacles in two different ways, by RGBD sensor installed and by the laser sensor that is used for navigation and positioning. In both cases, the robot can either stop or find an alternative route to avoid the obstacle and reach the next waypoint.
The software includes a control system, a tracking system laser-based, a navigation system and a user interface HMI (basic).
The location and navigation components are standard packages that are configured to suit the application. The software for the low-level control system is supplied with the platform.
As all Robotnik robots, RB-1 BASE is fully customizable and based on native ROS.
(More details: https://robotnik.eu/products/mobile-robots/rb-1-base-en/)
UR3e Robot Arm
A collaborative robotic arm with a gripper and a 3D sensor for perception. Students can use it to practice manipulation, object detection, pick & place objects, and more.
A Flexible Collaborative Robot Arm
The UR3e collaborative robot is a smaller collaborative table-top robot, perfect for light assembly tasks and automated workbench scenarios. The compact table-top cobot weighs only 24.3 lbs (11 kg), but has a payload of 6.6 lbs (3 kg), ±360-degree rotation on all wrist joints, and infinite rotation on the end joint.
RB-1 BASE Robot Simulation
MP-400 Robot Simulation
UR3e with Gripper Robot Simulation
Day 1 - ROS2 Fundamentals
ROS2 Basic Concepts:
- Learn how to work with ROS2 packages
- Create your first Hello World python ROS2 program
- Create your first Hello World ROS2 launch file
- Understand the setup.py file for source installation for ROS2 python based packages
- Understand how ROS2 nodes work.
- Use environmental ROS2 variables
- Learn about all the ROS2 Topic basic commands, like listing running topics and message types.
- Publish a ROS2 topic message through the command line
- Create a ROS2 topic publisher and ROS2 topic subscriber in python.
- Learn how to create a custom ROS2 topic and use it in a python script.
- Learn how to remap topics in ROS2 in a launch file.
- Learn about the problem of using multiple callbacks in the same python script.
- Learn how CallBack groups and multithreading can solve those issues.
- Create multiple publishers, subscriber python ROS2 script, that uses multithreading and callback groups to manage all the callbacks and threads to make the robot have updated values of the laser and odometry to decide how to avoid an obstacle.
Debugging ROS2 programs
- How to use and manage different levels of Debugging messages in ROS2 python scripts.
- Learn how to visualize Camera Images, Pointclouds, TFs, robot models, and other complex data in RVIZ2.
- Learn how to generate a PDF with the TF tree structure of the current ROS2 robot-description system.
- Learn about ROS2Doctor debugging tool command, and how it can help you detect unused topics, old packages, and other system data like the RMW MIDDLEWARE used Topics list, and network setup.
DAY 2: ADVANCED ROS2 BASICS
Understanding DDS in ROS2
- Learn about the reasons behind using DDS in ROS2 instead of the ROS1 TCP.
- Learn the basic morphology and features of the default RMW MIDDLEWARE DDS used CycloneDDS.
- Learn about the three supported DDS implementations in Galactic.
- Learn how to change the DDS used to then execute scripts using that DDS implementation.
- Learn about what is the ROS2 Daemon and what’s its relation with DDS.
- Learn about the need for Quality of Services (QoS) systems in ROS2.
- Learn how to start publishers and subscribers with different QoS and their compatibility.
- How to change QoS in ROSbags.
- How to change QoS setup in RVIZ2
- Learn about all the ROS2 Service basic commands, like listing running services and message types.
- Learn about the ROS2 services that can be synchronous or asynchronous.
- Create your first ROS2 service server and service clients.
- Create a custom Service message and use it in a python script to control the movement of the simulated Neobotix Mp-400.
- Learn about the new update in ROS2 having actions their own space.
- Learn about all the ROS2 Action basic commands, like listing running actions and message types.
- Create your first ROS2 action server and action clients.
- Create a custom Action message and use it in a python script to control the movement of the simulated Neobotix Mp-400
DAY 3: ROS2 NAVIGATION2
- How to configure and launch a full navigation stack in ROS2
- How to create a map of the environment using SLAM-Toolbox
- How to provide the map to other applications using a map server
- How to localize the robot using the AMCL particle filter
- How to plan paths from one location to another using the planner for differential robots
- How to make the robot follow a trajectory while avoiding obstacles using the controller
- How to configure the costmaps (global and local) for effective obstacle avoidance
- How to use Behavior Trees to control the navigation behavior of the robot
- How to manage recovery behaviors
- How to manage and synchronize the navigation nodes using the BT-Navigation-Manager
- How to programmatically send requests and goals to the navigation system from external nodes using Python3
DAY 4: PERCEPTION & START MANIPULATION
- Identify the position of the object to pick using a depth camera
- Provide the object location to the grasping algorithm
- Create a MoveIt2 package config specific to your robot
- Port a MoveIt1 package config to MoveIt2
DAY5: GRASPING USING MOVEIT2
- Arm Trajectory Planning using MoveIt2
- Open Motion Planning Library (OMPL) basic configuration
- Test different planning algorithms such as RRT* or PRM*
- Create programs to control a robot arm using the MoveIt2 C++ API
- Gripper control using the Gripper Command action server
- Bridge of action servers from ROS1 to ROS2 using the action_bridge node
- Full Pick & Place pipeline based on:
- Plan to the position of the object
- Approach the object
- Pick the object
- Lift the objet
- Plan to the release position
- Release the object
Meet your instructors
Head of Education @ The Construct | Creator of over 30 ROS courses | Author of ROS IN 5 DAYS book collection
CEO @ The Construct | Teacher of Robotics at La Salle University and Universitat Politècnica de Catalunya
Head of Research @ The Construct | Creator of over 10 ROS AI courses | Author of ROS IN 5 DAYS book collection
Robotics Engineer @ The Construct | Leader of RoBox - 24/7 Remote Real Robot Lab
Get recognized! Upon successful completion of this workshop, The Construct grants a certificate of completion to participants. This workshop is graded as a pass or fail; participants must receive 75% to pass and obtain the certificate of completion.
Thank you all for your outstanding effort, It was a great 5 days with A LOT of outcomes, thank you for bearing with me, I really appreciate your professionalism during this workshop.
Frequently Asked Questions
What is ROS2? Why ROS2?
ROS 2 (Robot Operating System 2) is an open source software development kit for robotics applications. The purpose of ROS 2 is to offer a standard software platform to developers across industries that will carry them from research and prototyping through to deployment and production. ROS 2 builds on the success of ROS 1, which is used today in myriad robotics applications around the world.
» Shorten time to market
ROS 2 provides the robotics tools, libraries, and capabilities that you need to develop your applications, allowing you to spend your time on the work that is important for your business. Because it is open source, you have the flexibility to decide where and how to use ROS 2, as well as the freedom to customize it for your needs.
» Designed for production
Drawing on a decade of experience in establishing ROS 1 as the de facto global standard for robotics R&D, ROS 2 was built from the ground up to be industry-grade and used in production, including high reliability and safety critical systems. Design choices, development practices, and project governance for ROS 2 are based on requirements from industry stakeholders.
ROS 2 is supported and tested on Linux, Windows, and macOS, allowing seamless development and deployment of on-robot autonomy, back-end management, and user interfaces. The tiered support model allows for ports to new platforms, such as real-time and embedded OSs, to be introduced and promoted as they gain interest and investment.
Like ROS 1 before it, ROS 2 is ready for use across a wide array of robotics applications, from indoor to outdoor, home to automotive, underwater to space, and consumer to industrial.
» No vendor lock-in
ROS 2 is built on an abstraction layer that insulates the robotics libraries and applications from the communication technologies. Below the abstraction are multiple implementations of the communications code, including both open source and proprietary solutions. Above the abstraction, core libraries and user applications are portable.
» Built on open standards
The default communications method in ROS 2 uses industry standards like IDL, DDS, and DDS-I RTPS, which are already widely deployed in a variety of industrial applications, from factories to aerospace.
» Permissive open source license
ROS 2 code is licensed under Apache 2.0 License, with ported ROS 1 code under the 3-clause (or “new”) BSD License. Both licenses allow permissive use of the software, without implications on the user’s intellectual property.
» Global community
Over 10+ years the ROS project has produced a vast ecosystem of software for robotics by nurturing a global community of hundreds of thousands of developers and users who contribute to and improve that software. ROS 2 is developed by and for that community, who will be its stewards into the future.
» Industry support
As demonstrated by the membership of the ROS 2 Technical Steering Committee, industry support for ROS 2 is strong. Companies large and small from around the world are committing their resources to making open source contributions to ROS 2, in addition to developing products on top.
» Interoperability with ROS 1
ROS 2 includes a bridge to ROS 1 that handles bidirectional communication between the two systems. If you have an existing ROS 1 application, you can start experimenting with ROS 2 via the bridge and port your application incrementally according to your requirements and available resources.
Do I need to install ROS in advance?
No. You only need to bring your laptop and don’t need to have ROS installed. You can use Windows, Linux or macOS.