THE DOCTOR
The doctor reads your live graph and files a report for every problem: what is wrong, the evidence on both sides, why it fails without a word in the logs, the fix, and the official doc. Add --json and your coding agent reads the same report.
onscope doctor /scan · jazzy · domain 42ERROR · qos_incompatible
Finding
Publisher /lidar_driver and subscriber /obstacle_watch have incompatible QoS on /scan. They are not connected, and no message will ever be delivered between them.
Evidence
| policy | publisher | subscriber |
|---|---|---|
| reliability | BEST_EFFORT | RELIABLE |
| durability | VOLATILE | VOLATILE |
| history | KEEP_LAST | KEEP_LAST |
| depth | 5 | 10 |
Why
DDS links a subscription to a publisher only when what the subscriber requests is no stronger than what the publisher offers. Neither side logs anything. That silence is why this costs people a day.
Fix
Set the subscriber to BEST_EFFORT, which suits high-rate sensor streams, or set the publisher to RELIABLE. History and depth are never the cause. Confirm with ros2 topic info /scan --verbose.
Concept
QoS compatibility, request versus offer. Official ROS 2 docs
$ onscope doctor /scan --json
the same report for agents · bounded · deterministic · never publishes on your graph
$ onscope doctor target jetson-01
fingerprint a Jetson over SSH against a compatibility table
$ onscope doctor pair
two machines, one real multicast probe
unknown stays unknown
16 of 16 on file
NEXT DRAWER