← Wiki

Ingredient

ROS 2

Also known as: Robot Operating System 2, ROS

Open-source middleware framework for robotics — not an operating system but a set of libraries, tools, and conventions that make it possible to compose a robot from many independent processes (nodes) communicating over a publish-subscribe message bus. The standard framework for non-trivial robotics work: every academic-and-research robot, most autonomous-rover projects, and the FarmBot research community use ROS or ROS 2. Ships with battle-tested packages for navigation (Nav2), perception (point-cloud processing, 3D mapping), control (MoveIt!), simulation (Gazebo), and visualization (RViz). Apache 2.0 licensed.

Inputs / outputs

  • Architecture: distributed nodes that publish/subscribe to typed topics, request/respond via services, and act as servers for actions
  • Transport: DDS (Data Distribution Service) — auto-discovery, QoS-configurable
  • Languages: C++, Python, with bindings for Rust, JavaScript
  • Run on: Linux (Ubuntu officially supported), macOS, Windows; Docker images available

Solves / unlocks

  • Composable robot architectures (perception, planning, control as separate nodes)
  • Pre-built navigation (Nav2 — global + local planners, recovery behaviors, costmaps)
  • Pre-built motion planning (MoveIt2 — kinematic-arm planning, collision detection)
  • Simulation-first development (Gazebo + ROS2 = test in sim, deploy to hardware)
  • Multi-robot coordination (DDS auto-discovery scales to fleets)
  • Sensor fusion (multiple LiDAR + cameras + IMU + GPS into a coherent estimate)

Constraints

  • Heavy — ROS2 is not for tiny hobbyist projects; an Arduino with three lines of code is faster to deploy than a ROS2 graph.
  • Learning curve — concepts of nodes, topics, parameters, lifecycle, QoS take time to internalize.
  • Real-time is hard — ROS2 supports real-time but the default DDS path is not RT-friendly; pair with a deterministic MCU below the ROS layer.
  • Versioning churn — Foxy, Humble, Iron, Jazzy, Kilted, Lyrical: each LTS is a 2-year cycle; pick the current LTS and stick with it.

Source

See also

Auto-generated from this entry’s typed relations: frontmatter, grouped by relation type so the editorial signal isn’t flattened.

  • Member of: [[ingredient]]
  • Combines with: [[raspberry-pi]] · [[nvidia-jetson]] · [[lidar-rangefinder]] · [[rgbd-camera]] · [[servo-motor]] · [[stepper-motor]] · [[acorn-rover]]

What links here, and how

Inbound connections from across the wiki, grouped by lens and by relationship. These appear automatically — every entity page declares what it links to, and that data populates here on the targets.

Practical

combines with

  • Acorn rover Acorn rover reference design is built on ROS2
  • BeagleBone Black ROS2 runs on Debian ARM; PRUs handle the deterministic motion layer below ROS
  • GPS-RTK ROS2 nmea_navsat_driver and ublox_gps packages publish to /fix; standard input to robot_localization EKF
  • IMU (MPU6050 / BNO085) ROS2 imu_tools package fuses IMU + GPS into pose estimation via robot_localization
  • LiDAR rangefinder ROS2 has drivers for every common LiDAR; standard input to Nav2 navigation stack
  • NVIDIA Jetson Jetson is the standard ROS2 perception-and-navigation node for hobbyist autonomous rovers
  • OpenCV cv_bridge converts between ROS2 image messages and OpenCV Mat objects
  • PX4 / ArduPilot autopilot MAVROS bridges PX4/ArduPilot to ROS2 for higher-level mission planning and computer-vision integration
  • Raspberry Pi ROS2 runs natively on Ubuntu ARM64; Pi 4/5 is the standard low-cost ROS2 control node
  • RGB-D camera ROS2 has mature drivers for RealSense, ZED, Astra; standard input to 3D perception nodes
  • Servo motor ROS2 servo controllers expose joint-position interfaces for arm-style robots
  • YOLO (object detection) ros2_yolo packages turn YOLO into a ROS2 perception node

contains

combines

14 inbound links · 8 outbound