云服务器内容精选

  • 构建镜像 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 运行结果
  • 作业输入输出规范 用户完成自定义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文件内容
  • 构建镜像 Octopus平台依赖算子镜像内的/bin/bash、stdbuf、tee软件,请确保基础镜像内包含上述软件且能通过PATH找到。 Dockerfile示例。 图4 Dockerfile示例 启动命令: bash /home/Octopus/run.sh 镜像构建: docker build -f Dockerfile -t guikong:0.1 容器启动脚本示例。 图5 启动脚本示例 Resim结果转json示例 图6 Resim结果转json示例 Json转pb文件示例 图7 Json转pb文件示例 本地调试。 命令示例: docker run -v ${HOME}/workspace/guikong/2022-09-23-15-26-54_6.bag_pnc.bag:/tmp/input.bag -v ${HOME}/workspace/output:/tmp/output --env rosbag_path=/tmp/input.bag --env output_dir=/tmp/output --entrypoint /bin/sh guikong-demo:0.1 “-c” “bash /home/Octopus/run.sh” 运行后查看输出结果: 图8 输出结果 确定算法输出、yaml和_SUC CES S标识文件都存在,且文件所有人可读。
  • 作业输入输出规范 运行resim容器时,Octopus平台向容器中注入以下环境变量: rosbag_path: 作为输入的rosbag存放路径,例如/tmp/data/20220620.bag output_dir: resim作业的运行结果输出的目录,例如/tmp/output tmp_dir: 供resim作业存放临时文件的目录,例如/tmp/workspace 用户的resim作业需要输出的文件类似如下结构: |--- /tmp/output 环境变量output_dir指定的输出目录 |--- opendata_to_platform.yaml 输出描述文件,详情见下文 |--- _SUCCESS 作业完成后输出的标识文件,内容可为空 |--- planning 以下各文件夹为resim算法输出内容,按照topic分隔,命名可自定义,与opendata_to_platform.yaml内一致即可,尽量用常见字符 |--- planning.pb |--- perception |--- perception.pb |--- prediction |--- prediction.pb |--- … opendata_to_platform.yaml内容描述输出的文件夹内的输出内容分别对应哪种数据类型,内容示例如下: folders: - folder: planning # 与实际输出的目录名一致 sensor_type: planning_trajectory # 路径规划类型 - folder: perception # 与实际输出的目录名一致 sensor_type: object_array_vision # 感知类型 - folder: prediction # 与实际输出的目录名一致 sensor_type: predicted_objects # 感知物预测类型 当前resim作业支持的输出类型为planning_trajectory 、object_array_vision 、predicted_objects 3种,Proto格式定义分别如下: 图1 planning_trajectory格式定义 图2 object_array_vision格式定义 图3 predicted_objects格式定义