使用 Foxglove Studio 可视化 ROS 2 数据

Foxglove Studio 是一款开源的机器人数据可视化和调试工具。

它有多种使用方式,使开发尽可能方便 - 它可以作为独立的桌面应用程序运行,通过浏览器访问,甚至可以在您自己的域上自行托管。

GitHub 上查看源代码。

安装

要使用 Web 应用程序,只需打开 Google Chrome 并导航到 studio.foxglove.dev

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

连接到数据源

打开 Foxglove Studio 后,您将看到一个对话框,其中列出了“所有可能的数据源 <https://foxglove.dev/docs/studio/connection/data-sources>”。

要连接到您的 ROS 2 堆栈,请单击“打开连接”,选择“Rosbridge (ROS 1 & 2)”选项卡,然后配置您的“WebSocket URL”。

您还可以将任何本地 ROS 2 .db3 文件直接拖放到应用程序中,以加载它们进行播放。

为了“在您的 ROS 2 文件中加载自定义消息定义 <https://github.com/ros2/rosbag2/issues/782>`__,请尝试将它们转换为“MCAP 文件格式 <https://mcap.dev>`__。

查看“Foxglove Studio 文档 <https://foxglove.dev/docs/studio/connection/native>`__,获取更详细的说明。

使用面板构建布局

“面板 <https://foxglove.dev/docs/studio/panels/introduction>`__ 是模块化可视化界面,可以配置和排列到 Studio“布局 <https://foxglove.dev/docs/studio/layouts>`__ 中。

您还可以保存布局以备将来使用,供您个人参考或与更大的机器人团队一起使用。

在侧边栏的“添加面板”选项卡中查找可用面板的完整列表。

我们在下面重点介绍了一些特别有用的功能:

1 3D:在 3D 场景中显示可视化标记

发布标记消息以将原始形状(箭头、球体等)和更复杂的可视化(占用网格、点云等)添加到 3D 面板的场景中。

通过左侧的主题选择器选择要显示的主题,并在“编辑主题设置”菜单中配置每个主题的可视化设置。

Foxglove Studio's 3D panel

请参阅`docs <https://foxglove.dev/docs/studio/panels/3d>`__,了解`支持的消息类型<https://foxglove.dev/docs/studio/panels/3d#supported-messages>`__的完整列表以及一些有用的`用户交互<https://foxglove.dev/docs/studio/panels/3d#user-interactions>`__。

2 诊断:过滤和排序诊断消息

显示正在运行的 feed 中具有 diagnostic_msgs/msg/DiagnosticArray 数据类型的主题中可见节点的状态(即过时、错误、警告或正常),并显示给定 diagnostic_name/hardware_id 的诊断数据。

Foxglove Studio's Diagnostics panel

有关更多详细信息,请参阅 docs

3 图像:查看摄像头供稿图像

选择要显示的 sensor_msgs/msg/Imagesensor_msgs/msg/CompressedImage 主题。

Foxglove Studio's Image panel

有关更多详细信息,请参阅 docs

4 日志:查看日志消息

要实时查看 rcl_interfaces/msg/Log 消息,请使用桌面应用程序将 <https://foxglove.dev/docs/studio/connection/native>`__ 连接到正在运行的 ROS 堆栈。

要从预先记录的数据文件中查看 rcl_interfaces/msg/Log 消息,您可以将文件拖放到 web 或桌面应用程序中。

接下来,将 Log 面板添加到布局中。 如果您已正确连接到 ROS 堆栈,您现在应该会看到日志消息列表,并可以按节点名称或严重性级别对其进行过滤。

有关更多详细信息,请参阅 docs

5 绘图:绘制随时间变化的任意值

绘制播放时间内主题消息路径中的任意值。

指定要沿 y 轴绘制的主题值。

对于 x 轴,选择绘制 y 轴值的时间戳、元素索引或其他自定义主题消息路径。

Foxglove Studio's Plot panel

有关更多详细信息,请参阅 docs

6 原始消息:查看传入主题消息

以易于阅读的可折叠 JSON 树格式显示传入主题数据。

Foxglove Studio's Raw Messages panel

有关更多详细信息,请参阅 docs

7 Teleop:远程操作您的机器人

通过将给定主题上的 geometry_msgs/msg/Twist 消息发布回您的实时 ROS 堆栈来远程操作您的物理机器人。

Foxglove Studio's URDF Viewer panel

有关更多详细信息,请参阅 docs

8 URDF 查看器:查看和操作您的 URDF 模型

要在 Foxglove Studio 中可视化和控制您的机器人模型,请打开 Web 或桌面应用程序并将 URDF 查看器 面板添加到您的布局中。 然后,将您的 URDF 文件拖放到该面板中以可视化您的机器人模型。

Foxglove Studio's URDF Viewer panel

选择发布“JointState”消息的任何主题,根据已发布的关节状态更新可视化效果(默认为“/joint_states”)。

切换到“手动关节控制”以使用提供的控件设置关节位置。

Foxglove Studio's URDF Viewer panel with editable joint positions

有关更多详细信息,请参阅 docs

其他基本操作

1 查看您的 ROS 图表

使用桌面应用程序连接 到您正在运行的 ROS 堆栈。 接下来,将 主题图表 面板添加到您的布局。 如果您已正确连接到您的 ROS 堆栈,您现在应该会在该面板中看到您的 ROS 节点、主题和服务的计算图。 使用面板右侧的控件选择要显示的主题或切换服务。

2 查看和编辑您的 ROS 参数

使用桌面应用程序连接 到您正在运行的 ROS 堆栈。 接下来,将 参数 面板添加到您的布局。 如果您已正确连接到您的 ROS 堆栈,您现在应该可以看到当前 rosparams 的实时视图。 您可以编辑这些参数值以将 rosparam 更新发布回您的 ROS 堆栈。

3 将消息发布回您的实时 ROS 堆栈

使用桌面应用程序连接 到您正在运行的 ROS 堆栈。 接下来,将 发布 面板添加到您的布局。

指定您要发布的主题以推断其数据类型并使用 JSON 消息模板填充文本字段。

在常见 ROS 数据类型的下拉列表中选择数据类型也会使用 JSON 消息模板填充文本字段。

在点击“发布”之前,编辑模板以自定义您的消息。

Foxglove Studio's Publish panel