Quick start¶
Five minutes, no robot needed. You'll break a topic on purpose, then let AutoDiag find and explain the problem.
In a hurry? One command
dds-autodiag demo creates two broken demo topics and diagnoses them for you. The steps below do the same by
hand, so you see how each part works.
1. Create a broken topic¶
Open two terminals with ROS 2 sourced. The first publishes Best Effort, the second subscribes Reliable, a combination that never delivers data.
The subscriber prints nothing, just a warning about incompatible QoS that's easy to miss in a real system.
2. Find it with the CLI¶
/demo — 1 publisher(s), 1 subscriber(s)
publisher _ros2cli_12446 reliability=BEST_EFFORT durability=VOLATILE
subscriber _ros2cli_12647 reliability=RELIABLE durability=VOLATILE
✖ problem RELIABILITY_MISMATCH Incompatible reliability: _ros2cli_12446 → _ros2cli_12647
evidence: publisher=_ros2cli_12446, subscriber=_ros2cli_12647, offered=BEST_EFFORT, requested=RELIABLE
next: Review requested/offered QoS policies. Do not change semantics blindly.
docs: https://docs.ros.org/en/jazzy/Concepts/Intermediate/About-Quality-of-Service-Settings.html
The exit code is 1 because a problem was found, so the same command works in scripts and CI.
3. See it in the dashboard¶
Open Topics, filter for demo, and click it. The endpoint table shows both sides with their QoS, and the finding
explains the mismatch. Read one sample confirms that data arrives with Best effort but not with Reliable.
4. Ask the assistant¶
Open Assistant, type "Why does my subscriber receive nothing on /demo?" and press Explain with AI. The answer cites the official ROS 2 QoS documentation and can be followed up, for example "How do I fix that in my launch file?". Without an AI model, Documentation only still finds the right official pages.
5. Check your whole machine¶
This host
Host my-laptop
ROS distro jazzy
Domain ID 0
RMW rmw_fastrtps_cpp
Discovery range SUBNET
...
✔ No configured rule detected a problem. This does not prove messages are delivered;
use `dds-autodiag sample <topic>` to confirm.
Status: No confirmed critical issue; full-stack health NOT established
Why \"does not prove\"?
AutoDiag reports what it can observe. A clean configuration check is good news, but only a received message proves delivery. That's why every clean result points you to a live sample. See How diagnosis works.
Where next¶
- Web dashboard: every tab explained
- Configure RViz with AI: build views by describing them
- Compare hosts: robot vs. laptop, container vs. container (lab fleet in
examples/lab-fleet/) - Diagnostic rules: what each finding means