图 20-2 · 两发布者合力把车"画"出来
本图回答的问题:从一份静态 XML 到屏幕上会动的小车,中间有谁在发、谁在收?
URDF 模型
robot_description
静态结构:轮装在哪
joint_state_publisher_gui
拖滑块 → 发布关节角
robot_state_publisher
URDF × 关节角 → 算 TF
robot_description 参数注入
/joint_states(关节角)
/tf · /tf_static
robot_description(模型外观)
RViz2
RobotModel 着色
TF Display 画轴
Fixed Frame: chassis
断任何一环,车就"散架"
断 /joint_states → No transform
断参数注入 → RViz2 黑屏
模型(URDF)与状态(joint_states)分离——同一份 URDF 可复用于全车队
✅ 结论:静态模型 × 动态关节角 = 每帧 TF,RViz 只负责按 Fixed Frame 重绘
⚠️ 风险:话题断连 → No transform;参数未注入 → 黑屏
🔍 验证:04 节 display.launch.py 三节点 + URDF Doctor 症状诊断
EXP-20 · URDF 与 Xacro 机器人建模