ROS Foxglove 桥接
使用 ROS Foxglove 桥接,通过 Foxglove WebSocket 连接来可视化您的实时 ROS 1 或 ROS 2 数据。
Foxglove 桥接通过 Foxglove WebSocket 协议将您的 ROS 堆栈连接到 Foxglove。它作为一个 C++ 节点实现,具有高性能和低开销的特点。
概述
foxglove_bridge
使用 Foxglove WebSocket 协议,这是一种类似于 rosbridge
的协议,但具有支持额外模式格式(如 ROS 2 .msg
和 ROS 2 .idl
)、参数、图形自省和非 ROS 系统的能力。该桥接用 C++ 编写,设计为高性能和低开销,以尽量减少对机器人堆栈的影响。
安装
foxglove_bridge
包适用于 ROS 1 Melodic 和 Noetic,以及 ROS 2 Humble、Iron 和 Rolling。由于 API 设计和/或性能限制,早期版本的 ROS 将不受支持。可以使用以下命令安装该包:
$ sudo apt install ros-$ROS_DISTRO-foxglove-bridge
启动
使用 roslaunch
在 ROS 1 中或使用 ros2 launch
在 ROS 2 中从您的 ROS 工作区启动 foxglove_bridge
。以下是可选配置及其默认值。
$ ros2 launch foxglove_bridge foxglove_bridge_launch.xml
如果您计划在机器人上线时使用 foxglove_bridge
,请将其添加到您的启动文件中。
配置
通过以下参数配置桥接行为。在初始化时通过启动文件或命令行设置参数,运行时无法修改。
配置
提供参数以配置桥接的行为。这些参数必须在初始化时通过启动文件或命令行设置,运行时无法修改。
- port – 绑定 WebSocket 服务器的 TCP 端口。必须是有效的 TCP 端口号,或 0 以使用随机端口。默认值为
8765
。 - address – 绑定 WebSocket 服务器的主机地址。默认值为
0.0.0.0
,默认监听所有接口。将其更改为127.0.0.1
(或 IPv6 的::1
)以仅接受来自本机的连接。 - tls – 如果为
true
,则使用传输层安全性(TLS)进行加密通信。默认值为false
。 - certfile – 用于 TLS 的证书路径。当 tls 设置为
true
时必需。默认值为""
。 - keyfile – 用于 TLS 的私钥路径。当 tls 设置为
true
时必需。默认值为""
。 - topic_whitelist – 白名单主题名称的正则表达式列表(ECMAScript 语法)。默认值为
[".*"]
。 - service_whitelist – 白名单服务名称的正则表达式列表(ECMAScript 语法)。默认值为
[".*"]
。 - param_whitelist – 白名单参数名称的正则表达式列表(ECMAScript 语法)。默认值为
[".*"]
。 - client_topic_whitelist – 白名单客户端发布主题名称的正则表达式列表(ECMAScript 语法)。默认值为
[".*"]
。 - send_buffer_limit – 连接发送缓冲区限制(以字节为单位)。当连接的发送缓冲区达到此限制时,将丢弃消息,以避免积累过时消息的队列。默认值为
10000000
(10 MB)。 - use_compression – 使用 WebSocket 压缩(permessage-deflate)。适用于带宽较小的连接,但会增加 CPU 负载。
- capabilities – 支持的 服务器功能 列表。默认值为
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
。 - asset_uri_allowlist – 允许的资产 URI 的正则表达式列表(ECMAScript 语法)。使用 resource_retriever 来解析
package://
、file://
或http(s)://
URI。请注意,应仔细配置此列表,以确保不会通过 WebSocket 连接意外暴露机密文件。作为额外的安全措施,包含两个连续点(..
)的 URI 被禁止,因为它们可能被用来构造 URI,如果允许列表配置不够严格(例如package://<pkg_name>/../../../secret.txt
),则可能允许检索机密文件。默认值为["^package://(?:\w+/)*\w+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
。
仅 ROS 1:
- max_update_ms – 轮询
roscore
以获取新主题、服务或参数之间的最大等待毫秒数。默认值为5000
。 - service_type_retrieval_timeout_ms – 检索服务类型信息的最大毫秒数。默认值为
250
。
仅 ROS 2:
- num_threads – 用于 ROS 节点执行器的线程数。这控制可以并行处理的订阅数量。0 表示每个 CPU 核心一个线程。默认值为
0
。 - min_qos_depth – 订阅的 QoS 配置文件的最小深度。默认值为
1
。这是为订阅者的 QoS 深度设置的下限,该深度通过汇总所有发布者的深度来计算。另请参见 ros-foxglove-bridge/#208。 - max_qos_depth – 订阅的 QoS 配置文件的最大深度。默认值为
25
。 - include_hidden – 包括隐藏的主题和服务。默认值为
false
。
开发
要从源代码构建或为项目做贡献,请查看 ros-foxglove-bridge
GitHub 仓库。