第二章 运动控制基础回顾
各位同学,欢迎来到《AI运动控制》的第二讲。在正式进入AI与运动控制的结合之前,我觉得有必要先带大家把底层的「硬功夫」捋一遍。说白了,运动控制这行当,算法再花哨,最后都得落到电机怎么转、位置怎么准这些基本问题上。
我个人习惯是,不管项目多急,先花半天时间把基础元件的手册翻一遍。为什么?因为我在项目里吃过亏——有一次伺服电机选型差了一档,结果高速运行时扭矩不够,整个产线停了两天。嗯,从那以后我再也不敢轻视这些「老古董」了。
2.1 伺服电机与步进电机原理
这两种电机,是运动控制的两大「主力」。你想想看,一个追求精度,一个追求力矩,各有各的脾气。
2.1.1 步进电机:开环控制的「倔脾气」
步进电机的原理其实很简单:你把脉冲给它,它就转一个固定的角度。这个角度叫「步距角」,常见的是1.8°(也就是200步转一圈)。
核心特点:
- 开环控制:没有反馈,给多少脉冲转多少步
- 低频振动:转速低的时候,电机容易「抖」
- 失步风险:负载突然变大,电机可能「丢步」
2.1.2 伺服电机:闭环控制的「精密仪器」
伺服电机就不一样了。它自带编码器,随时知道自己的位置。说白了,它是个「有脑子」的电机。
核心特点:
- 闭环控制:位置、速度、电流三环反馈
- 高精度:编码器分辨率可达23位(约838万脉冲/圈)
- 响应快:加速时间可以做到毫秒级
| 对比项 | 步进电机 | 伺服电机 |
|---|---|---|
| 控制方式 | 开环 | 闭环 |
| 精度 | 步距角(1.8°) | 编码器分辨率 |
| 低速性能 | 振动明显 | 平稳 |
| 高速性能 | 扭矩下降快 | 恒扭矩输出 |
| 成本 | 低 | 高 |
2.2 PID控制原理与局限
说到运动控制,PID是绕不开的话题。我刚开始做控制的时候,觉得PID就是「调三个参数完事」。后来发现,事情远没那么简单。
2.2.1 PID的「三兄弟」
PID说白了就是三个环节:
- P(比例):当前误差有多大,我就给多大力量。调大了会震荡,调小了反应慢。
- I(积分):把过去的误差累积起来,消除稳态误差。但积分饱和是个大坑。
- D(微分):预测未来的误差趋势,提前刹车。但噪声会被放大。
// 位置式PID的离散实现
float pid_update(float setpoint, float measurement) {
float error = setpoint - measurement;
// 比例项
float p_out = Kp * error;
// 积分项(带限幅)
integral += error * dt;
integral = clamp(integral, -integral_limit, integral_limit);
float i_out = Ki * integral;
// 微分项(带滤波)
float derivative = (error - prev_error) / dt;
derivative = lowpass_filter(derivative, cutoff_freq);
float d_out = Kd * derivative;
prev_error = error;
return p_out + i_out + d_out;
}
2.2.2 PID的「软肋」
PID虽然经典,但局限性也很明显:
- 非线性系统搞不定:比如摩擦力变化、间隙、饱和
- 参数整定麻烦:换一个负载,可能就得重新调
- 无法预测未来:PID只看当前误差,不会「提前规划」
这也是为什么我们要引入AI。说白了,AI可以帮PID「开天眼」——提前知道路况,提前调整参数。
2.3 轨迹规划:梯形 vs S形曲线
电机怎么从A点跑到B点?直接全速冲过去?不行,那样会「过冲」或者「撞墙」。我们需要规划一条平滑的路径。
2.3.1 梯形速度曲线
梯形曲线是最简单的:加速→匀速→减速。优点是计算量小,缺点是加速度突变,会有「冲击感」。
// 梯形速度规划
void trapezoidal_plan(float total_dist, float v_max, float a_max) {
// 计算加速段距离
float accel_dist = v_max * v_max / (2 * a_max);
// 判断是否达到最大速度
if (2 * accel_dist <= total_dist) {
// 有匀速段
float cruise_dist = total_dist - 2 * accel_dist;
float cruise_time = cruise_dist / v_max;
// ... 生成轨迹
} else {
// 没有匀速段,三角形曲线
float v_peak = sqrt(a_max * total_dist);
// ... 生成轨迹
}
}
2.3.2 S形速度曲线
S形曲线就「温柔」多了。它把加速度也做了平滑处理,加加速度(Jerk)是有限的。这样电机运动更平稳,适合精密定位。
2.4 编码器与反馈系统
没有反馈,运动控制就是「盲人摸象」。编码器就是电机的「眼睛」。
2.4.1 编码器类型
- 增量式编码器:输出A、B两相脉冲,通过相位差判断方向。便宜,但断电丢位置。
- 绝对式编码器:每个位置有唯一编码,断电不丢位置。贵,但省心。
2.4.2 反馈系统的「坑」
我遇到过最头疼的问题,是编码器信号受干扰。有一次在工厂调试,伺服电机总是莫名其妙地「抖动」。查了两天,最后发现是变频器的强电干扰了编码器线。从那以后,我所有项目都强制要求编码器线用屏蔽双绞线,而且远离动力线。
本章知识体系
下面这张图,是我自己总结的运动控制基础框架。你可以把它当作一张「地图」,以后遇到问题,先看看是哪个环节出了岔子。
好了,这一章的内容就到这里。基础打牢了,后面我们才能放心地往系统里「塞」AI算法。下一章,我会带大家看看AI到底能在运动控制里扮演什么角色——是「锦上添花」还是「雪中送炭」?到时候你就知道了。