ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A

Last call for registration: Get ROS2 Industrial Ready Online Workshop

Get ROS2 Industrial Ready Online Workshop

Learn ROS2 Basics + ROS2 Nav2 + ROS2 Perception + Manipulation with Movelt2


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.


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.


  • 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


  • 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 Mapping
  • ROS2 Localization
  • ROS2 Path Planning
  • ROS2 + DDS
  • ROS2 Perception
  • Create and configure a MoveIt2 package for a robotic arm
  • Perform ROS2 Motion Planning & Grasping



  • Basic Linux, Python, C++
  • Knowledge of ROS1 (recommended but not required)



You will use several robots in simulation and others in reality. This will allow you to see the flexibility of ROS2 with different robotic platforms.

  • 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 file for source installation for ROS2 python based packages
    • Understand how ROS2 nodes work.
    • Use environmental ROS2 variables
  • ROS2 Topics:

    • 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.
  • Managing Nodes:

    • 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
  • ROS2 Services

    • 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.
  • ROS2 Actions

    • 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

Day 5: Manipulation

  • 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


The Construct, in cooperation with Robotnik Automation .

:mechanical_arm: :on: :eye:Ready to use UR arm with ROS2 Perception - Exclusive content for ONLINE workshop only
We’ll perform object detection for a pick & place task on a real UR3e Robot Arm using ROS2 at the Get ROS2 Industrial Ready online workshop on Oct 25th (3)

On the fourth day of this workshop we will learn

  • 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