一、前言
此示例演示如何通过分割地平面并查找附近的障碍物来处理来自安装在车辆上的传感器的 3-D 激光雷达数据。这可以促进车辆导航的可驾驶路径规划。该示例还演示如何可视化流式激光雷达数据。
二、创建 Velodyne 文件读取器
本例中使用的激光雷达数据是使用安装在车辆上的传感器记录的。设置对象以读取记录的PCAP 文件。
三、读取激光雷达扫描
激光雷达数据的每次扫描都存储为三维点云。使用快速索引和搜索高效处理此数据是传感器处理管道性能的关键。这种效率是使用对象实现的,该对象使用 K-d 树数据结构在内部组织数据。
为每个激光雷达扫描构建一个组织。属性是一个 M×N×3 矩阵,包含点的 XYZ 坐标(以米为单位)。点强度存储在中。
四、设置流点云显示
可用于可视化流式点云数据。通过配置车辆周围要显示的区域。
在这个例子中,我们将分割属于地平面、自我车辆和附近障碍物的点。设置用于标记这些点的颜色图。
五、分割自我车辆
激光雷达安装在车辆顶部,点云可能包含属于车辆本身的点,例如在车顶或引擎盖上。了解车辆的尺寸后,我们可以分割出最接近车辆的点。
创建用于存储车辆尺寸的对象。
指定激光雷达在车辆坐标系中的安装位置。车辆坐标系以后桥中心为中心,位于地面上,正 X 方向指向前方,正 Y 方向指向左侧,正 Z 方向朝上。在此示例中,激光雷达安装在车辆的顶部中心,平行于地面。使用辅助功能分割自我车辆。此功能分割由自我车辆定义的长方体内的所有点。将分割的点存储在结构中。使用分段的自我车辆可视化点云。
六、分割地平面和附近的障碍物
为了从激光雷达数据中识别障碍物,首先使用该函数对地平面进行分割以完成此操作。此功能从有组织的激光雷达数据中分割属于地面的点。
通过使用点云上的函数删除属于自我车辆和地平面的点。指定 as 以保留点云的组织性质。
接下来,通过寻找距离自我车辆一定半径内不属于地面或自我车辆的所有点来分割附近的障碍物。此半径可以根据激光雷达的范围和感兴趣区域来确定,以便进一步处理。
七、过程激光雷达序列
现在,单个激光雷达扫描的点云处理管道已经布置好,请将所有这些放在一起以处理记录的数据序列。下面的代码被缩短了,因为关键参数已在前面的步骤中定义。在这里,使用参数没有进一步解释。
八、程序
使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)
程序有偿获取:评论区下留言,博主看到会私信你。