Nav2 Ready v0.1.0 — A CLI readiness checker for custom Nav2 robots

Hi everyone,

I have released Nav2 Ready v0.1.0, an open-source CLI tool that checks whether a custom ROS 2 robot meets the basic runtime prerequisites for using Nav2.

GitHub release:

The problem

Nav2 often works successfully with sample robots such as TurtleBot3, but moving to a custom robot can be difficult.

When navigation does not start correctly, it may not be obvious whether the problem comes from:

  • TF connectivity or frame names

  • Odometry messages

  • LaserScan data

  • The sensor-to-base transform

  • A missing cmd_vel subscriber

  • Nav2 lifecycle states

  • The map to odom transform

  • Inconsistent ROS time settings

Nav2 Ready checks these prerequisites together and reports each result as PASS, WARN, or FAIL, with a possible cause and a suggested next step.

Example

[PASS] TF-001 Odometry transform
       Transform available: base_footprint -> odom

[PASS] ODOM-001 Odometry stream
       Received nav_msgs/msg/Odometry (odom -> base_footprint)

[PASS] SENSOR-001 Obstacle sensor stream
       Received sensor_msgs/msg/LaserScan (frame: base_scan)

[PASS] NAV-001 Nav2 lifecycle
       Required nodes active: behavior_server, bt_navigator,
       controller_server, planner_server

Overall: PASS
8 passed, 0 warned, 0 failed

A typical command is:

ros2 run nav2_ready check \
  --base-frame base_footprint \
  --timeout 5 \
  --ros-args -p use_sim_time:=true

Scope of v0.1.0

The initial release targets ROS 2 Jazzy and supports one obstacle sensor topic per run using either sensor_msgs/msg/LaserScan or sensor_msgs/msg/PointCloud2.

PointCloud2 validation is structural only. It does not diagnose point-cloud quality, filtering, or Nav2 voxel-layer configuration.

It intentionally does not include a GUI, AI-based diagnosis, automatic configuration changes, or support for multiple ROS distributions.

The current goal is to validate whether a small readiness checker like this is useful before expanding its scope.

Feedback wanted

I would especially appreciate feedback from people who have integrated Nav2 with a custom robot:

  1. Would these checks have helped during your Nav2 setup?

  2. Is an important prerequisite missing?

  3. Are any results or suggested actions unclear?

  4. Does the tool produce an incorrect PASS, WARN, or FAIL in your environment?

Please try it and open a GitHub Issue if you encounter a problem:

Thank you!

1 Like

One small documentation question before trying this: the announcement says v0.1.0 covers LaserScan and excludes PointCloud2, but the current main README lists both and gives a /points example. The README also calls it a development snapshot rather than a released package.

Which version should someone follow for the scope described here? Linking the README at the release tag would make that clearer.

I haven’t run Nav2 Ready, so this is documentation feedback only.

Edit, September 14: the announcement now links to the v0.1.0 release and says that PointCloud2 checks are structural only. That clarifies the announcement scope I was asking about. I still have not run the tool.