Development Status

This is simple-ros, not the official ROS 2 project.

simple-ros is under active development. Not every tutorial on this site is runnable end-to-end yet. This page is the ground truth for what actually works today, kept current as new pieces land, so you don’t have to guess whether a stuck command is your mistake or a feature we haven’t built.

Area: ROS-framework | Content-type: reference | Experience: beginner

What works today

Topics, services, and parameters are fully implemented, on top of a working turtlesim (a real tkinter window) and the simple-ros2 command line tool. Concretely: nodes can publish and subscribe to topics, offer and call services, and declare/get/set parameters, all discovered peer-to-peer with no background daemon, exactly as described in the tutorials.

Platform support

Linux only, for now. macOS is untested but has no known blocker. Windows genuinely does not work: every node crashes on startup (the registry’s socket-path fallback calls os.getuid(), which doesn’t exist on Windows), and turtle_teleop_key fails to even import (it uses the POSIX-only termios/tty modules for raw keyboard input). Neither is a deliberately-scoped-out feature the way, say, actions are; they’re just unaddressed.

Tutorial-by-tutorial status

Page

Status

Notes

Configuring environment

Works

Using turtlesim, ros2, and rqt

Partial

Turtle control, spawn/kill, and pen/teleport services all work. The rqt Service Caller steps don’t, since simple-rqt doesn’t exist yet.

Understanding nodes

Works

Understanding topics

Partial

topic list/echo/pub/info work. topic hz and topic bw aren’t implemented, and the rqt_graph step doesn’t work (no simple-rqt-graph yet).

Understanding services

Works

Understanding parameters

Partial

param list/get/set work. param dump and param load aren’t implemented.

Understanding actions

Not yet

Actions aren’t implemented at all: no action server/client, no rotate_absolute, no action CLI verbs.

Recording and playing back data

Not yet

simple-ros2 bag doesn’t exist.

Launching nodes

Not yet

simple-ros2 launch and the Python launch API don’t exist.

Using rqt_console to view logs

Not yet

simple-rqt-console doesn’t exist.

Using colcon to build packages

Not yet

simple-colcon doesn’t exist.

Creating a workspace

Not yet

Depends on simple-colcon and the overlay/underlay workspace layout, neither built yet.

Creating a package

Not yet

simple-ros2 pkg create doesn’t exist.

Using ros2doctor to identify issues

Not yet

simple-ros2 doctor doesn’t exist.

Writing a simple publisher and subscriber (Python)

Partial

The rclpy publisher/subscriber API works, but only as a standalone script; running it as an installed workspace package needs simple-colcon.

Writing a simple service and client (Python)

Partial

Same as above: the rclpy service/client API works as a script, not yet as a workspace package.

Using parameters in a class (Python)

Partial

Same as above: parameter declaration/access works as a script, not yet as a workspace package.

CLI verb gaps

Within verb groups that otherwise work, a few individual verbs are still missing:

  • topic hz, topic bw, topic find

  • service find, service echo

  • param dump, param load

  • interface show

Entire command groups not yet built: action *, launch, bag, doctor, simple-colcon, simple-rosdep (not even a stub yet), and all of simple-rqt/simple-rqt-graph/simple-rqt-console.

Known cosmetic gaps

  • Service request/response __repr__ shows the internal generated class name (e.g. _SpawnRequest) instead of matching real ROS 2’s turtlesim_msgs.srv.Spawn_Request style.

  • /parameter_events and /rosout aren’t implemented, so topic list shows fewer topics than real ROS 2’s sample tutorial output.

Where to go from here

If a tutorial’s status above is “Works,” it should behave exactly as written. If it’s “Partial,” expect a specific step to fail where noted above. If it’s “Not yet,” treat it as reading material until that milestone lands.