设计一个可自动驾驶的LiDAR反射器探测车
我是一名程序员,也是摩托车爱好者,业余时间曾制作过多个与摩托车相关的硬件项目。这次,我想打造一个真正能行驶的装置。
我的目标是一个简单且自包含的自主系统:用我最喜爱的M5Stack/ESP32硬件实现一个现实可行的系统,同时精度足够,能够实现可重复运行。我没有依赖SLAM或ArduPilot,而是从零开始自行构建定位、传感器融合和导航系统。
为了定位,我选择了二维激光雷达。为了在ESP32控制器上进行处理,我开发了一种方法,用于跟踪分布在行驶区域周围的六个平面反射器。
探测车沿一条定制的检查点路线行驶,并在途中投放奥赛罗圆盘。它绕同一赛道完成两圈,第二圈时在相同位置投放圆盘。如果圆盘堆叠,结果将提供对定位和驾驶精度的物理验证。
控制回路中没有外部计算机。定位、传感器融合、路径跟踪、电机控制和磁盘分发等功能均由火星车上的M5Stack控制器完成。
M5Stack 系统架构
该探测车将工作分配给三个M5Stack控制器。
•AtomS3 接收并解码 RPLiDAR A2M12 的点云数据,对反射器候选点进行聚类,将其与固定的地标地图进行匹配,并估计探测车的全局姿态。
•CoreS3 控制四个电机,读取编码器和IMU的位姿信息,将其与LiDAR的位姿融合,沿路线行驶,并控制Othello圆盘分发器。
•Atom Lite 通过 Bluepad32 将 PS4 控制器的指令转发,用于手动驾驶。
•iPad 是用于遥测、日志、检查点编辑以及启动运行等命令的辅助界面,不执行定位或自动驾驶功能。
该模块使自动驾驶系统完全运行在M5Stack/ESP32硬件上。
早期尝试:从UWB到LiDAR
在使用LiDAR之前,我先从远处对周围放置的UWB芯片(REYAX RYUW122_Lite)进行了定位测试。
我首先通过将定位硬件安装在头盔上,并在测试区域行走来验证这一概念。M5Stack显示屏实时显示了行走轨迹。
实验表明,芯片的相对朝向会影响测距效果。这些结果有助于验证步行模式的概念,但不足以稳定用于探测车控制,因此我放弃了UWB方案。
然而,核心理念始终如一:在驾驶区域周围使用固定参考点。这一理念最终演变为当前的方法——利用激光雷达追踪固定反射器。
固定激光雷达反射器的全球姿态
AtomS3 接收 2D LiDAR 扫描数据,并在 ESP32 上处理点云。
反射器被检测为地标候选点,并与固定的反射器地图进行比较。随着探测车行驶,本地点云会移动和旋转,而全局地图保持固定。
通过寻找使局部点云与参考地图对齐的旋转和平移,探测器可估计其全局的X/Y/Yaw姿态。同时还会检查地标匹配,以剔除异常值。
反射器可以在不进行坐标测量的情况下布置在区域周围。一旦初始反射器布局被记录,它就成为探测车的固定参考地图。
即使有人或物体遮挡了扫描部分,只要至少有三个反射器可见,定位仍可继续进行。
激光雷达与里程计融合
激光雷达和里程计各有互补的优势。
激光雷达可以校正探测车的全球位置,但由于盲区或遮挡,可能会暂时丢失可靠的地标观测。编码器和惯性测量单元(IMU)提供的里程计可提供平滑的运动估计,但因车轮打滑和漂移,这些误差会随时间累积。
CoreS3 结合了两种估算方法:
•当激光雷达可靠时,它会校正里程计姿态。
•当激光雷达不可靠时,里程计会持续提供平滑的估计,直到激光雷达恢复为止。
这种融合方式使探测车比单独使用任一方法更加稳定。
自定义检查点导航
我从零开始构建了一个自定义的检查点导航系统,而不是使用传统的航点导航。
行驶路径由卡特穆尔-罗姆样条生成。与仅经过航点附近的路线不同,该样条会穿过其控制点。这些控制点在路线上具有实际意义,例如探测车投放奥赛罗圆盘的位置。
检查点可通过 iPad 界面进行编辑或添加。iPad 发送路线数据,但车载 CoreS3 负责执行自动驾驶。
从零开始设计与打造
该探测车采用一体式3D打印底盘,旨在在车身内部布置并隐藏电线。
它包括四个带Mecanum轮的编码器直流电机、一个RPLiDAR A2M12激光雷达、M5Stack控制器、一块锂离子电池,以及由MG90S伺服驱动的齿轮齿条式Othello圆盘分发器。
磁盘分配器不仅是一种视觉设计,更将路径追踪的精确度转化为可每圈检查的实际结果。
开源 AtomS3 LiDAR 示例
我将发布LiDAR接收和LCD点云显示部分作为独立的AtomS3示例。
该仓库包含基本布线、RPLiDAR A2M12接收、点云解码以及在AtomS3 LCD上的实时显示功能。
源代码:
AtomS3 RPLiDAR点云显示示例
这是火星车软件的一个独立可运行的子集,专为希望使用AtomS3与RPLiDAR的开发者提供入门参考。
我学到的东西
该项目最初以一次失败的超宽带定位实验开始,随后发展为基于激光雷达反射器的探测车。
主要的教训是:
固定参考点可以提供一个无需SLAM的实用全局坐标系。
激光雷达与里程计相辅相成:激光雷达可校正漂移,而里程计则弥补了激光雷达暂时存在的盲区。
将工作分配给AtomS3、CoreS3和Atom Lite,使得在M5Stack ESP32硬件上构建一个完整的自主探测车成为可能。
最终成果不仅是一台沿路线行驶的探测车,更是一个集成在M5Stack上的完整实验系统,用于定位、传感器融合、定制化导航以及物理验证。
本文编译自hackster.io





