--关注、星标、回复“26262”--
↓↓领取:ISO 26262↓↓
(资料图片仅供参考)
原文链接:https://zhuanlan.zhihu.com/p/55825255
最近在为车辆添加障碍物检测模块,障碍物检测可以使用激光雷达进行物体聚类,但是我们使用的是16线的velodyne,线数还是有些稀疏,对于较远的物体过于稀疏的线数聚类效果并不好,因此考虑使用视觉进行目标检测,然后投影到3D点云里面,获取障碍物位置,同时视觉还可以给出障碍物类别信息。
使用视觉进行目标检测,将检测结果2D bounding box坐标信息投影到点云里面获得3D bounding boxx坐标,这里面需要将摄像头和激光雷达进行联合标定,即获取二者坐标系的空间转换关系。
相关代码已经同步到我的github-smartcar:https://github.com/sunmiaozju/smartcar
标定部分在detection/calibration文件夹, 信息融合部分在detection/camera_point_fusion
联合标定的作用就是建立点云的point和图像pixel之间的对应关系,
需要获取相机与激光雷达外参,将点云3维坐标系下的点投影到相机3维坐标系下。
还需要通过相机标定获得相机内参,这个是把相机3维坐标系下的点投影到成像平面。具体如下所示:
上图显示的就是联合标定得到的4×4转换矩阵的作用,将我们的3D点云转换到相机坐标系下面
这幅图显示了相机坐标系和成像坐标系的关系,相机标定会得到相机内参矩阵和畸变系数,畸变系数可以消除相机凸透镜的畸变效应,相机内参的信息就可以想相机坐标下的3维点投影到2维的像素平面。相机标定的具体原理可以参考:https://zhuanlan.zhihu.com/p/24651968
相机标定
需要一个标定板,要硬质板或者泡沫的标定板,因为标定板的平面要保证是平的。标定板的文件可以到opencv官网下载。
首先做相机标定,相机标定模块在detection/calibration/camera_calibration
编译
这里我们先不编译ndt_mapping;static_map;ndt_localization这三个软件包
如果出错,可以先编译消息文件,再编译全部文件:
然后要修改detection/calibration/camera_calibration/nodes文件夹下面python文件的可执行权限:
启动摄像头驱动节点
然后就可以进行标定了,弹出的界面如下所示:
需要做的就是移动标定版,让右上角的四个条都变绿(我这里绿的是已经调好了,未调整是偏黄色)
x代表左右移动,y代表上下移动,size代表远近移动,skew代表倾斜侧角,可以上下倾,也可以左右倾。
只有四个尺度的信息都满足要求之后,右侧的calibration图标才会显示出来,这时候代表可以计算标定结果了,点击calibration,然后save,标定结果会保存在home文件夹下面。
联合标定使用的是autoware的CalibrationTookit模块,代码在detection/calibration/calibration_camera_lidar文件夹下面
编译好代码之后,首先要启动摄像头和激光雷达的驱动节点
启动之后可以看到UI界面,具体操作指南,可以参考文档:detection/calibration/calibration_camera_lidar/CalibrationToolkit_Manual.pdf 的2.3节
-- END --
标签:
Copyright © 2015-2032 华西消费网版权所有 备案号:京ICP备2022016840号-35 联系邮箱: 920 891 263@qq.com