前言
在自动驾驶开发的过程中,可视化工具是我们每天都要打交道的「吃饭家伙」。很长一段时间里,Rviz 都是 absolute 的统治者。但说实话,Rviz 的界面确实充满了「古早味」,一旦涉及到复杂的交互或者多机调试,体验往往不尽如人意。
其实我使用 Foxglove Studio 已经很长一段时间了,它极大地提升了我的开发效率,体验非常不错。它的前身其实是 Cruise 开源的 Webviz,后来独立出来成立了 Foxglove 公司,专注于打造现代化的机器人数据可视化基础设施。
今天就简单聊聊,为什么我强烈推荐大家试一试这个工具。
为什么它好用?
简单来说,Foxglove 就像是给传统的 ROS 调试工具穿上了一层现代化的外衣,同时在内核上解决了远程调试和数据管理的很多痛点。
以下是几个让我觉得「回不去」的优点:
1. 现代化的颜值与交互

用惯了 Rviz 的朋友,第一次打开 Foxglove 肯定会觉得眼前一亮。它的 UI 设计非常现代,不像 Rviz 那样充满了上个世纪软件的感觉。
更重要的是交互逻辑的优化。在 Foxglove 里添加可视化结果非常直观,不再需要像 Rviz 那样一层层点开属性配置。特别是对于多 topic 的批量管理和显示,它的操作效率要高很多。
2. 灵活的布局管理

这是个痛点。以前用 Rviz,不同的任务(比如看 Camera,看 Lidar,或者看 Planning 轨迹)往往需要保存不同的 .rviz 配置文件。换台电脑或者换个环境,配置可能就丢了或者路径不对了。
Foxglove 支持将布局保存在个人账号下。你在 Web 端配置好一个完美的调试面板,回家用笔记本登录账号,一模一样的布局直接同步过来。而且它支持多 Tab 面板,你可以在一个窗口里通过切换 Tab 来查看不同的业务模块,非常清爽。
3. 丰富的面板类型

除了基础的 3D 视图(点云、TF、Marker),Foxglove 内置了大量的分析面板。
- Raw Messages:直接查看原始消息内容,不用再开个终端
rostopic echo了。 - Plot:非常好用的波形绘制工具,调试控制算法或者分析延时的时候神器。
- Image/Map:常规操作。
以前为了分析某些特定数据,可能还得自己写个 Python 脚本或者用 rqt_plot 凑合,现在直接拖拽几个面板就能搞定,生产力提升明显。
4. 丝滑的 Bag 包回放
它原生支持 ROS 1 (.bag) 和 ROS 2 (.mcap) 的数据包文件。直接把文件拖进窗口就能开始回放,进度条拖拽非常丝滑。配合上面的各种面板,查问题的时候非常方便,不用非得把整个 ROS 环境跑起来。
5. Foxglove Bridge:远程调试利器
这可能是我最喜欢的功能。传统的远程调试往往需要通过 X11 转发 Rviz 界面,或者用 VNC,带宽占用高且卡顿。
Foxglove 提供了一个 foxglove_bridge,把它运行在车端或者仿真机上,它会通过 WebSocket 把数据高效地传输出来。你的本地电脑只需要打开浏览器或者 Foxglove 客户端连接这个 Bridge,就能流畅地看到所有数据。这种「后端运行在设备,前端运行在本地」的模式,极大地降低了调试时的资源消耗。
此外,由于 Foxglove 客户端完美支持跨平台(macOS, Windows, Linux),你终于可以摆脱那些傻大黑粗、续航尿崩的「开发本」了。现在的我可以优雅地拿着一台轻薄的 MacBook Air,连接车端热点,坐在副驾调试一整天都不用到处找电源插座。对于经常需要跑外场测试的工程师来说,这种「优雅感」绝对是旦用难回。
One More Thing:不仅仅是自动驾驶

虽然这篇文章主要从自动驾驶开发者的视角出发,但 Foxglove 的舞台其实非常广阔。
无论你是做机械臂控制、四足机器人开发,还是无人机调试,只要涉及空间数据和状态监控,它都能完美胜任。甚至对于一些非 ROS 的通用数据可视化需求,借助其强大的扩展能力,也能轻松搞定。
可以说,它是为整个泛机器人领域打造的下一代可视化基础设施。
总结
工具的升级本质上是为了给大脑减负。Foxglove 很好的把「查看数据」这件琐事变得简单、直观。如果你还在忍受 Rviz 的崩溃和卡顿,不妨花半小时体验一下 Foxglove,大概率你会像我一样把它加入主力工具箱。