Quick Start
Get from install to architecture graph in under 2 minutes.
1. Install
pipx install ros2inspector
pipx keeps the CLI isolated and exposes ros2inspector on your PATH, so
there is no virtual environment to activate. See Installation
if you need to install or configure pipx.
2. Scan your workspace
Point ros2inspector at a supported ROS2 source workspace:
ros2inspector scan ~/robot_ws
Output:
Scanning workspace... ████████████████████ 100%
Packages Found
┌──────────────────────┬─────────┬──────────────┬───────┐
│ Name │ Version │ Type │ Score │
├──────────────────────┼─────────┼──────────────┼───────┤
│ navigation2 │ 1.2.0 │ ament_cmake │ 94 │
│ slam_toolbox │ 2.6.0 │ ament_cmake │ 88 │
│ robot_state_pub │ 3.1.0 │ ament_python │ 97 │
└──────────────────────┴─────────┴──────────────┴───────┘
✓ 3 packages found · Workspace health: 93/100
3. List all nodes
ros2inspector nodes
This lists nodes detected from supported static Python and C++ patterns:
┌─────────────────────┬──────────────┬──────────┬─────────────────────────┐
│ Node │ Package │ Language │ Publishers │
├─────────────────────┼──────────────┼──────────┼─────────────────────────┤
│ bt_navigator │ navigation2 │ cpp │ /cmd_vel, /waypoints │
│ slam_node │ slam_toolbox │ cpp │ /map, /pose │
│ robot_state_pub │ robot_state… │ python │ /robot_description │
└─────────────────────┴──────────────┴──────────┴─────────────────────────┘
4. Generate a graph
Export to Mermaid (embeddable in any Markdown file):
ros2inspector graph comms --format mermaid
Or view an interactive HTML graph in your browser:
ros2inspector viz
This generates ros2inspector_graph.html and opens it automatically.
5. Filter by package
Focus on a single package:
ros2inspector nodes -p navigation2
ros2inspector graph deps --format mermaid -p navigation2
6. Export to JSON
Machine-readable output for scripting or CI integration:
ros2inspector nodes --format json > nodes.json
ros2inspector graph full --format json > graph.json
Common recipes
Check workspace health
ros2inspector scan ~/robot_ws
# Look at the Score column — 90+ is healthy
Find all publishers of a topic
ros2inspector nodes --format json | python3 -c "
import json, sys
data = json.load(sys.stdin)
for n in data:
if any(ep.get('name') == '/cmd_vel' for ep in n.get('publishers', [])):
print(f'{n[\"package\"]}/{n[\"name\"]} publishes /cmd_vel')
"
Save a graph to a file
ros2inspector graph comms --format dot -o architecture.dot
dot -Tpng architecture.dot -o architecture.png
CI diff (detect architecture changes)
ros2inspector graph full --format json -o graph-before.json
# ... make changes ...
ros2inspector graph full --format json -o graph-after.json
diff graph-before.json graph-after.json
Next steps
- Compatibility and Scope — Review supported environments and static-analysis limits
- Core Concepts — Understand nodes, topics, the UAM, and health scoring
- CLI Reference — Full documentation for every command
- CI/CD Guide — Run ros2inspector in GitHub Actions