作为一名在工业自动化领域摸爬滚打多年的工程师,我见证了AGV(自动导引车)从最初的磁条导航到如今全自主导航的演进历程。自主避障能力是现代AGV区别于传统AGV的核心特征,它让车辆能够在复杂动态环境中安全运行。要实现可靠的自主避障,需要构建一个完整的技术体系,这个体系可以概括为"感知-决策-执行"三大环节。
在实际项目中,我们通常会遇到两类典型的避障场景:静态障碍物(如货架、设备)和动态障碍物(如人员、其他AGV)。针对这两种场景,AGV需要采用不同的处理策略。对于静态障碍物,主要通过预先构建的环境地图进行规避;而对于动态障碍物,则需要实时感知和快速响应。
关键经验:在工业现场,最危险的往往不是那些明显的障碍物,而是半动态物体(如临时放置的托盘)和低矮障碍(如叉车货叉),这些需要特别关注。
现代AGV通常采用多传感器融合的方案来实现全方位环境感知。根据我的项目经验,以下是最常见的几种传感器组合:
2D激光雷达(LiDAR):这是AGV避障系统的核心传感器。我们常用的型号包括SICK TIM5系列和Hokuyo UTM系列。它们的扫描角度通常为270°-360°,测距范围10-30米,扫描频率10-40Hz。在实际部署时,需要注意安装高度(建议离地30-50cm)和倾斜角度(通常水平安装)。
3D激光雷达:用于检测高度方向的障碍物。在汽车装配线项目中,我们使用过Velodyne VLP-16和Ouster OS1系列。这类传感器能有效识别悬空障碍物(如未完全收回的叉车货叉),但成本较高(约是2D LiDAR的3-5倍)。
深度相机:如Intel RealSense D435i、Orbbec Astra系列。它们能提供丰富的视觉信息,特别适合识别小物体和地面坑洞。我们在电商仓库项目中,用深度相机成功解决了传送带边缘检测的问题。
安全激光扫描仪:如SICK S3000、Hokuyo UAM系列。这些设备直接输出安全信号(通过PLd/SIL2认证),是AGV安全系统的最后防线。
多传感器数据融合是提高系统鲁棒性的关键。我们通常采用以下方法:
坐标系统一:将所有传感器数据转换到车辆本体坐标系。这需要精确的传感器外参标定。我们开发了一套基于AprilTag的自动标定工具,标定精度可达±2cm。
数据融合算法:
冗余设计:在关键区域(如AGV前进方向)布置重叠的传感器覆盖,确保单一传感器失效时系统仍能工作。
避坑指南:传感器安装时要考虑振动影响。我们曾遇到因电机振动导致LiDAR点云抖动的问题,后来通过增加减震垫和软件滤波解决。
AGV需要知道自己在哪里以及周围环境什么样,这依赖于SLAM(同步定位与建图)技术。根据项目经验,不同场景适用的SLAM方案也不同:
室内结构化环境:推荐使用Gmapping或Hector SLAM。我们在电子厂项目中,用Gmapping构建的地图精度达到±5cm。
大范围复杂环境:Cartographer表现更优。某汽车厂项目覆盖3万平米,建图误差控制在±8cm内。
动态环境:LIO-SAM等激光-惯性融合算法更适合。我们在物流中心测试时,即使有30%的动态障碍,定位漂移也能控制在1%/h以内。
代价地图(Costmap)是AGV避障的核心数据结构。它实际上是一个二维栅格地图,每个栅格存储了通行代价。我们通常配置两层Costmap:
全局代价地图:
局部代价地图:
在实际调优时,我们发现膨胀半径设置非常关键。过小会导致AGV擦碰障碍物,过大则会使AGV无法通过狭窄通道。通常建议设置为AGV最大轮廓尺寸的1.2-1.5倍。
全局规划为AGV提供从起点到终点的宏观路线。我们对比过多种算法:
| 算法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| A* | 最优路径,速度快 | 内存消耗大 | 中小规模地图 |
| Dijkstra | 保证最优解 | 计算量大 | 路径质量要求高的场景 |
| JPS | 内存效率高 | 只适合均匀网格 | 大规模地图 |
在实际项目中,我们通常采用分层规划策略:
局部避障是自主导航的核心难点。以下是几种主流算法的实测对比:
DWA(动态窗口法):
TEB(时间弹性带):
APF(人工势场):
我们在某汽车装配线项目中,针对不同区域采用了混合策略:
将规划出的速度指令转化为车轮运动需要考虑底盘类型:
差速底盘:
cpp复制// 典型控制代码
left_rpm = (v - ω * L/2) * 60 / (2π * r);
right_rpm = (v + ω * L/2) * 60 / (2π * r);
其中L为轮距,r为轮半径
麦克纳姆轮:
cpp复制// 四轮速度计算
wheel1 = vx - vy - ω*(lx+ly);
wheel2 = vx + vy + ω*(lx+ly);
wheel3 = vx + vy - ω*(lx+ly);
wheel4 = vx - vy + ω*(lx+ly);
实际控制中还需考虑:
工业AGV必须满足安全标准(如ISO 3691-4)。我们采用三级防护:
软件防护层:
安全PLC层:
机械防护层:
在某半导体厂项目中,我们配置了双安全激光扫描仪: