说到激光雷达的算法,其实是有一个过程的,按照我们人类的感知去做一件事情,激光雷达就好像人类的眼睛一样,我们再去了解眼前的物体的时候,我们通常的做法是用眼睛去观察,那么激光雷达的做法是一致的,我们首相要对物体进行扫描,在对物体进行学习对比,经过对比之后再去确定这个物体是什么,其中有两点需要注意,一个是对比的对象以及对比的知识库从哪里来的?我们从小孩开始的时候都会有父母引导我们去了解周边的事物,我们的 父母也是我们的老师,给到你一件事情的对与错的答案,对于机器学习,那么我们人类给到的训练就是我们对比的数据库,我们将如何去对比,以及对比的特征点告诉了激光雷达,激光雷达首先是整体做一次扫描,然后根据扫描的结果组成一个3D的数据模型,相当于一个坐标点集合一样,以上的是我看了书之后的观点,但是没有实际的论据证明这些,而我们的书中从第三章开始,从激光雷达的扫描、外参标定、地平面分割,聚类分割,这些基础的图像扫描再到深度学习,,目标检测以及目标跟踪,最终到组合定位,多传感器的融合的阶段,是作者对于整个激光雷达的期盼,我今天就和大家来一起学习以下关于激光雷达的一些算法吧。
首先说一下,关于激光雷达的应用,通常的情况下是二维的应用,和3维的应用,二维和三维的应用是完全不一样的,对应的算分等级也是差距非常大的,在专业术语中被称为单线激光雷达算法和多线激光雷达算法其特点如下:
- 单线激光雷达算法:
- 主要应用于平面运动场景,构建的是二维地图。
- 典型的算法包括gmapping、hector、karto、cartographer等,这些算法都是基于粒子滤波或优化方法构建的二维栅格地图。
- 多线激光雷达算法:
- 可应用于三维运动场景,能够构建三维环境地图。
- 较为知名的算法有LOAM、LeGO-LOAM、LOAM-livox等,这些算法侧重于从多线激光雷达数据中提取特征点,并进行帧间匹配和地图构建。
我们书中提到的多是3D的激光累的的算法。
第一阶段:
在该阶段的标定中,SSAC算法根据地面点云求解俯仰角pitch、横滚角ro和纵向位移(即高度)4。如图3-3所示,我们注意到,当LDAR坐标系和车体坐标系有角度偏差时例如在 pitch 角度分量有顺时针方向的俯仰角,则水平地面在LiDAR坐标系下将呈现逆时针方向的倾角y。这是第一阶段的基本步骤,然后就是建立粒子群优化工作,按照算法流程进行不断地迭代,直到数据达到一个设定的阈值。
第二阶段:
在该阶段的标定中,SSAC算法仅考虑激光雷达相对车体偏航角的标定。具体过程如下假设车辆沿着世界坐标系的x轴直线行驶,记录车辆行驶过程中包含同一个标定杆的激光点云,通过高程滤波等方式提取出标定杆,再采用K均值算法得到标定杆的点云聚类中心,在世界坐标系的OX一维平面上,将每标定杆中心经最小二乘法拟合,得到一条真线,
上面的两个阶段主要是完成了扫描和粒子关系的建立,以及粒子集合的运算。
接下来就是根据上面获得的粒子的数据,进行坐标的建立以及方位的标定
在本书中使用的是基于手眼模型的LIDAR外参标定,然后使用NaVY算法求解手眼模型,,这样的话就可以建立出一个3D的模型,
实际上,激光雷达的算法分类并不是孤立的,很多算法都是基于多种技术和方法的综合应用。例如,一个完整的激光雷达系统可能同时包含障碍物检测、目标识别、运动估计和地图构建等多种算法,这些算法之间会相互协作,共同完成复杂的环境感知任务。激光雷达的算法分类是一个复杂而多元的领域,涵盖了从单线到多线、从二维到三维、从障碍物检测到地图构建等多个方面。随着技术的不断发展,激光雷达算法也在不断演进和完善,为自动驾驶、机器人导航等领域提供了强大的技术支持。
好了,今天主要和大家讲的是3D模型里面的基础理论,我自己也还是不太懂里面的算法和具体的公式的来源推导,但是算是了解了激光雷达的基本运行原理以及模型的建立,后面会根据自己的学习再来进行分享。