运动学回答机器人怎么动,动力学回答产生这种运动需要多少力。机械臂常用的模型写作 M(q) q_ddot + C(q,q_dot) q_dot + g(q) = tau + tau_ext。质量矩阵、速度相关项、重力、摩擦和外力共同决定响应;把关节目标角直接当作力矩发送,会跨过必要的控制接口。
从质量块开始
一维模型为 m x_ddot = u - b x_dot + d,其中 u 是控制力,d 是未知外扰。位置目标为 1 米。PD 控制取 u = Kp(1-x) - Kd x_dot;比例项拉向目标,阻尼项抑制速度。对于固定外扰,PD 的静态误差通常不会自动消失。PID 增加误差积分,但执行器饱和时,积分可能持续累积,造成恢复缓慢和大幅过冲。
抗积分饱和可采用条件积分或反算。测量噪声会被直接微分放大,实际实现常对速度估计或微分项滤波。滤波也引入相位滞后,不能无限加重。
离散控制还受采样周期影响。控制循环的 dt 必须与模型、积分器和实际测时一致。若循环偶尔延迟十倍,只把频率配置写成“100 Hz”无法保证稳定性。
LQR与MPC各解决什么
对线性离散系统 s_next = A s + B u,LQR在给定状态代价 Q 和输入代价 R 下求反馈 u = -K s。目标附近可以对非线性系统做线性化;离开局部范围后,需要重新检查模型是否仍适用。无积分状态的普通LQR同样可能存在恒定扰动下的静差。理论中的无约束最优解再被限幅,不会保留原来的最优性结论。
MPC反复预测有限未来,把位置、速度、力矩等约束写入优化,只执行当前一小段,再用新状态重新求解。它需要可在控制周期内完成的求解器,也需要不可行或超时的处理。增加预测长度可能改善前瞻性,同时增加求解成本。它不会自动修正错误模型。MIT的LQR章节与轨迹优化章节提供推导和实现背景。
实际运行的对照实验
control_lab.py需要NumPy,模拟 m=1 kg、b=0.2 N·s/m,采样周期0.01秒、输入限幅±2牛;5秒后加入0.3牛恒定扰动。PD与PID共用位置及速度增益,LQR使用另一套明示的代价,因此这个实验用于解释现象,不用于排名算法。
python control_lab.py
2026-10-24以Python 3.12.14、NumPy 2.3.5执行20秒数值仿真,结果如下,完整参数与输出见检查记录。
| 控制器 | 最终位置 | 最大超调 |
|---|---|---|
| PD | 1.0500 m | 0.0513 m |
| 条件积分PID | 1.0012 m | 0.1095 m |
| 无积分LQR | 1.0761 m | 0.0774 m |
PID在这里减小静差,同时超调较大。这说明需要联合看跟踪误差、超调、输入、饱和时间和扰动恢复,不能用单个末端误差代表控制质量。
检查理解
把质量改成2千克而保持控制器参数,记录响应变化;再把采样周期调大,说明离散模型和积分步骤为何也要一起修改。尝试去掉抗饱和条件,比较恢复时间。
面试自查:前馈与反馈如何配合?LQR中的最优取决于哪些假设?MPC超时时上一条命令能否继续用,取决于哪些有效期与制动约束?真机控制参数必须按实际设备验证,本页数值参数不能直接用于真实执行器。