Skip to content

Foxglove Studio

Foxglove 是一款面向机器人开发者的可视化和可观测性工具,支持浏览器端和独立桌面应用,对个人用户、小团队和学术用途免费。

使用 Foxglove 前,需要先创建一个账户。注册免费,只需一个有效的电子邮箱。

创建账户后,用 Google Chrome 浏览器打开 app.foxglove.dev 即可在网页端使用。

要使用 Linux、macOS 或 Windows 的桌面应用程序,请直接从 Foxglove 官网下载。

注意: Foxglove 依赖 Google Chrome 的特定功能。虽然某些功能在其他浏览器上也能运行,但不在官方支持范围内。为获得最佳体验,建议使用 Chrome 或桌面应用程序。

要连接到实时 ROS 2 技术栈,需要先安装 Foxglove ROS 2 bridge:

Terminal window
sudo apt install ros-$ROS_DISTRO-foxglove-bridge

bridge 安装好后,用以下命令启动:

Terminal window
ros2 launch foxglove_bridge foxglove_bridge_launch.xml

bridge 在机器人上运行后,即可在 Foxglove 中连接并查看数据。确保你的电脑与机器人在同一网络中,打开 Foxglove(网页版或桌面版),点击「Open connection」。

选择「Foxglove WebSocket」选项,输入机器人的 WebSocket URL。默认地址为 ws://localhost:8765,ROS Foxglove bridge 的配置选项详见这里。

注意: Foxglove 也可以通过 rosbridge 连接,但出于性能和稳定性考虑,推荐使用 Foxglove bridge。

如果需要查看已录制的数据,Foxglove 可以回放 ROS 2 的 .mcap 文件,以及旧版 ROS 2 的 .db3 文件和 ROS 1 的 .bag 文件。处理录制数据时 Foxglove 特别方便——无需运行 ROS 2 即可查看。

使用 ros2 bag 命令行工具将机器人数据录制到 .mcap 文件:

Terminal window
ros2 bag record -a

在 Foxglove 的仪表板或菜单中选择「Open local file」,然后导航到录制的 .mcap 文件。

更多可用数据源类型,请参阅 Foxglove 文档中数据源介绍。

面板(Panels)用于可视化不同类型的数据,例如日志、地图、曲线图和 3D 信息。通过拖放即可将面板排列到 Foxglove 的布局(layouts)中,同时查看多种数据。

布局可以保存供日后使用,也可以与团队共享。

点击左上角菜单栏的「Add panel」图标,即可查看所有可用面板的完整列表。

下面我们重点介绍一些特别有用的面板:

3D 面板:查看 3D 数据和可视化标记

Section titled “3D 面板:查看 3D 数据和可视化标记”

点击右上角的齿轮图标打开面板设置。通过左侧的话题选择器勾选要显示的话题,并在「Edit topic settings」菜单中配置每个话题的可视化选项。

发布 marker 消息可以在 3D 面板的场景中添加基本形状(箭头、球体等)以及更复杂的可视化(占据栅格、点云等)。

{/截图:Foxglove 的 3D 面板/}

请参阅文档获取支持的消息类型完整列表以及实用的用户交互功能。

诊断面板:查看和过滤诊断消息

Section titled “诊断面板:查看和过滤诊断消息”

实时数据流中,该面板显示来自 diagnostic_msgs/msg/DiagnosticArray 类型话题的节点状态(stale、error、warn 或 OK),并按 diagnostic_name/hardware_id 展示诊断数据。

{/截图:Foxglove 的诊断面板/}

请参阅文档了解更多详情。

支持显示原始图像、压缩图像和压缩视频,并支持文本标签、圆形和点等 2D 标注。还可以叠加 3D marker 以提供额外的上下文信息。

{/截图:Foxglove 的图像面板/}

请参阅文档了解更多详情。

要实时查看 rcl_interfaces/msg/Log 消息,请用桌面应用程序连接到正在运行的 ROS 技术栈。要从预录制的数据文件中查看 rcl_interfaces/msg/Log 消息,将文件拖放到网页版或桌面应用程序即可。

接下来,将 Log 面板添加到布局中。正确连接到 ROS 技术栈后,即可看到日志消息列表,并支持按节点名称或严重级别过滤。

请参阅文档了解更多详情。

绘图面板:随时间绘制任意数值

Section titled “绘图面板:随时间绘制任意数值”

从话题的消息路径(message paths)中绘制任意数值随时间变化的曲线。

播放本地或远程数据文件时,该面板会为整个回放时间线预加载指定消息路径的数据。当前回放位置由一条垂直灰条标识。

{/截图:Foxglove 的绘图面板/}

请参阅文档了解更多详情。

原始消息面板:查看传入的话题消息

Section titled “原始消息面板:查看传入的话题消息”

检查数据源中特定的消息路径。

当给定路径收到新消息时,可折叠的树状视图仅显示最新消息。各节点可展开或折叠,且操作状态在回放过程中保持不变。

{/截图:Foxglove 的原始消息面板/}

请参阅文档了解更多详情。

通过在指定话题上向实时 ROS 技术栈发布 geometry_msgs/msg/Twist 消息,遥控你的物理机器人。

{/截图:Foxglove 的遥操面板/}

请参阅文档了解更多详情。

可视化 URDF:查看和操作你的 URDF 模型

Section titled “可视化 URDF:查看和操作你的 URDF 模型”

Foxglove 的 3D 面板支持在机器人世界中显示统一机器人描述格式(URDF)模型。

要在 Foxglove 中可视化和控制机器人模型,请打开网页版或桌面版应用程序,将 3D 面板添加到布局中。

支持通过 HTTP/HTTPS URL(网页版和桌面版)或以 file:// 和 package:// 为前缀的 URL(仅桌面版),在 3D 面板中作为自定义图层添加任意数量的 URDF 模型。

此外,3D 面板还可以显示来自 /robot_description 话题的 URDF。

添加到 3D 面板后,URDF 文件会根据模型的连杆(links)和关节(joints),自动填充坐标系的变换树。

需要注意的是,Foxglove 的默认设置与 RViz 不同——如果网格(mesh)显示异常,可在面板设置的「Scene」部分调整「Ignore COLLADA <up_axis>」(针对 DAE 网格)和「Mesh up axis」(针对 STL 和 OBJ 网格)选项。

发布变换消息即可更新变换树,移动 URDF 模型的关节位置——如果之前使用过 JointState 消息,可以在运行时通过 robot_state_publisher 节点将其转换为 TF 消息。

此外,还可以通过面板设置界面手动控制模型的关节。

{/截图:Foxglove 的 URDF 查看器面板,关节位置可编辑/}

请参阅文档了解更多详情。

使用桌面应用程序,连接到正在运行的 ROS 技术栈。接下来,将 Topic Graph 面板添加到布局中。正确连接后,即可在该面板中看到 ROS 节点、话题和服务组成的计算图。使用面板右侧的控件可以选择要显示的话题或切换服务的显示。

使用桌面应用程序,连接到正在运行的 ROS 技术栈。接下来,将 Parameters 面板添加到布局中。正确连接后,即可看到当前 rosparams 的实时视图。可以直接编辑参数值,修改会作为 rosparam 更新发布回 ROS 技术栈。

使用桌面应用程序,连接到正在运行的 ROS 技术栈。接下来,将 Publish 面板添加到布局中。

指定要发布的话题,系统会自动推断其数据类型,并用 JSON 消息模板填充文本字段。

也可以从常用 ROS 数据类型的下拉菜单中选择一个类型,同样会自动填充 JSON 消息模板。

点击「Publish」之前,可以编辑模板以自定义消息内容。

{/截图:Foxglove 的发布面板/}