3. 运动控制基础:电机选型、驱动器原理、PID控制、运动学模型

各位同学,欢迎来到运动控制这一章。

说实话,做叶片巡检机器人,最核心的硬骨头就是运动控制。你传感器再牛,算法再花哨,机器人走不稳、走不准,一切都是白搭。我当年第一个项目就栽在这上面——电机选小了,带不动负载,整台机器原地抖得像筛糠。嗯,那教训,够我记一辈子。

3.1 电机选型:别让动力成为短板

选电机,说白了就是算账。你要算清楚:机器人多重?要跑多快?加速度多少?

我个人习惯,先列一个需求清单:

  • 负载重量:包括机身、电池、传感器、叶片样本
  • 最大速度:巡检时一般0.5~1 m/s就够
  • 加速度:启动和刹车时的冲击
  • 工作坡度:叶片巡检常在野外,坡道不可避免

然后算扭矩。公式不复杂:

T = (m * g * sinθ + m * a) * r / η

其中m是质量,g是重力加速度,θ是坡度角,a是加速度,r是轮子半径,η是传动效率。

我在项目中遇到过,很多人只算匀速工况,忽略了加速和爬坡。结果呢?电机一启动就过载,发热严重。我建议你留出30%的余量,别卡着极限选。

常用电机类型对比

类型优点缺点适用场景
直流有刷电机控制简单,成本低电刷磨损,寿命短低成本原型
直流无刷电机效率高,寿命长控制复杂,需驱动器大多数巡检机器人
步进电机定位精准,开环控制高速扭矩小,易丢步关节角度控制
伺服电机精度极高,响应快价格贵,调试复杂高精度定位场景

你想想看,叶片巡检机器人一般用无刷电机就够了。性价比高,维护也省心。

3.2 驱动器原理:电机的大脑

电机选好了,还得有个东西指挥它干活——这就是驱动器。

驱动器说白了就是一个功率放大器。单片机给个小信号,驱动器把它放大成能驱动电机的大电流。我刚开始做的时候,以为直接拿单片机IO口接电机就行,结果单片机瞬间冒烟。嗯,千万别干这种傻事。

驱动器内部核心是H桥电路:

H桥四个开关管,控制电流方向
Q1和Q4导通 → 电机正转
Q2和Q3导通 → 电机反转
Q1和Q2导通 → 刹车(短路制动)

对于无刷电机,驱动器更复杂一些。它需要知道转子的位置,然后按顺序给三相线圈通电。这就是所谓的「电子换向」。我建议你直接买现成的驱动器模块,比如常见的L298N、TB6612,或者更高级的BLDC驱动器。自己搭H桥?除非你想练手,否则别折腾。

小技巧:选驱动器时,额定电流要大于电机堵转电流的1.5倍。我曾经图便宜,选了刚好够用的驱动器,结果电机一卡住,驱动器直接烧了。

3.3 PID控制:让电机听话

电机转起来了,但怎么让它转得准?怎么让它稳?这就是PID的活。

PID控制,比例、积分、微分三个环节。我见过太多人一上来就调参数,调得满头大汗。其实你只要理解一个核心:

  • P:看当前偏差,偏差大就用力推
  • I:看历史偏差,消除静差
  • D:看偏差变化趋势,抑制超调

代码实现其实很简单:

float pid_update(float setpoint, float actual) {
    float error = setpoint - actual;
    integral += error * dt;
    derivative = (error - prev_error) / dt;
    prev_error = error;
    return Kp * error + Ki * integral + Kd * derivative;
}

我曾经在调试时,把Ki调得太大,结果电机一直在震荡,嗡嗡响,像在唱歌。后来才明白,积分项是双刃剑——它能消除静差,但也容易引起震荡。

避坑指南:我曾经遇到过积分饱和的问题。电机长时间达不到目标,积分项越积越大,等目标到了,积分项还在发力,导致严重超调。解决办法是加积分限幅,或者用抗积分饱和算法。

调PID有个口诀:先调P,让系统能响应;再加D,抑制震荡;最后加I,消除静差。别一上来三个参数一起调,你会疯的。

3.4 运动学模型:机器人怎么走

电机控制好了,但机器人怎么从A点走到B点?这就需要运动学模型。

对于叶片巡检机器人,最常见的是差速驱动模型。两个驱动轮,一个万向轮。控制左右轮的速度差,就能实现前进、后退、转弯。

正运动学:已知左右轮速度,求机器人整体速度。

v = (v_left + v_right) / 2
ω = (v_right - v_left) / L

其中L是轮距,v是线速度,ω是角速度。

逆运动学:已知目标速度和角速度,求左右轮速度。

v_left = v - ω * L / 2
v_right = v + ω * L / 2

你想想看,有了这个模型,你就可以给机器人下指令了:「往前走0.5米,然后右转30度」。剩下的就是PID去执行。

核心逻辑图:运动控制系统架构

目标位置/速度 运动学逆解 PID控制器 电机驱动器 电机+编码器 运动学正解 反馈(编码器数据) 反馈回路

图:运动控制系统架构,从目标到执行再到反馈的闭环

有了这个架构,你就能理解整个运动控制的流程了。目标位置→运动学逆解→PID控制→驱动器→电机→编码器反馈→运动学正解→修正目标。这是一个闭环。

嗯,说到闭环,我再啰嗦一句。很多新手只做开环控制,就是给个速度指令就不管了。结果机器人走直线都走不直,因为左右电机总有差异。加上编码器反馈,做闭环控制,精度能提升一个数量级。

个人经验:编码器分辨率选1024线以上的,太低的话,低速时根本测不准。我吃过这个亏,当时用了个256线的,结果机器人低速爬行时,编码器读数跳来跳去,PID根本没法调。

好了,运动控制基础就讲这么多。电机选型、驱动器原理、PID控制、运动学模型,这四个东西是环环相扣的。你把这章吃透了,后面讲路径规划、自主导航,你才能跟得上。


专注资料整理