本节摘要:RViz 常被当成"看数据的窗口",本节要把它用到另一个层次:空间诊断仪。固定坐标系的语义决定你看到的一切,显示项的组织方式决定排查效率,交互工具(初始位姿、导航目标)背后的话题机制让手动干预成为调试手段。第 5 章的 TF 工具与第 6 章的导航目标在这里都有可视化的对应物。
先建立一个容易忽略的事实:RViz 画面里的一切,都是从某个坐标系的视角渲染出来的。固定坐标系(Fixed Frame)选 map,你看到的是世界视角;选 base_link,你看到的是车载视角——机器人永远在画面中心,世界绕它转。看错了视角,会对画面做出错误解读:位姿怪异可能是数据真错了,也可能只是你的固定帧选在了一个漂移的坐标系上。所以 RViz 排查的第一问永远是:固定帧是谁?它可信吗?
固定帧选错或所选坐标系在 TF 树中断裂时,RViz 的表现很有辨识度:所有显示项集体消失,状态栏报"Fixed frame 映射不存在"。这个症状反过来用就是 TF 断链探测器——第 5.3 节的变式二(雷达错挂 odom)在 RViz 里的直接表现就是点云忽隐忽现。
RViz 的显示项(Displays)就是诊断面板。排查不同层的问题要开不同的组合,我的默认排查配置是四件套:TF(坐标轴与名字)、机器人模型(RobotModel)、传感器原始数据(LaserScan 或 Image)、地图(Map)。加一条纪律:每加一个显示项,先确认它的 topic 与 reliability——RViz 订阅传感器流同样受 QoS 合约约束,2.3 节的教训在这里完全适用:图像黑屏先查显示项的可靠性设置是不是 reliable(传感器流是 best_effort),再怀疑驱动。
| 显示项 | 诊断对象 | 常见症状与含义 |
|---|---|---|
| TF | 坐标树 | 轴间距离异常说明标定错,名字缺失说明断链 |
| RobotModel | 模型与关节 | 模型散架说明 joint_state 缺失 |
| LaserScan 或 PointCloud2 | 传感器入树 | 点云悬空说明 frame_id 或 TF 有病 |
| Map | 建图与定位 | 地图与扫描错位即 5.3 类病灶 |
| Path 与 LocalCostmap | 导航 | 路径抖动看它,局部绕行看它 |
表格里"点云悬空"值得展开:点云数据本身是对的,但它被画在了错误的高度——十有八九是 frame_id 声明的坐标系在 TF 里的位置不对(比如高度标定错)。RViz 的可视性把 5.3 节"数值对账"升级成了"肉眼对账"。
RViz 工具栏的三件交互工具让手动干预有了落点,它们本质上都是话题发布器:2D Pose Estimate 发 initialpose 话题(给 amcl 塞初始位姿,6.1 节那个"定位自信地抖"的标准处置),2D Goal Pose 发导航目标话题(手动触发一次 NavigateToPose),Publish Point 发单点坐标。知道它们是话题发布器,你就能脱离界面用命令行复现同样操作——把"界面操作"翻译成"可脚本化的动作",是自动化测试的起点(第 8.5 节的工程化会回来接这个头)。

排查配置值得保存复用:File 菜单导出的配置文件记录了全部显示项、固定帧与视角。团队共享一套标准排查配置的价值在协作期尤其明显——"你 RViz 里开了什么"不该是每次都要口头交流的信息。进阶做法是把配置文件放进 bringup 包,由 4.3 节的 Launch 随系统拉起 RViz 并加载配置,新同事克隆仓库即获得一致的观测环境。
💡 关键直觉:RViz 的价值不在"能看到",而在"能让空间数据之间互相参照"。扫描与地图叠加、点云与机器人模型叠加、路径与代价地图叠加——病灶就藏在这些参照的错位里。单看任何一个图层都是正常的,错位才是证据。
三层观测的组合威力,用一次复查案例来说明。还是 5.3 节那台换了雷达的机器人:修完静态变换后建图立正了,但用户反馈"长走廊里偶尔还是感觉定位飘了一下"。单次现场排查无果——飘一下就过去,抓不住。
第一层先排除视角干扰:固定帧选 map,而 map 到 odom 的变换由 amcl 广播——如果 amcl 自己在抖,你看到的"一切"都在抖。切换固定帧到 odom(里程计坐标,短时稳定)再看:机器人的扫描明显稳定了,但地图轮廓仍在抖——抖动源锁定在 map 到 odom 这一段,即 amcl 的定位输出,而非里程计或传感器。
第二层做图层对账:叠加当前 LaserScan 与静态 Map,肉眼观察扫描与地图的贴合度。回放 7.4 节录制的时段数据,慢速播放逐帧看——发现在走廊尽头(特征稀疏的长墙区),贴合度周期性劣化又恢复。特征稀疏区定位发散、回到特征区又收敛,这是激光定位在退化环境里的典型行为,不是故障而是机理。
第三层给处置:在走廊尽头贴装两个廉价反光柱做特征补充(或用生命周期管理器在退化区降低定位置信权重)。复查结论归档时附上录制数据与前后对比截图——这就是三层联用从"感觉飘"走到"机理明确、处置有据"的完整路径。
这个案例的通用启示:单层观测永远可能被骗,层间对账才产生证据。视角层排除观测工具自身的问题,图层暴露空间关系的事实,干预层验证处置的有效性——三层的次序不要乱,跳层排查等于还没排除"尺子本身不准"就去量家具。
空间层会看了。下一节进入仿真:在没有真机风险的世界里,把整条导航链路先跑通。