camera+ 入门_Camera-Lidar Calibration with Autoware

本文介绍了在Autoware上进行camera+激光雷达联合标定的详细步骤,包括环境配置、安装Autoware、解决编译问题、录制标定素材、修改话题名称以避免冲突,以及注意事项,确保点云正确投影到图像上。
摘要由CSDN通过智能技术生成

(专栏的文章可以增加目录吗……为什么界面这么丑……

5ecb0ae0320af97905c2851007757690.png
使用了9帧图像-点云标定后得到的结果(不是特别精确

安装环境:Ubuntu16.04 + ROS Kinetic + CUDA9.0 + Python2.7

使用硬件:速腾聚创16线激光雷达 + USB相机

1 安装 Autoware

1.1 写在前面

  • 容器方式:v1.11.0 版本安装后界面中没有 Calibration Tool Kit(游戏结束)
  • 源码方式:安装需要 C++14,注意 ~/.bashrc 里不要 alias g++='g++ -std=c++14'

1.2 安装步骤

官方指南:autowarefoundation/autoware

  1. 将源码克隆到$HOME目录下,执行git submodule update --init --recursive
  2. v1.11.0版本要 colcon,我们失败了(colcon的安装要先添加key,点这里),请看3
  3. 取而代之的,使用git checkout v1.10.0切换到支持catkin_make的最新版本
  4. 按照官方指南,依次执行命令,装好必须的依赖
  5. ~/Autoware/ros目录下执行./catkin_make_release
  6. 然后是踩坑时间:

第一个报错:Python2.7找了Python3.5中的YAML库,将2.7的路径提前即可:

export PYTHONPATH=/usr/bin/python2.7/dist-packages/:$PYTHONPATH >> ~/.bashrc

第二个报错:PCL_INFO ("......") requires a indicator before statement:注释出错行

第三个报错:#error "PCL requires C++14 or above":检查了编译参数已经gnu++14,故直接到出错文件pcl_config.h注释该行

7. 继续编译成功,回到~/Autoware/ros执行./run,输入密码进入主界面

2 联合标定

参考:无人驾驶汽车系统入门(二十二)——使用Autoware实践激光雷达与摄像机组合标定

2.1 刷新环境

echo "source ~/Autoware/ros/devel/setup.bash" >> ~/.bashrc

2.2 录制标定视频素材

  1. 打开:Autoware->ROSBAG,选择话题/usb_cam/image_raw/points_raw
  2. 按照参考教程中的方式,将标定板变换不同角度,采集一段视频序列,作为标定素材
  3. 按照参考教程中的步骤,完成标定过程,得到相机与雷达的内外参数、畸变矩阵(.yml

2.3 可视化投影点云

除了下面的步骤,大致可按照参考教程顺利进行

2.3.1 修改雷达源数据话题

这一步,修改(或转发)你的雷达节点发出的数据话题名为/points_raw

  1. 为了正确实现标定,我们需要让工具箱的节点订阅到我们的雷达源数据和图像源数据
  2. 在ROS中,话题的订阅和发布是通过注册话题名来实现的,发布者与订阅者需要相同名字
  3. 在Autoware的源码中,写死了订阅雷达源数据的话题名为/points_raw
  4. 在Autoware的Calibration Toolkit中,仅可修改图像源数据的话题名,Image Source Topic
  5. 为了让节点订阅到正确的话题,我们修改自己的雷达发出的话题名为/points_raw
  6. rostopic echo /points_raw,检查修改之后的话题是否在发布点云数据

2.3.2 检查相机源数据话题

这一步,检查相机发布的话题是否会与 Calibration Publisher 发布的话题发生冲突

  1. rostopic list查看话题列表,这里由相机发布的是/usb_cam开头的topic
  2. 话题列表中可以找到/usb_cam/image_raw/usb_cam是相机的 ID
  3. /calibration_publiser发布/camera_info和投影矩阵/projection_matrix
  4. /points2image必须正确订阅以上两个话题,才能完成点云到图像上的投影
  5. 假设选择/usb_cam作为Camera_ID ,Points Image 将订阅/usb_cam/camera_info
  6. 尝试修改 Calibration Publisher 的发布话题名为/usb_cam/camera_info
  7. 此时与相机发布的话题冲突,体现为终端报错:[/points2image] Process died
  8. 因此修改points2image.launch,删除$(arg camera_id),即去掉话题名前缀
  9. 现在,Points Image 的订阅话题将不再以Camera_ID作为前缀
  10. rosnode info /points2image,确保其订阅源为/calibration_publisher

3 注意事项

  • 必须先打开软件中的 Calibration Toolkit 、Points Image 、Rviz,再打开相机雷达,否则 Calibration Toolkit 无法找到正确的标定文件路径(即使设置了),这是终端上的表现为:[/calibration_publisher] process died
  • 在打开相机、雷达之前,仔细检查终端 echo 的消息中,上述两个工具的话题订阅信息
  • camera_frame、lidar_frame 的设置仅影响 Rviz 中的原点坐标,应该与雷达、相机话题发布者源码中的frame匹配,否则原点对不上,投影就乱了
  • 但 frame 设置不会影响/points_image的正确显示,上述的话题订阅关系才是关键
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值