视觉激光雷达信息融合与联合标定


【视觉激光雷达信息融合与联合标定】重磅干货 , 第一时间送达
本文转自|新机器视觉
编者按
最近在为车辆添加障碍物检测模块 , 障碍物检测可以使用激光雷达进行物体聚类 , 但是我们使用的是16线的velodyne , 线数还是有些稀疏 , 对于较远的物体过于稀疏的线数聚类效果并不好 , 因此考虑使用视觉进行目标检测 , 然后投影到3D点云里面 , 获取障碍物位置 , 同时视觉还可以给出障碍物类别信息 。
使用视觉进行目标检测 , 将检测结果2D bounding box坐标信息投影到点云里面获得3D bounding boxx坐标 , 这里面需要将摄像头和激光雷达进行联合标定 , 即获取二者坐标系的空间转换关系 。
联合标定转换关系
联合标定的作用就是建立点云的point和图像pixel之间的对应关系 ,
需要获取相机与激光雷达外参 , 将点云3维坐标系下的点投影到相机3维坐标系下 。
还需要通过相机标定获得相机内参 , 这个是把相机3维坐标系下的点投影到成像平面 。 具体如下所示:
上图显示的就是联合标定得到的4×4转换矩阵的作用 , 将我们的3D点云转换到相机坐标系下面
视觉激光雷达信息融合与联合标定
本文插图
这幅图显示了相机坐标系和成像坐标系的关系 , 相机标定会得到相机内参矩阵和畸变系数 , 畸变系数可以消除相机凸透镜的畸变效应 , 相机内参的信息就可以想相机坐标下的3维点投影到2维的像素平面 。 相机标定的具体原理可以参考
三、相机标定
需要一个标定板 , 要硬质板或者泡沫的标定板 , 因为标定板的平面要保证是平的 。 标定板的文件可以到opencv官网下载 。
首先做相机标定 , 相机标定模块在detection/calibration/camera_calibration
编译
这里我们先不编译ndt_mapping;static_map;ndt_localization这三个软件包
如果出错 , 可以先编译消息文件 , 再编译全部文件:
然后要修改detection/calibration/camera_calibration/nodes文件夹下面python文件的可执行权限:
启动摄像头驱动节点
这里注意你自己的摄像头video_id , 使用如下命令查看
然后根据需要修改your_path/driver/cv_camera/launch/cv_camera_driver.launch里面的
新开一个终端 , 执行
然后就可以进行标定了 , 弹出的界面如下所示:
视觉激光雷达信息融合与联合标定
本文插图
需要做的就是移动标定版 , 让右上角的四个条都变绿(我这里绿的是已经调好了 , 未调整是偏黄色)
x代表左右移动 , y代表上下移动 , size代表远近移动 , skew代表倾斜侧角 , 可以上下倾 , 也可以左右倾 。