2、直线运动偏差的成因分析

做差速底盘,最头疼的问题是什么?

我个人觉得,就是「明明给了直行的指令,车却跑偏了」。你想想看,一个简单的直线运动,背后藏着多少坑?今天我就把这五个最常见的偏差成因,一个一个掰开揉碎了讲清楚。

核心观点:直线运动偏差不是单一原因造成的,而是多个因素叠加的结果。理解每个成因的物理本质,是后续纠偏的基础。

2.1 左右轮径不一致

这是最直观的原因。两个轮子直径不一样,同样的转速下,大轮子跑的距离更远。说白了,就像两个人走路,一个腿长一个腿短,怎么可能走直线?

我在项目中遇到过一台AGV,出厂时跑直线没问题,用了三个月就开始偏。拆下来一量,左轮磨损了0.5mm。别小看这0.5mm,对于直径100mm的轮子来说,每转一圈就差了1.57mm。跑个10米,偏差就超过5厘米了。

实战建议:选型时尽量选耐磨的聚氨酯轮,定期用卡尺测量轮径。我习惯每500小时做一次轮径校准记录。

2.2 电机特性差异

就算是同一批次的电机,特性也不可能完全一致。为什么?

电机内部的磁钢强度、绕组电阻、轴承摩擦力,这些都有制造公差。两个电机接到同样的PWM信号,实际转速可能差个1%~3%。

我曾经调试过一台双轮平衡车,左右电机型号一模一样,但空载时转速差就有2%。装上负载后,这个差异还会被放大。你想想看,2%的转速差,对于要求高精度的应用场景,简直就是灾难。

电机参数 电机A 电机B 差异
空载转速(rpm) 3000 2940 2%
额定扭矩(Nm) 0.5 0.48 4%
绕组电阻(Ω) 1.2 1.25 4.2%

注意:电机特性差异会随温度变化而加剧。电机发热后,绕组电阻增大,扭矩下降。如果两个电机散热条件不同,偏差会越来越严重。

2.3 地面摩擦不均匀

这个因素经常被忽略,但实际影响非常大。

地面材质、平整度、是否有油污或水渍,都会影响轮胎与地面的摩擦系数。左轮在瓷砖上,右轮在木地板上,摩擦系数能差30%以上。结果就是:同样的驱动力,一个轮子打滑,另一个轮子抓地牢,车自然就跑偏了。

我记得有一次在工厂调试,地面刚打过蜡,AGV走直线时总是往左偏。排查了半天,最后发现是左轮刚好压在一道蜡痕上。擦掉蜡痕,问题立刻解决。

避坑指南:我曾经因为地面问题浪费了整整两天。后来我学乖了,调试前先用摩擦系数测试仪测一下地面。如果条件不允许,至少用脚踩一踩,感受一下左右两侧的摩擦力是否一致。

2.4 编码器分辨率误差

编码器是机器人的「眼睛」,但它也有局限性。

分辨率越低的编码器,测量误差越大。举个例子,一个每圈100线的编码器,角度分辨率是3.6度。而一个每圈1000线的编码器,分辨率是0.36度。差了整整10倍。

更隐蔽的问题是:编码器的安装偏心。如果编码器轴和电机轴不同心,每转一圈就会产生一个正弦波形的误差。这个误差在低速时尤其明显。

// 编码器误差模拟示例
// 假设编码器安装偏心0.1mm,轮径100mm
float encoder_error = 0.1 * sin(2 * PI * wheel_rotations);
float actual_distance = measured_distance + encoder_error;

// 每转一圈,最大误差可达0.2mm
// 跑100圈(约31.4米),累计误差可达20mm

我的经验:编码器选型时,分辨率至少要比控制精度高一个数量级。比如你要求定位精度1mm,编码器分辨率至少要做到0.1mm。另外,安装时一定要用千分表打同心度,偏差控制在0.02mm以内。

2.5 安装机械误差

最后这个,是很多新手容易踩的坑。

底盘安装时,左右轮轴不平行、轮距不一致、底盘重心偏移,这些都会导致直线运动偏差。机械误差是「硬伤」,软件再牛也救不回来。

我见过一个案例:某公司做的送餐机器人,出厂测试时直线度还行,但一上实际场景就偏。后来发现是底盘安装时,左轮轴比右轮轴前移了2mm。这个2mm的偏差,在转弯时会被放大,导致左右轮转弯半径不一致。

  • 轮轴不平行:导致轮胎偏磨,长期运行后轮径差异加剧
  • 轮距不一致:左右轮实际行驶路径不同,产生差速
  • 重心偏移:导致左右轮正压力不同,摩擦力不一致
  • 悬挂系统问题:左右悬挂刚度不同,负载变化时轮子接地力不同

警告:机械误差是「不可逆」的。软件纠偏只能补偿,不能根治。所以我的建议是:花80%的精力在机械装配上,剩下20%留给软件调参。别搞反了。

知识体系总览

下面这张图,把五个成因之间的关系梳理清楚了。你可以看到,有些因素是独立的,有些是相互影响的。比如轮径不一致和机械误差,会共同导致编码器读数失真。

直线运动偏差成因分析 直线运动偏差 左右轮径不一致 电机特性差异 地面摩擦不均匀 编码器分辨率误差 安装机械误差 机械误差 → 轮径磨损 → 编码器读数偏差 硬件因素 电气因素 环境因素 传感器因素 装配因素

嗯,这五个成因,每一个单独拿出来都能写一篇文章。但实际项目中,它们往往是同时存在的。比如轮径不一致加上地面摩擦不均匀,偏差会成倍放大。

所以我的建议是:先做机械排查,再做软件补偿。别一上来就调PID参数,先把轮子装正、把地面擦干净、把编码器装好。这些基础工作做好了,后面的纠偏工作会轻松很多。

下一节,我们会聊如何用传感器检测这些偏差。但在此之前,我建议你先把这五个成因对照自己的项目检查一遍。相信我,花这个时间绝对值得。

专注资料整理