跳到主要内容

双目OCC算法

功能介绍

双目OCC算法订阅双目图像,利用BPU进行算法推理,发布占用网格信息。

代码仓库:(https://github.com/D-Robotics/dstereo_occnet)

支持平台

平台运行方式示例功能
RDK X5, RDK X5 ModuleUbuntu 22.04 (Humble)启动双目相机,并通过Web展示双目图像,rviz2展示占用网格结果

准备工作

RDK平台

  1. RDK已烧录好Ubuntu 22.04系统镜像。

  2. RDK已成功安装TogetheROS.Bot。

  3. 如果要实时在线推理,目前只支持搭配ZED-2i相机;如果要离线推理,请准备好双目图像。

  4. 确认PC机能够通过网络访问RDK。

版本要求

版本要求查询方式
系统版本3.2.3在RDK X5板端执行:cat /etc/version
dstereo_occnet功能包版本1.0.0在RDK X5板端执行:apt list | grep tros-humble-dstereo-occnet/
hobot_zed_cam功能包版本2.3.3在RDK X5板端执行:apt list | grep tros-humble-hobot-zed-cam/

使用介绍

1. 搭配ZED-2i相机

  • 需要配合hobot_zed_cam功能包一起使用
  • 在RDK X5上执行以下命令:
# 配置tros.b humble环境
source /opt/tros/humble/setup.bash

# 启动ZED-2i相机和占用网络推理程序
ros2 launch dstereo_occnet zed2i_occ_node.launch.py

程序启动后可以通过网页查看ZED-2i发布的双目图像、以及通过rviz2查看占用网格

通过web端查看双目图像,在PC端浏览器输入http://ip:8000即可查看双目图像,ip为RDK X5板端的ip,例子中为192.168.128.10,并且要保证PC和RDK X5能通过网络通讯 ZED-2i-stereo-img

通过rviz2可查看占用网格,需要搭建一个Ubuntu22.04 + ROS2 Humble的上位机,并且上位机和RDK X5板端能够通过ROS2通讯,然后启动rviz2,具体设置如下: rviz2-occ

  • 如需保存结果请加入以下参数:
# 配置tros.b humble环境
source /opt/tros/humble/setup.bash

# 启动ZED-2i相机和占用网络推理程序
ros2 launch dstereo_occnet zed2i_occ_node.launch.py \
save_occ_flag:=True save_occ_dir:=./occ_result save_freq:=4 save_total:=10

2. 使用自定义数据离线推理

  • 需要准备离线数据上传到RDK X5板端,离线数据的格式如下:

    • 离线目录需要包含左右图片,程序会进行判断,左图需要包含left字段,格式为png或者jpg,右图需要包含right字段、其它和左图一致
    • 图像分辨率为640*352,不支持其它分辨率
    • 左右图需要进行矫正,达到极线对齐的状态
    • 由于目前采用ZED-2i的数据训练模型,所以尽量使离线图像的内参接近ZED-2i,ZED-2i相机参数为: fx=354.9999, fy=354.9999, cx=322.9469, cy=176.2076, baseline=0.12
  • 在RDK X5上执行以下命令:

ros2 launch dstereo_occnet offline_infer_web_visual.launch.py \
local_image_dir:=./offline_images save_occ_flag:=True save_occ_dir:=./offline_result

程序启动后同样可以通过网页查看ZED-2i发布的双目图像以及通过rviz2查看占用网格

功能包说明

参数

名称参数值说明
stereo_msg_topic默认 /image_combine_raw订阅的双目图像话题名称
camera_info_topic默认 /image_combine_raw/camera_info订阅的相机内参话题名称
occ_model_file_path默认 X5-OCC-32x64x96x2_constinput_modified.bin双目占用网络模型的路径
use_local_image默认 False是否使用离线推理
local_image_dir默认 config离线推理存放图片的目录
save_occ_flag默认 False是否保存推理结果
save_occ_dir默认 ./occ_results保存推理结果的目录
save_freq默认 1保存频率,例如设置为4代表每隔4帧保存1次,默认每帧推理结果都保存
save_total默认 -1保存总数,例如设置为10代表总共保存10帧结果,-1代表一直保存
voxel_size默认 0.02每个占用网格的大小,单位m,0.02代表每个占用网格为2*2*2cm
log_level默认 INFO日志等级,默认INFO

订阅话题

话题名称消息类型说明
/image_combine_rawsensor_msgs::msg::Image订阅双目图像,图像格式为NV12,图像要求上下排列,上面是左图,下面是右图,可以通过stereo_msg_topic参数修改
/image_combine_raw/camera_infosensor_msgs::msg::CameraInfo订阅相机内参,可选,不一定要有该话题,有该话题可以在保存结果时把相机参数一起保存

发布话题

名称消息类型说明
/dstereo_occnet_node/voxelsensor_msgs::msg::PointCloud2发布的占用网格数据,可以使用rviz2显示