(专栏的文章可以增加目录吗……为什么界面这么丑……
安装环境: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
- 将源码克隆到
$HOME
目录下,执行git submodule update --init --recursive
- v1.11.0版本要 colcon,我们失败了(colcon的安装要先添加key,点这里),请看3
- 取而代之的,使用
git checkout v1.10.0
切换到支持catkin_make
的最新版本 - 按照官方指南,依次执行命令,装好必须的依赖
- 在
~/Autoware/ros
目录下执行./catkin_make_release
- 然后是踩坑时间:
第一个报错: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 录制标定视频素材
- 打开:Autoware->ROSBAG,选择话题
/usb_cam/image_raw
和/points_raw
- 按照参考教程中的方式,将标定板变换不同角度,采集一段视频序列,作为标定素材
- 按照参考教程中的步骤,完成标定过程,得到相机与雷达的内外参数、畸变矩阵(.yml
2.3 可视化投影点云
除了下面的步骤,大致可按照参考教程顺利进行
2.3.1 修改雷达源数据话题
这一步,修改(或转发)你的雷达节点发出的数据话题名为/points_raw
- 为了正确实现标定,我们需要让工具箱的节点订阅到我们的雷达源数据和图像源数据
- 在ROS中,话题的订阅和发布是通过注册话题名来实现的,发布者与订阅者需要相同名字
- 在Autoware的源码中,写死了订阅雷达源数据的话题名为
/points_raw
- 在Autoware的Calibration Toolkit中,仅可修改图像源数据的话题名,Image Source Topic
- 为了让节点订阅到正确的话题,我们修改自己的雷达发出的话题名为
/points_raw
rostopic echo /points_raw
,检查修改之后的话题是否在发布点云数据
2.3.2 检查相机源数据话题
这一步,检查相机发布的话题是否会与 Calibration Publisher 发布的话题发生冲突
rostopic list
查看话题列表,这里由相机发布的是/usb_cam
开头的topic- 话题列表中可以找到
/usb_cam/image_raw
,/usb_cam
是相机的 ID /calibration_publiser
发布/camera_info
和投影矩阵/projection_matrix
/points2image
必须正确订阅以上两个话题,才能完成点云到图像上的投影- 假设选择
/usb_cam
作为Camera_ID ,Points Image 将订阅/usb_cam/camera_info
- 尝试修改 Calibration Publisher 的发布话题名为
/usb_cam/camera_info
- 此时与相机发布的话题冲突,体现为终端报错:
[/points2image] Process died
- 因此修改
points2image.launch
,删除$(arg camera_id)
,即去掉话题名前缀 - 现在,Points Image 的订阅话题将不再以
Camera_ID
作为前缀 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
的正确显示,上述的话题订阅关系才是关键