“什么异常?”
“Z轴陀螺仪漂移,导致偏航角误差累积,路径偏离了设定值。系统检测到偏离超过阈值,自动停车。”
林默蹲下来,检查侦察车的传感器模块。IMU是贴装在底盘中央的,固定得很牢固,应该不是机械松动的问题。
“是算法问题。”苏清颜说,“我用的互补滤波对陀螺仪漂移的补偿不够,长时间运行会累积误差。需要换成卡尔曼滤波。”
“需要多久?”
“一天。”
“改。顺便把GPS和IMU做融合,用GPS的定位数据来校正IMU的漂移。”
“我也是这么想的。”
两人的思路再次同步。
---
苏清颜花了一天时间,重写了姿态解算和导航算法。
新的方案是:GPS+IMU+里程计的多传感器融合,通过扩展卡尔曼滤波(EKF)实现。GPS提供绝对位置,IMU提供角速度和加速度,里程计提供速度信息。三种传感器的数据互相校正,位置精度可以达到厘米级。
第九天,第二次测试。
这次侦察车跑完了整个路径,四个角的目标全部识别成功,位置误差控制在5厘米以内。
“成了。”林默拍了拍车身。
“别高兴太早。”苏清颜泼冷水,“这只是平地测试。真正的挑战是复杂地形。”
“那就去复杂地形。”
两人推着侦察车,来到了机械工程系楼后面的那片“小树林”——上次巡检机器人测试的地方。
地面坑坑洼洼,到处是树根和枯枝,还有几个小土坡和一个干涸的水沟。
侦察车被放到了树林边缘。
林默按下启动按钮。
车动了。
它缓缓驶入树林,履带碾过枯枝,发出咔嚓咔嚓的声音。前方有一个拳头大的石头,超声波传感器检测到障碍物,STM32发出指令,电机减速,转向,绕过——整个过程不到一秒。
林默和苏清颜跟在后面,盯着笔记本电脑上的实时画面。
前方出现了一个小土坡,坡度大概20度。
侦察车没有犹豫,履带咬住地面,动力输出增加,稳稳地爬了上去。爬坡过程中,IMU检测到车身姿态变化,自动调整了电机扭矩分配,防止打滑。
下坡的时候,侦察车遇到了一个问题——前方是一个干涸的水沟,宽度约30厘米,深度约15厘米。
超声波传感器检测到了沟壑,但超声波对“凹陷”的检测能力有限,信号反射不理想。侦察车在沟壑前停了下来,犹豫了。
“过不去。”苏清颜说。
林默蹲下来,看着沟壑,想了想。
“不是过不去,是传感器没给它足够的信心。超声波对凸起障碍物敏感,对凹陷障碍物不敏感。加一个红外传感器,专门用来检测沟壑和台阶。”
“加在哪里?”
“底盘前部,向下倾斜15度角。红外传感器可以测距,检测到前方地面高度突然下降,就判断为沟壑。”
“好,回去加。”
林默把侦察车从沟壑前抱起来,放到了对岸。
“继续测试,回去再改。”
侦察车继续前进,走了大概五十米,完成了整个预设路径。一共识别了八个目标——四个红色锥桶和四个临时添加的蓝色方块——全部成功,准确率100%。
“还行。”苏清颜说。
这次林默没反驳。“还行”从她嘴里说出来,已经是高分了。
---
(活动时间:4月4日到4月6日)