自动驾驶云服务 Octopus
自动驾驶云服务 Octopus
- 功能总览
- 产品介绍
- 快速入门
- 用户指南
- API参考
- SDK参考
- 常见问题
- 文档下载
- 通用参考
链接复制成功!
Rosbag转OpenData作业(数据回放)
作业输入输出规范
用户完成自定义Rosbag转OpenData算子创建,运行作业容器时Octopus平台向其中注入以下环境变量:
- rosbag_path: 作为数据源的rosbag存放路径,例如/tmp/data/20220620.bag
- yaml_path: 启动数据收集任务的yaml文件路径,例如/tmp/Octopus_data_collections.yaml
- output_dir: rosbag数据包作业运行结果输出目录,例如/tmp/output
- tmp_dir: 供用户存储作业临时文件的目录,例如/tmp/workspace
用户的作业容器需要解析rosbag,并将转换结果输出到output目录,结果示例如下:
图1 output目录

每个传感器提取的数据保存在单独的文件夹,其中camera和lidar传感器提取的样本文件必须以时间戳命名。任务结束标志文件,_SUCEESS或_FAILURE分别代表任务成功或失败。opendata_to_platform.yaml文件以yaml格式记录该OpenData数据包的元数据,格式如下:
图2 文件格式

sensor_type字段标识传感器类型,可取以下值:camera、lidar、gnss、vehicle、ego_tf、object_array_vision、traffic_light_matched、tag_record、planning_trajectory、predicted_objects、control、routing_path、localization_visualization。具体定义参考数据包格式。
图3 示例opendata_to_platform.yaml文件内容

示例代码
以下为主程序文件ros2opendata.py中截取的代码片段,分别运行不同的功能,详见注释。
图4 运行前准备

图5 解析点云消息

图6 解析gnss消息

图7 写opendata_to_platform.yaml文件

构建镜像
Octopus平台依赖算子镜像内的/bin/bash、stdbuf、tee软件,请确保基础镜像内包含上述软件且能通过PATH找到。
- Dockerfile示例
图8 示例
启动命令:
python3 /home/main/ros2opendata.py --lidar_calibration_id 5
- 构建镜像
docker build -f dockerfile -t rosbag2opendata:0.1 .
- 本地调试
准备一个待处理的rosbag,如~/data/20220620.bag,一个示例Octopus_data_collections文件,如~/data/Octopus_data_collections.yaml运行如下命令(基于上述示例镜像):
docker run -v ${HOME}/data/20220620.bag:/tmp/data/20220620.bag -v ${HOME}/tmp/output:/tmp/output -v ${HOME}/data/Octopus_data_collections.yaml:/tmp/Octopus_data_collections.yaml --env output_dir=/tmp/output --env rosbag_path=/tmp/data/20220620.bag --env yaml_path=/tmp/Octopus_data_collections.yaml --env tmp_dir=/tmp/workspace rosbag2opendata:0.1 /bin/sh -c “/home/main/ros2opendata.py --lidar_calibration_id 5”
完成后在${HOME}/tmp/output目录查看运行结果文件:
图9 运行结果
父主题: 算子示例