1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 使用Autoware标定工具包进行相机和激光雷达的联合标定

使用Autoware标定工具包进行相机和激光雷达的联合标定

时间:2020-03-31 03:20:07

相关推荐

使用Autoware标定工具包进行相机和激光雷达的联合标定

前提摘要:我用的雷达和相机分别是镭神C16型激光雷达和免驱动摄像头

一、编译标定程序

1.创建工作空间

mkdir -p ~/CL_calibration_ws/src

2.下载安装包

cd ~/CL_calibration_ws/srcgit clone /XidianLemon/calibration_camera_lidar.git

3.编译

cd ~/CL_calibration_wscatkin_makesource devel/setup.bash

4.启动标定工具包

新开一个终端

roscore

用原来的终端窗口,执行

rosrun calibration_camera_lidar calibration_toolkit

如果安装成功,则弹出窗口如下所示:

发现出不来这个界面,原因可能是Cmakelist有问题了

这是cmakelist里面的配置文件有问题,把ros版本改成melodic

再次编译就没问题

二、ros驱动雷达

1.配置网络IP和端口号

(1)连接雷达并抓包

发现雷达设备端ip是192.168.4.201,电脑端是192.168.4.200

(2)需要改电脑端的ip

(3)打开镭神官方上位机软件

2.用ros驱动

(1)新开一个终端,启动雷达

source ~/leishen_ws /devel/setup.bashroslaunch lslidar_c32_decoder lslidar_c32.launch --screen

(2)修改launch文件中的ip为192.168.4.201

(3)显示

在这里插入图片描述

三、ros驱动相机

使用的是usb免驱动的摄像头,安装usb_cam这个package之后就可以被ROS调用。

另开终端,操作命令如下:

mkdir -p ~/camera_ws/srccd ~/camera_ws/src git clone /bosch-ros-pkg/usb_cam.git cd ~/camera_ws catkin_make source devel/setup.bash

修改usb_cam包的启动文件usb_cam.launch:

<param name="video_device" value="/dev/video0" />

我用的是笔记本,video0是笔记本自带的摄像头,video1是我的另一个usb外设,我改成video2就可以了

启动摄像头:

roslaunch usb_cam usb_cam-test.launch

四、联合标定-----录制视频

可以用以下命令查看节点流:

rosrun rqt-graph rqt_graph

可以看到激光雷达和相机的话题分别为/lslidar_point_cloud 和 /image_view 。

下面录制包,录制的前提必须把相机和雷达ros驱动起来

rosbag record -a

录制的时候,可以打开rviz看一下,需要在displays中Add相机话题

录制的时候尽量录得长一点,这样的话后续可以有足够的时间调试。

参考别人的说法,录制的时候要手拿标定板,经过六个位置:

近处左、近处中、近处右

远处左、远处中、远处右

经过每个位置的时候,应该有五个动作:

平拿、左倾、右倾、上倾、下倾

我们使用的是12×9,每个方格2CM的标定板

五、录制的视频回放、标定

1.首先打开标定工具箱:

cd ~/CL_calibration_wssource /CL_calibration_ws/devel/setup.bashrosrun calibration_camera_lidar calibration_toolkit

弹出对话框中点击下拉框,选择相机图像节点,根据我们上面查阅的节点流,我们可以知道是/usb_cam/image_view

然后选择 Camera–> Velodyne

点击ok进入下面界面:

0.02是棋盘格每个方框的边长(单位为米),我的棋盘格是9行12列,所以另两个数是8和11。

然后我们先回放一下:

这里要注意,autoware 标定工具箱可以自定义相机话题,但是点云节点是默认的,即 /points_raw , 所以我们回放的时候要把雷达点云重映射一下

刚刚录制的视频在/home目录下,应该是以时间命名的文件

rosbag play 你的录制视频名.bag /lslidar_point_cloud:=/points_raw

单击右边红框内的激光雷达界面,然后按键盘b键,设置背景为白色

这个时候还是看不到点云,此时应该使用键盘调整点云位置,键盘主要操作为:

左右上下键调整点云的上下左右,

q w e a s d可以使点云旋转、缩小和放大,其中缩小或放大的速度可以由鼠标滚轮控制,

小键盘7是恢复鸟瞰图,

p是加深点云,o是使点云变淡。

在播放时找到合适的场景时,点击右上角Grab即可抓取一帧,如果没有反应,可能是没有捕捉到棋盘格,可以再抓取别的时刻。每一帧点云通过单击鼠标左键进行抓取平面。

抓取足够多的帧后(一般是20帧),我一共抓取了20帧,然后需要用鼠标电机右边框里面的点云,直到出现点云矩阵

抓完点完点云之后,一定要把没有点到的点云图、图片和矩阵参数全部删掉,只剩下能用的参数,之后在计算。这步骤无敌重要,不做就完蛋。

最后等到录制视频播放完之后就点击右上角的calibration,进行计算

其中左下角红框是重投影误差,越小越好。

也可以点击project进行验证,如下图所示,红点均匀分布在标定版上,说明结果合理。

点击左上角save,

上面的reprojection error是重投影误差,是指当我们得到一组雷达与相机的标定结果,我们可以将雷达坐标系中的一点通过标定结果投影到相机坐标系下,比较相机坐标系下的投影点与真实点的像素差,就是重投影误差。重投影误差越小,说明联合标定越好。

以下两个都选否:👇

最后得到雷达相机转换矩阵,相机内参。

六、在autoware.ai里面显示融合效果图

1.保存的文件名要以.yaml结尾

将我们标定的结果用上,将三维点云数据投影到图像上,此处借助Autoware自带的Calibration Publisher和Points Image节点能进行融合。因此要单独启动Autoware软件。在Autoware/Sensing/中打开Calibration Publisher,并将保存好的内外参文件读取进来。

打开Autoware/Sensing下的Point Image节点,一般不用修改,默认就ok

2.事先运行录制好的rosbag包,开始播放后按空格暂停,播放指令和之前一样:

rosbag play bagName.bag /velodyne_points:=/points_raw

一定一定一定要等bag包播放完。

3.然后重选yaml和USB_CAM文件,一定要重选,重选不行多选几遍。

4.最后显示融合效果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。