(参考:sjtu2021雷达开源,pcl_matcher,群内聊天记录) 一共可以分为三步:1. 手动四点标定 2. icp精匹配 3.通过差分得到动态障碍物
-
手动四点标定: 第一个部分就是要创建一个可以相应鼠标点击的ui界面,进行人为选点标定;然后是接入capture类获取相关相机参数;在另外一个参数文件中,写入标定用位姿估计常量相关参数;显示提示按一定顺序进行标定;利用标定用位姿估计常量,设定世界坐标系;然后设置opencv中各种常量和窗口,进入标定主循环:利用mousecallback函数和自己写的callback函数获取鼠标点击,然后在图像上画出标定点,并首尾相连;利用solvepnp,解算得到field->camera变换矩阵;写一个暂存函数,暂存得到的标定信息,经过一共三次标定(个人认为可以找地图上三组不同的有特点的点组,不应该用同样的四个点一直标定)
-
ICP精匹配: 已知条件:1.四点标定给出的旋转和平移矩阵,以下称为ctf(camera_to_field)变换矩阵,因为相机和雷达的位置关系,我们可以在ctf变换矩阵上与camera_to_lidar变换矩阵得到lidar_to_field变换矩阵(记为ltf变换矩阵),ltf变换矩阵可以作为icp回归问题的初始变换矩阵。2.lidar的点云和赛场先验点云建模,前者为source点云,后者为target点云。
-
差分得到动态障碍物: 这里还没有很好的思路,但是想到jjy做的拓扑图,结合视觉的定位信息,有一个这样的思路。拓扑图相当于可以给出车辆行驶经过某一个区域的的可行性,这里可以做一个置信度的实现;而后视觉的定位信息可以拿到在雷达坐标系下车辆的定位信息,那么设置一定的聚类半径就可以得到动态障碍物,然后结合拓扑图给出的置信度信息,可以滤除错误的动态障碍物信息
如何选取可以高效完成标定的地图上的点;三组标定一定是最好的吗,可不可能过多或者还不够,可能需要实验;如何验证得到的变换矩阵是正确的,以及如何完成测试,如何设置合理的角点顺序
保证从相机的初始位姿到lidar的初始位姿变换的正确性;icp算法运算量O(mn),如何优化算法,在我们帧率本就不高的前提之下,是否需要尝试别的算法,对外参矩阵的精度要求高
难点:阈值的选取怎样是合适的阈值,保证不会让静态障碍物变成动态。算法优化(如果可以的话)