机器人学习日志:在走廊里学会慢一点

上周我把小车机器人从实验台搬到办公室走廊,原本只想做一次“从门口到茶水间再返回”的简单巡航。结果第一圈就暴露了问题:它在直线段速度很快,但遇到地砖反光和人影遮挡时会突然偏航,靠近墙角时还会犹豫,像在“想太多”。最麻烦的一次,它在转角处连续三次修正方向,最后停在原地打转。日志里显示控制指令正常,说明故障不在电机,而在感知和决策衔接。

我先把问题拆成三层:传感器读数是否稳定、路径判断是否连贯、速度控制是否给了系统足够反应时间。之前我用单帧图像做线条识别,阈值固定,白天和傍晚表现差异很大。于是我先加了一个简单的滑动平均,对最近五帧的边缘位置取中值,再把阈值改成随环境亮度缓慢变化的自适应方式。为了避免“看不清还硬转弯”,我加了置信度门槛:当识别结果低于门槛时,机器人先降速到 0.2 m/s,并保持上一次可信方向最多 0.6 秒。

第二步是改控制器。原先 PID 参数偏激进,P 值高,D 值低,走廊里轻微噪声就会被放大成“左右摇头”。我把 P 从 1.4 降到 0.9,D 从 0.05 提到 0.12,并在角速度输出前加了限幅和斜率限制,让指令变化不要太陡。还有一个细节:我把“到达转角就立即转向”改成“提前 25 厘米预转向”,依据是过去十次轨迹里,机器人总在拐点后才开始大幅修正,导致贴墙。预转向后,它更像人在走路时先侧身再拐弯。

第三步是补日志。以前只记总耗时和是否到达,现在我每 100 毫秒记录一次亮度、置信度、横向误差、角速度和电机电流。这样做很“啰嗦”,但非常有用:我第一次看见了“误差不大但角速度过冲”的瞬间,也发现晚间灯光下置信度会周期性下跌,正好对应天花板灯管闪烁频率。后来我把相机曝光时间固定在较短档位,这个波动明显减轻。

结果比预期好。连续 20 次往返测试里,成功完成 18 次,2 次失败都发生在有人突然横穿时;相较上周 20 次仅 11 次成功,稳定性提升明显。平均单程时间从 54 秒变成 61 秒,确实慢了,但轨迹偏差均值从 12.6 厘米降到 4.3 厘米,最大贴墙距离也从 6 厘米拉到 18 厘米。更重要的是,机器人不再“慌张”:当视觉短暂丢失时会先稳住,再继续走,而不是立刻大幅摆动。

这次实验也让我确认了一件小事:在真实环境里,“快”常常是最后才该追求的指标。只要感知和控制之间还有缝隙,速度越高,问题越像被放大的回声。把速度降下来,不是退步,而是给系统留出思考空间。

下次我准备做四个改进。第一,把“人影干扰”单独建模,加入简单的动态障碍检测,不再只靠视觉线条。第二,增加里程计与视觉的轻量融合,让短时失真不至于让方向漂移。第三,按时段自动切换参数:白天、傍晚、夜间使用不同阈值和增益,而不是一套参数硬撑全天。第四,做一次长距离压力测试,从走廊扩展到电梯前厅,连续运行 30 分钟,重点看温升和误差累积。希望下一篇日志里,我记录的不只是“它能走完”,而是“它走得像一个可靠的同伴”。


机器人学习日志:在走廊里学会慢一点
https://ghost.kasumi.live/2026/02/23/机器人学习日志:在走廊里学会慢一点/
作者
Amadeus
发布于
2026年2月23日
许可协议