
ROS 2, the second version of the robot operating system, provides libraries and tools that connect sensors, motors, control systems, and navigation, enabling seamless robotic communication; it is open source.
Choose ros2 jazzy calico, lts, with eol in may 2029, offering stability as it matures since humble, while ros1 noetic ninja ends may 2025 and adoption of ros2 is encouraged.
Ros two provides a common framework for collaboration and code sharing among robotics developers, supporting robots of all sizes and boosting learning with a vast community, tutorials, tools, and libraries.
Discover how ros2 enables autonomous vehicles, drones, and industrial robots for mapping, navigation, sensor integration, and control across healthcare, agriculture, service, home, and space applications.
Explore how Ros and the nav2 stack accelerate mobile robot development with modular, plug-and-play components. Integrations with lidar, depth cameras, and protocols like can and ethercat enable flexible, cost-effective deployment.
Package your ros 2 code into a ros 2 package to enable easy sharing, reuse, and identification, containing source code, interfaces, launch files, configuration files, test files, and build information.
Understand ros2 workspaces as directories that store packages, including the installation workspace. Source installation and local workspaces to access ros2 commands for jazzy or humble distros.
Avoid nested packages and learn to mix build types, such as CMake and Python packages, within a single ROS workspace.
In ROS 2, a node is a fundamental unit that performs a modular task and communicates with other nodes to control the robot, exchanging data via topics, services, and actions.
Explore ros2 publish-subscribe by connecting publishers and subscribers through a topic. Publishers send location messages on a topic with a defined message format, while subscribers receive them, keeping system decoupled.
Use ros2 topics to publish data across network with no response expected. They handle time-updating information, logs or status, and location updates when robots move by distance.
Explore how ros2 supports zero or multiple publishers and subscribers per topic, including single publisher with multiple subscribers, as publishers publish regardless of subscribers and subscribers may wait for messages.
Explore ros2 service mechanism as a request-response interaction between a service client and server, using boolean pause and resume requests with a success response.
Learn that many clients can use the same service, but only one service server can provide that service.
Learn how ROS2 action mechanism enables long tasks by using an action client and an action server, exchanging goal, feedback, and result through topics and services.
Learn how ROS 2 actions use a single action server with multiple action clients, handling send goal, cancel goal, and get result, plus goal status and feedback topics.
Choose ROS2 action for long running tasks to monitor progress and cancel if needed, such as navigating a robot through waypoints with progress feedback.
Explore how ros2 interfaces define data structures for messages, services, and actions, and use default values and comments to clarify fields, quaternion identity rotation, and modes standby, eco, and power.
Explore how messages are defined in MSG files within a ros2 package and how a message interface structures data exchanged between nodes via the topic delivery route.
Explore a robot location message with x, y, and yaw (float32) in the world frame, using a publisher–subscriber animation to visualize message flow in ROS2.
Explore a ROS2 basics animation showing a battery message with voltage, temperature, current, capacity, and percentage published from a node to subscribers, and watch updates unfold in real time.
Demonstrates an input/output state message interface with four input pins and four output pins connected to LEDs, where a robot publishes pin status to ROS2 subscribers, illustrating message flow.
Explore how ROS2 services are defined in CSV files within a package’s SRV directory, using a triple dash to separate the request and the response in the service format.
Demonstrate a ROS2 basics service example that controls four output pins (leds) using a boolean value to set high or low, returning success and message.
Explore a ros 2 service example that uses a boolean pause flag to pause or resume a robot, with a boolean success response demonstrated by client and server animation.
Explore a ROS2 service that switches standby, eco, and power modes via a Uint8 request and a boolean success reply, demonstrated in an interactive animation.
Explore actions in ros2: learn where action files live in the action directory and how the action format separates goal, result, and feedback with triple dashes.
Explore a rotate action interface in ROS 2 concepts. Set a target yaw, send a goal, and receive feedback and a result message that indicate acceptance, progress, and completion.
Shows ros2 straight action: send a float32 target X, receive remaining distance as feedback and a string result, with the server accepting and moving the robot to success or failure.
Explore a ros2 action example that controls a mobile robot's top plate height with a Uint16 goal, max height checks, and Uint8 completion percentage feedback plus error codes and result.
Learn how ROS 2 parameters configure nodes at startup and runtime, using declared keys, values, and descriptors to enforce types and constraints for reliable operation.
Use ROS2 parameters to set up a node variable at startup or adjust it during runtime, with examples like map, location, camera, serial number, PID values, and speed.
Explain how processes use ROS2 parameter services to list, get, set, describe, and get parameter types for nodes. Demonstrate adjusting a robot speed with a slider and observing results.
Save parameter settings to a file and reload them later, and learn that a parameter's lifetime is tied to the node.
Learn how ros2 launch files manage complex node configurations with a single file. Write launch files in Python, XML, or YAML and run them with the ros2 launch command.
Explore when to use ROS 2 launch files to run multiple nodes, customize configurations and parameters, apply conditional logic, handle events, and manage node states and dynamic changes.
Learn how to start a launch file from within another launch file to create complex setups in ROS2.
In this course, you'll explore the core concepts of ROS2 using animations and practical examples. Designed for beginners with no prior knowledge, it avoids the confusion and time loss that often comes with jumping into coding too soon. By focusing on understanding the fundamentals without diving into coding, you'll gradually build your knowledge and enhance your reasoning and problem-solving skills. The course also prepares you for Robotics Developer interviews.
The course is structured in a step-by-step, concise manner, ensuring you learn everything in the right sequence. My teaching approach emphasizes getting straight to the point and providing practical examples, focusing on the essentials without unnecessary distractions. You’ll learn about the need for ROS2 and how to effectively choose between topics, services, and actions.
My hands-on experience with ROS2 includes developing an industrial robotics arm and an industrial mobile robot. This practical background informs my teaching style, and I aim to impart the same practical knowledge to you.
The main concepts you’ll see in this course :
ROS2 Introduction
What is ROS2?
Which ROS2 version should you use?
Why should you learn ROS2?
ROS2 Applications
ROS in industries
ROS2 Workspace
Installation Workspace
Local Workspace
ROS2 Packages
CMake (C++) Package
Python Package
ROS2 Nodes
ROS2 Internal API Architecture
ROS2 Topics
ROS2 Publish Subscribe mechanism
Multiple Publishers and Multiple Subscriber
ROS2 Services
ROS2 Service mechanism
Multiple Service Clients
ROS2 Actions
ROS2 Action mechanism
Multiple Action Clients
ROS2 Interfaces
Default and Constant values
Message
Service
Action
ROS2 Parameters
Interacting with parameters
ROS2 Launch Files
When should you use ROS2 Launch files?