Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Choose Your Entry

This book is organized around what you are trying to do with nano-ros, not around who you are. Pick the purpose closest to yours. Each section lists the pages to read, in order.

Everyone: your first project

Every purpose starts the same way:

  1. Install the nros CLI.

  2. First Project scaffolds a talker for a Cortex-M3 board, runs it in QEMU and shows its messages in ROS 2:

    nros setup mps2-an385-baremetal --rmw zenoh
    nros new sensor_ws --board mps2-an385-baremetal --template talker
    cd sensor_ws
    nros run sensor_node
    

    No QEMU or ROS 2? The same chapter runs it on your Linux host.

  3. Anatomy of What You Just Built explains the workspace in nano-ros’s own terms. You do not need to open the bringup package before you have seen it run.

New to ROS entirely? Two ideas carry the whole book. A node is a unit that computes, and nodes talk through named topics (publish/subscribe) and request/reply services. An RMW (“ROS MiddleWare”) backend is the transport that moves the bytes. nano-ros is a small implementation of that model for microcontrollers.

If anything goes wrong in the first steps, see Troubleshooting — First 10 Minutes.

Industrial: reproducible, auditable, offline

You build products where safety and robustness matter. You need the same inputs to give the same image, every fact on a page, and an install that runs with no network.

Field solutions: a working system per customer

You build a system for each customer, often on a board you were handed, and you need it publishing data that a ROS 2 system can see, quickly.

  1. Your first project (above), on the host.
  2. Your board. Find it in Supported Boards; its evidence page says where it runs and which chapter covers it. Then read your platform’s chapter (FreeRTOS, Zephyr, NuttX, ThreadX or bare-metal). Every embedded chapter has a QEMU flow that works without hardware.
  3. Run it on the target. The target model and nros run for a host process or an emulator.
  4. Talk to ROS 2. Choosing an RMW and ROS 2 Interoperability. Cyclone DDS talks to rmw_cyclonedds_cpp directly, with no router. Zenoh needs the ROS 2 router (rmw_zenoh_cpp) on the host.
  5. Grow the system. More nodes, parameters and images: Growing your workspace, and Mixed-language workspaces for other languages. Bridging several networks: Cross-backend Bridges.
  6. Coming from rclcpp or rclpy? Setup Compared to Standard ROS 2, Porting a ROS 2 C++ node, C / C++ multi-node workspaces and the Migration Guide.

Education: labs that fit a session

You teach a course or run a lab. Every seat needs the same result, the install must be short, and each lab must fit one session.

  1. Install once per seat: Installation. Nothing in the first project needs ROS 2, a router or hardware.
  2. The first lab is the first project (above), in C++ or, on the same page, in Rust. The output it prints is the result to check on every seat.
  3. Concepts for the lecture. Anatomy, Architecture Overview and Execution Model and Two-Layer API.
  4. Embedded labs without hardware. Each platform chapter runs its example under QEMU, for example FreeRTOS or bare-metal.
  5. Labs that talk to ROS 2. Choosing an RMW; Cyclone DDS needs no router, which keeps a lab machine simple.

Still not sure?

Read the Introduction for the one-page overview.

Design background