ROS Domain ID 设置
BATCAM FX ROS Domain ID 设置
1. 概述
BATCAM FX 基于 ROS 2 Humble 发布传感器数据,只有使用相同 ROS_DOMAIN_ID 的节点之间才能相互发现并通信。当需要在同一网络中分离运行多个 ROS 2 系统,或需要使 BATCAM FX 与所用环境的 Domain ID 保持一致时,请更改此设置。
-
BATCAM FX 的 ROS 默认
DOMAIN_ID为 123。(固件 v1.0.3b 以上,请参阅 FX 固件发行说明) -
设备发布的话题构成请参阅 FX ROS 系统集成概述 文档。
2. 方法选择:确认固件版本
设置方法因固件版本而异。请先确认所用设备的固件版本。
| 固件版本 | 设置方法 | 备注 |
|---|---|---|
| 1.0.3c 以上 | REST API(第 3 项,推荐) | 官方支持的方法 |
| 低于 1.0.3c | 手动修改 systemd 服务文件(第 4 项) | 非官方方法 — 请务必阅读注意事项 |
固件版本可通过设备信息查询 API(GET /setting/status)的 firmware_version 字段确认。
curl -u admin:<password> "http://192.168.0.30/setting/status"# 示例中的 192.168.0.30 请替换为实际 BATCAM FX 的 IP 地址。响应示例:
{ "error": 0, "result": { "hardware_id": "3287162925128", "sbrio_version": "1.0.14", "firmware_version": "v1.0.3c" }}💡 参考: BATCAM FX 的所有 REST API 均需要 HTTP Basic 认证。设备中默认预先设置了
admin、user两个账户,出厂默认密码请务必更改后再使用。固件更新方法请参阅 BATCAM FX Web 软件更新 或 BATCAM FX Shell 软件更新 文档。
3. 通过 REST API 进行设置(推荐,固件 1.0.3c 以上)
从 BATCAM FX 固件 1.0.3c 版本开始,可通过 REST API 设置 ROS Domain ID。请求/响应模式的详细信息以及实时测试,请参阅 BATCAM FX API 参考 的 ros 标签。
| 方法 | 路径 | 说明 | 请求正文 |
|---|---|---|---|
GET | /ros/domain | 查询当前设置的 ROS Domain ID | 无 |
PATCH | /ros/domain | 更改 ROS Domain ID | multipart/form-data |
PATCH /ros/domain 请求字段:
| 字段 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
domain_id | integer | 必填 | 要设置的 ROS Domain ID |
查询当前值
curl -u admin:<password> "http://192.168.0.30/ros/domain"响应示例:
{ "error": 0, "result": { "domain_id": 123 }}更改值
curl -u admin:<password> -X PATCH "http://192.168.0.30/ros/domain" -F "domain_id=113"响应示例:
{ "error": 0, "result": { "domain_id": 113 }}⚠️ 注意: 在设置生效期间,与摄像头的连接会短暂中断。设置后立即出现连接中断属于正常现象。
4. 旧版本手动设置(固件低于 1.0.3c,非官方)
当您所用环境的 ROS_DOMAIN_ID 不为 0 时,这是目前非官方支持的 ROS_DOMAIN_ID 设置方法。
固件低于 1.0.3c 的 BATCAM FX,或者在其内部运行的 ROS 2 选项中,均不具备添加 DOMAIN_ID 的功能。因此,需要修改用于创建并发布 ROS 2 Node 与 Topic 的 beamforming-camerad 执行服务文件。
⚠️ 注意: 该服务配置为
Restart=always与StartLimitAction=reboot,因此如果错误地修改服务文件,beamforming-camerad 可能会反复重启,进而导致摄像头重新启动。修改前请保留原始内容,并准确遵循下方示例的格式。此外,建议在更新固件之后再次确认设置是否原样保留。
前提条件
- 必须能够通过 SSH 连接到 BATCAM FX。请将下方示例中的
192.168.50.11替换为实际 BATCAM FX 的 IP 地址。
更改顺序
-
通过 ssh 登录 BATCAM FX
-
访问服务执行文件( vi、nano 等 )
-
在 Service 标签中添加 Environment
-
重新加载守护进程及服务文件
-
重启 Beamforming-camerad 或摄像头
更改详情
通过 SSH 登录 BATCAM FX。
ssh root@192.168.50.11# 请根据您所用的环境更改 IP 地址后使用。使用下方命令访问系统执行文件。 编辑器请使用 vi、nano 等您习惯的方式。
nano /lib/systemd/system/beamforming-camerad.service# 或者vi /lib/systemd/system/beamforming-camerad.service请参考下方代码块,在 Service 标签内添加 Environment 值。示例中的 113 可指定为符合您所用环境的 ROS_DOMAIN_ID 值。
[Unit]Description=Batcam FX Camera daemonWants=multi-user.targetAfter=systemd-networkd.service dbus-org.neard.service network.target nvargus-daemon.service setup-account.service
[Service]## 需要添加的部分 — 可根据您所用的环境指定 ROS_DOMAIN_ID。Environment=ROS_DOMAIN_ID=113##ExecStart=/bin/bash -c 'source /opt/ros/humble/local_setup.sh && systemctl restart nvargus-daemon && /opt/ros/humble/bin/beamforming-camerad'Restart=alwaysStartLimitAction=rebootRestartSec=5TimeoutStopSec=30TimeoutStartSec=infinityExecStartPre=/bin/sleep 15# RuntimeMaxSec=86400
[Install]WantedBy=multi-user.target⚠️ 注意: systemd 单元文件不支持行尾注释。若在
Environment=ROS_DOMAIN_ID=113行的后面附加#注释,注释也会被解析为值,导致设置无法生效,因此注释请务必写在单独的行中。
使用下方命令重新加载 systemd daemon。
systemctl daemon-reload重启 Beamforming-camerad 或摄像头。
systemctl restart beamforming-camerad# 或者reboot5. 确认设置
可通过两种方法确认设置是否已应用。
通过 REST API 确认(固件 1.0.3c 以上)
调用 GET /ros/domain,确认返回的 domain_id 是否与所设置的值一致。(请参阅第 3 项的查询示例)
在主机 PC 上通过 ROS 2 话题确认
在主机 PC 的 ROS 2 环境中设置与设备相同的 ROS_DOMAIN_ID 之后,确认话题列表中是否出现 BATCAM FX 的话题。
export ROS_DOMAIN_ID=113 # 指定为与设备上设置的值相同ros2 topic list正常应用的情况下,列表中会出现如下基于摄像头硬件 ID 的话题。
/fx_276730383020104/beamforming/fx_276730383020104/image/fx_276730383020104/lpoint_audio/fx_276730383020104/prpd/fx_276730383020104/ws_audio话题名称中的硬件 ID(hardware_id)可通过设备信息查询 API(GET /setting/status)确认。各话题的消息规范请参阅 FX ROS 系统集成概述 文档。
6. 问题排查 (Troubleshooting)
-
在主机上看不到设备话题时:
-
确认主机与设备的
ROS_DOMAIN_ID是否相同。设备的值可通过GET /ros/domain(固件 1.0.3c 以上)或服务文件的Environment行确认。 -
设备的 ROS 默认
DOMAIN_ID为 123。如果是未另行更改的设备,请在主机上执行export ROS_DOMAIN_ID=123后再次确认。
-
-
REST API 调用以 401 失败时:
- 确认 HTTP Basic 认证凭据(
admin或user账户)是否正确。
- 确认 HTTP Basic 认证凭据(
-
PATCH 之后摄像头连接立即中断时:
- 在设置生效期间连接短暂中断属于正常现象。请稍后重新连接,并通过
GET /ros/domain确认值。
- 在设置生效期间连接短暂中断属于正常现象。请稍后重新连接,并通过
-
手动修改后服务反复重启或摄像头重新启动时:
- 确认
Environment=ROS_DOMAIN_ID=<值>行中是否存在行尾注释或拼写错误,修改后请重新执行systemctl daemon-reload。
- 确认
7. 相关文档
-
FX ROS 系统集成概述 — 话题/消息规范
-
FX ROS Firmware BF/Overlay Parameter Setting (Beta) — 通过 ROS 2 动作设置波束成形/叠加层
-
FX 固件发行说明 — 各版本的 ROS 功能支持历史
-
BATCAM FX API 参考 —
/ros/domain、/setting/status详细模式