RViz2
Treat RViz2 as a consumer of ROS evidence. A blank display usually means its
frame, message, QoS, or time contract is wrong.
Build a focused view
- Start with a fixed frame that exists now, then add only the displays needed
for the question being asked.
- Prefer adding by topic when discovering a graph; it helps match message type
to display type.
- Keep a saved
.rviz configuration per robot and task. Do not rebuild the
display list on every run or make one unreadable everything-dashboard.
- For navigation, view raw sensors and TF alongside map, costmaps, footprint,
plan, and robot model so upstream data can be distinguished from Nav2 output.
Read what the display is telling you
- A red or empty display is evidence about the input boundary, not proof that
RViz itself is broken.
- Check fixed frame and TF first, then publisher/display QoS, then simulation
time and
/clock.
- Compare the configured topic and namespace with the live graph; stale configs
often point at an old robot name.
- A missing display plugin can fail one saved display while the rest of the
config continues to load.
Read failures when something does not render. Cross into ros2
only when the evidence points to TF, QoS, graph, or time at the publisher. Cross
into navigation when those inputs are healthy but a costmap, plan, or
controller result is wrong.
Use foxglove instead for a headless, remote, browser, or shareable workflow;
use rerun for data-centric ML and non-ROS logging. If the viewer has not been
chosen, use visualization first.
Done
- The fixed frame is present and every displayed message transforms into it.
- Display QoS and topic namespaces match their publishers.
- Simulation time is consistent when applicable.
- The saved config opens into a focused, useful debugging view.
- Any CLI or UI details were checked against the installed RViz2 build and
current RViz documentation.
1---2name: rviz23description: Inspect and debug live ROS 2 robot state with RViz2.4---56# RViz278Treat RViz2 as a consumer of ROS evidence. A blank display usually means its9frame, message, QoS, or time contract is wrong.1011## Build a focused view1213- Start with a fixed frame that exists now, then add only the displays needed14 for the question being asked.15- Prefer adding by topic when discovering a graph; it helps match message type16 to display type.17- Keep a saved `.rviz` configuration per robot and task. Do not rebuild the18 display list on every run or make one unreadable everything-dashboard.19- For navigation, view raw sensors and TF alongside map, costmaps, footprint,20 plan, and robot model so upstream data can be distinguished from Nav2 output.2122## Read what the display is telling you2324- A red or empty display is evidence about the input boundary, not proof that25 RViz itself is broken.26- Check fixed frame and TF first, then publisher/display QoS, then simulation27 time and `/clock`.28- Compare the configured topic and namespace with the live graph; stale configs29 often point at an old robot name.30- A missing display plugin can fail one saved display while the rest of the31 config continues to load.3233Read [failures](FAILURES.md) when something does not render. Cross into `ros2`34only when the evidence points to TF, QoS, graph, or time at the publisher. Cross35into `navigation` when those inputs are healthy but a costmap, plan, or36controller result is wrong.3738Use `foxglove` instead for a headless, remote, browser, or shareable workflow;39use `rerun` for data-centric ML and non-ROS logging. If the viewer has not been40chosen, use `visualization` first.4142## Done4344- The fixed frame is present and every displayed message transforms into it.45- Display QoS and topic namespaces match their publishers.46- Simulation time is consistent when applicable.47- The saved config opens into a focused, useful debugging view.48- Any CLI or UI details were checked against the installed RViz2 build and49 current [RViz documentation](https://github.com/ros2/rviz).