发布传感器数据
使用 LCM 发布数据
HoloOcean 支持将数据发布到轻量级通信和编组(Lightweight Communications and Marshalling, LCM),LCM 是一种用于在不同进程之间通信的消息系统。这允许您将传感器数据发布到 LCM 通道,这些通道可用于与其他系统通信。
LCM 配置在场景文件中进行。LCM 将数据发布到称为提供程序的介质。提供程序可以是本地、网络、日志文件等。可以在场景文件的头部指定提供程序。有关选项,请参阅此处。如果未指定提供程序,HoloOcean 将使用默认的 LCM udqm。
{
"name": "{Scenario Name}",
"world": "{world it is associated with}",
"lcm_provider": "file:///home/lcm.log"
"agents":[
"array of agent objects"
]
}
选定服务提供者后,HoloOcean 会单独发布每个传感器。lcm_channel 参数在传感器配置中设置。如果未指定通道,则不会发布该传感器。
{
"sensor_type": "RGBCamera",
"sensor_name": "FrontCamera",
"lcm_channel": "CAMERA",
}
使用 ROS2 Bridge 发布数据
ROS2(机器人操作系统)是一款流行的机器人开发中间件。我们开发了 ROS2 桥接包,使用户能够将 ROS2 与其他中间件系统(例如 LCM 和 HoloOcean)连接起来。这样,您就可以使用 ROS2 控制 HoloOcean 智能体,并将传感器数据发布到 ROS2 主题。
此功能专为与福森车辆动力学实现配合使用而编写。
安装
使用 ROS2 Bridge 需要下载一个单独的软件包。安装 HoloOcean 后,将以下仓库克隆到 ROS2 工作区:https://github.com/byu-holoocean/holoocean-ros
警告
-
目前,ROS2 桥接器仅支持单代理场景。
-
在虚拟环境(例如 conda)中运行 holoocean 和 ROS2 可能会导致依赖关系问题。
-
仿真速度可能会达到极限,从而导致计时误差。
holoocean 的 ROS 工作空间与 Humble 安装的 ROS2 兼容。请按照 ROS2 安装教程 进行操作。
使用方法
在 ROS 工作空间中构建软件包后,即可运行示例控制器:
source /opt/ros/humble/setup.bash
colcon build
source install/setup.bash
ros2 launch holoocean_main torpedo_launch.py
请按照 ROS2 文档构建用于控制 holoocean 环境的节点。
holoocean_main 节点:
-
订阅控制器命令
-
发布 holoocean 状态下返回的传感器数据
-
创建一个定时器来向环境发送节拍信息
holoocean 发布者将使用命名空间“holoocean”(请参阅 ROS 文档中关于命名空间的说明)。主题名称将与传感器的场景名称保持一致。如果没有指定名称,则主题名称将与传感器类型相同。
Holoocean接口包:
- 包含用于发布传感器数据的消息和服务
command_example节点:
-
按指定时间间隔发布随机HSD命令
-
或者发布预先编程的HSD命令序列
发布您自己的传感器
ROS2 桥接器可以配置为与自定义传感器配合使用。在 HoloOcean 中实现您的传感器(参见开发传感器)后,请按照以下步骤发布您的传感器数据:
-
在
holoocean_interfaces目录下创建一个.msg文件(例如SensorData.msg) -
将
.msg文件添加到 CMake 列表中(例如msg/SensorData.msg) -
在传感器数据转换器文件中:
-
在 convert_to_msg 函数中添加一个 elif 语句
-
向 sensor_keys 表中添加一个键
-
在文件的第一行导入消息对象(例如 from holoocean_interfaces.msg import SensorData)
-
添加一个将数据编码为 ROS 消息的函数
-
运行以下代码以重新构建您的 ROS2 工作区:
source /opt/ros/humble/setup.bash
colcon build
source install/setup.bash
记录数据
您可以使用 ros2bag 记录 HoloOcean 环境中的数据。安装 ros2bag 后,您可以在 ros2_ws 文件夹中运行如下命令来记录传感器数据或命令:
source install/setup.bash
ros2 bag record /holoocean/desiredHSD /holoocean/RotationSensor /holoocean/LocationSensor -o /path/to/save_data
您可以点击此处阅读 ROS2 文档,了解更多关于录制和回放 ROS2 bag 数据的信息。