sheen.bot 标志

深度见解

为什么你的两轮机器人走不直

2026年8月20日·Sheen Robotics
为什么你的两轮机器人走不直

同型号的电机并不会以相同的转速旋转。本文讲清为什么写死的功率补偿值终会失效,以及如何用车轮编码器实现真正的直线行驶。

当你给差速驱动机器人上两台同型号直流电机发送 100% 占空比的信号时,机器人几乎总会向左或向右画弧。原因在于,两台批量生产的直流电机在电气和机械上从来都不会完全一致,内部摩擦、磁场强度和轮胎抓地力上的微小差异,会让完全相同的电输入产生不同的转速。

在课堂或竞赛工作坊里,这种跑偏是学生最先遇到、也最让人恼火的障碍之一。搞清楚它为什么会发生——以及为什么软件上的快速修补解决不了它——正是从玩具机器人通向真正工程的那座桥。

电机差异的解剖

小型直流(DC)减速电机,尤其是教育套件里常见的那种黄色外壳的玩具级电机,制造公差都很宽松。有几处微观层面的差异,注定了 A 电机和 B 电机的表现不会一样:

  • 线圈绕制与内阻:绕在电枢上的铜线,长度和张力略有出入,从而在电阻和反电动势(back-EMF,electromotive force)上造成细微差别。
  • 永磁体强度:烧结铁氧体磁铁的磁通密度存在小幅波动,会改变输出扭矩。
  • 电刷接触摩擦:机械电刷压在换向器上的弹簧张力各不相同,带来不均匀的阻力。
  • 齿轮箱公差:装在这些电机上的多级直齿减速箱,摩擦大小取决于齿形一致性、轴的对中程度以及内部润滑脂的分布,各台之间并不相同。

即便跳出电机本身,机械因素也会让问题雪上加霜。如果一条橡胶轮胎往轮毂上多套进 0.5 mm,它的有效滚动半径就变了。如果机器人的电池组偏在中线左侧 10 mm,左轮承受的正压力更大,滚动阻力也更大。结果就是一个不对称的驱动底盘。

为什么写死的“补偿值”总会失效

学生凭直觉的反应,是在代码里手动把两台电机配平:

// 新手惯用的应付办法
motorLeft.setSpeed(255);
motorRight.setSpeed(238); // 把转得快的那台调低

这叫开环控制:发出指令,然后假定现实世界的输出与请求一致,却从不检查结果。手动补偿或许能让机器人在换了新电池、地面是光滑亚麻地胶的条件下直行三米,但在真实条件下它必然失效:

  • 电池放电曲线:在一节 45 分钟的课上,电池电压不断下降,而直流电机的转速损失并不是线性变化的。在 8.2V 下标定好的补偿值,等电池组掉到 7.4V 时就会往一边偏。
  • 地面摩擦变化:从光滑的实验室地砖开上商用短绒地毯,两条轮胎受到的滚动阻力变化并不一致。
  • 温度变化:连续运转时齿轮箱和电机绕组会发热,内部摩擦随之下降,两侧的转速比也就跟着变了。

解决办法:用编码器做闭环反馈

要让机器人不管电池电压和地面材质如何都能走直线,单片机就必须实时测量车轮真实的运转情况。这需要闭环控制。

最简单的实现方式是加装旋转式车轮编码器。一个编码器由一个传感器(通常是光电对射开关或霍尔效应磁传感器)和一个装在电机轴或车轮上的旋转件(开槽码盘或多极磁环)组成。车轮每转动一点,传感器就输出一个脉冲。

控制方式原理电量不足时的表现换到新地面时的表现
开环(固定 PWM)假定两台电机完全一致无规律跑偏无规律跑偏
开环(写死补偿值)手动给一台电机加偏置标定失效标定失效
闭环(编码器反馈)依据实测的车轮脉冲数动态调整功率保持直线航向保持直线航向

实现比例速度控制

要写出一个能用的闭环控制器,并不需要高深的微积分基础。一个每 50 到 100 毫秒执行一次的基本比例(P)控制环,对课堂机器人来说就够用了。

程序不再直接下达电机功率指令,而是在固定的时间窗口内测量车轮的转动量,并调整功率来消除两侧之差:

  1. 在一个固定窗口内(例如每 50 ms)统计两个车轮的编码器脉冲数。
  2. 计算误差:error = leftTicks - rightTicks
  3. 如果 error > 0,说明左轮转得比右轮快。把左电机的 PWM 略微调低、右电机的 PWM 略微调高,或者施加一个与误差大小成正比的修正量:correction = error * Kp(其中 Kp 是经过整定的增益常数)。
  4. 把脉冲计数器清零,然后重复。

如果你正在自己搭建课堂课程体系或者选型硬件平台,那么选择配备了支持硬件中断的单片机和集成磁编码器的套件——比如 Sheen Canvas 所支持的那些模块化生态,或者 Infinity 旗下的机器人平台——能省下学生几十个小时的挫败感。它把学习的重点,从跟机械缺陷较劲,转移到掌握传感器反馈和控制理论上。

核心结论

机械上的不完美并不是要用临时软件补丁盖住的瑕疵,它们是物理计算的根本现实。教会学生用编码器和闭环算法去测量电机的实际输出,就能把工作坊里一个常见的挫败来源,变成一堂关于真实世界控制系统的、看得见摸得着的实用课。

#机器人#电机#PID 控制#STEM 教育#电子

更多深度见解