ROS 2 & Robot Middleware
Build industrial-grade robotics software using Robot Operating System 2 (ROS 2). Learn pub/sub architecture, client/service nodes, action servers, robot modeling with URDF/Xacro, TF2 coordinate transforms, and Gazebo simulations.
All Guides in ROS 2 & Robot Middleware
ROS 2 Humble Architecture: Nodes, Topics & DDS Explained
Master modern ROS 2 Humble/Iron architecture: Data Distribution Service (DDS), computational graph, publishers, subscribers, parameters, and Quality of Service (QoS).
ROS 2 eliminates the single point of failure (ROS Master) by leveraging industry-standard DDS decentralized discovery.
ROS 2 Custom Interfaces: Messages, Services & Actions
Create custom .msg, .srv, and .action definitions in a standalone CMake package, generate C++ and Python headers, and implement preemptible Action Servers.
Topics = Continuous stream (unidirectional); Services = Fast request/response (synchronous blocking); Actions = Long-running tasks with feedback and preemption.
URDF & Xacro Robot Modeling: Links, Joints, Visual & Physics
Build modular, maintainable Unified Robot Description Format (URDF) models using Xacro macros, calculate correct 3D inertial tensors, and visualize in RViz 2.
Never write raw repetitive URDF—use Xacro macros to parameterize wheel diameters, mass properties, and colors.
TF2 Coordinate Transform Library: Broadcast, Buffer & Lookups
Master coordinate frame transformations in ROS 2: broadcast static/dynamic transforms, handle time-travel buffer lookups, and prevent TF extrapolation errors.
REP 105 specifies: `map` (global continuous, discrete jumps by SLAM) -> `odom` (local continuous, drifts) -> `base_link` (robot center) -> sensors.
Modern ROS 2 Python Launch Files & Composable Nodes
Orchestrate multi-node robotics systems with Python launch files, DeclareLaunchArgument, conditions, event handlers, and intra-process zero-copy composable containers.
ROS 2 launch files are written in pure Python, enabling dynamic argument parsing, conditionals, and environment checks.
ros2_control Framework: Hardware Interfaces & Differential Controllers
Bridge physical hardware motors to ROS 2 using the standardized ros2_control framework, SystemInterface plugins, and diff_drive_controller.
ros2_control abstracts physical hardware away from high-level software, enabling seamless switching between Gazebo simulation and real robot hardware.
Gazebo Simulation (Fortress / Harmonic) with ROS 2 Bridge
Simulate mobile robots and manipulators in Gazebo: configure physics engines, add realistic IMU/LiDAR/Camera sensor plugins, and establish ros_gz_bridge.
New Gazebo (formerly Ignition) features modular architecture, multiple physics backends (DART, Bullet), and rendering via Ogre 2.
MoveIt 2 Trajectory Planning & Collision Avoidance for Manipulators
Configure MoveIt 2 for 6-DOF robotic arms: Setup Assistant, OMPL path planners (RRT-Connect), OctoMap 3D collision environments, and pick-and-place execution.
MoveIt 2 coordinates kinematics solvers (KDL/TRAC-IK), trajectory planners (OMPL), and collision checkers (FCL).