0. 总览
1. 数学力学基础
2. 机器人运动学
3. 机器人动力学
4. 运动控制
5. 力控制
6. 综合题库
Chapter 4 · Motion Control
运动控制:把模型变成能收敛的控制器
运动控制考试常考系统分类、开环闭环、Laplace/传递函数、PID、关节空间与任务空间、计算力矩控制。计算题集中在传递函数、二阶系统、PID 输出和计算力矩。
Laplace PID 关节/任务空间 Computed Torque
Σ
控制器
机器人
反馈测量实际输出
闭环控制:根据误差修正输入,而不是只发一次命令。
1. Euler 公式、Fourier 与频域直觉
Chapter6 开头从 Euler theorem 和 Fourier series 讲起。考试中通常不要求复杂展开,但可能问为什么要做频域分析:控制系统中的振动、噪声、滤波都和频率有关。
$$e^{j\theta}=\cos\theta+j\sin\theta$$
$$f(t)=A_0+\sum_{n=1}^{\infty}\left(A_n\cos n\omega_0t+B_n\sin n\omega_0t\right)$$
Euler 公式把正弦和余弦写成复指数形式,目的不是为了把问题变复杂,而是因为复指数在求导和积分时形式不变。控制系统里很多输入、振动和噪声都可以看成不同频率正弦波的组合,Fourier series 就是在说:一个周期信号可以拆成直流分量和一串不同频率的正弦/余弦分量。拆开之后,系统对低频和高频的反应就能分开分析,例如低频命令希望跟踪,高频噪声希望抑制。
非周期信号可从 Fourier series 过渡到 Fourier transform;Laplace transform 则进一步引入收敛因子,更适合控制系统分析。简单说,Fourier 更偏“频率成分是什么”,Laplace 更偏“系统在输入作用下会不会稳定、瞬态怎样变化”。
2. Laplace 与传递函数
课件先讲 Laplace,是为了把微分方程变成代数方程。常见变换:
$$\mathcal L\{1\}=\frac1s,\qquad \mathcal L\{t\}=\frac1{s^2},\qquad \mathcal L\{e^{-at}\}=\frac1{s+a}$$
$$\mathcal L\{\dot x(t)\}=sX(s)-x(0)$$
这里的 \(\dot x(t)\) 表示 \(x(t)\) 对时间求一阶导数,也就是速度;\(\ddot x(t)\) 表示再对时间求一次导数,也就是加速度。Laplace 变换的求导性质可以理解为:在时域里“变化率”很难直接代数处理,变到 \(s\) 域后,一阶求导主要变成乘以 \(s\),但要扣掉初始值 \(x(0)\)。如果继续对 \(\dot x\) 再求导,就得到二阶导数的变换:
$$\mathcal L\{\ddot x(t)\}=s^2X(s)-sx(0)-\dot x(0)$$
所以题目一旦说“零初值”,就是告诉你 \(x(0)=0,\dot x(0)=0\),一阶导可以直接写成 \(sX(s)\),二阶导可以直接写成 \(s^2X(s)\)。这也是传递函数题总强调零初值的原因。
控制里常见的模型本来是微分方程,例如质量-弹簧-阻尼系统要写 \(\ddot x,\dot x,x\)。在时域里直接解微分方程比较麻烦;经过 Laplace 变换后,求导大致变成乘以 \(s\),于是微分方程变成关于 \(X(s)\) 和输入 \(U(s)\) 的代数方程。传递函数 \(G(s)=Y(s)/U(s)\) 表示零初值条件下,系统输出相对于输入的比例关系。它不是某一个时刻的比例,而是一个包含动态特性的“算子比例”。
例 4.1 由微分方程求传递函数
仿 Chapter6
场景交代: 画一个一维质量-弹簧-阻尼系统:质量块在水平导轨上运动,左侧通过弹簧和阻尼器连接到固定墙,外力 \(F\) 水平作用在质量块上,输出为质量块位移 \(x\)。
题目: 系统满足 \(m\ddot x+b\dot x+kx=F\),初值为 0。求 \(G(s)=X(s)/F(s)\)。
m
k
b
F
质量-弹簧-阻尼系统示意:微分方程经过 Laplace 变换得到传递函数。图中元素: 左侧固定端相当于墙,绿色锯齿是弹簧 \(k\),黄色长条是阻尼器 \(b\),右侧蓝色块是质量 \(m\),外力 \(F\) 水平作用在质量块上。
建模顺序: 先画输入、控制器、被控对象和反馈信号,明确误差从哪里来。 把时域微分、误差积分或误差导数分别对应到公式项。 按公式逐项代入,保留每一项的中间结果。 最后解释输出大小和符号对系统运动意味着什么。
解析过程
先确认题目要求的是传递函数,所以默认零初值。零初值意味着 \(\mathcal L\{\dot x\}=sX(s)\),\(\mathcal L\{\ddot x\}=s^2X(s)\),不会额外出现初始位置和初始速度项。
对方程作 Laplace 变换后,质量项 \(m\ddot x\) 变成 \(ms^2X(s)\),阻尼项 \(b\dot x\) 变成 \(bsX(s)\),弹簧项 \(kx\) 变成 \(kX(s)\)。它们都包含 \(X(s)\),所以可以合并。
$$(ms^2+bs+k)X(s)=F(s)$$
最后把输出 \(X(s)\) 除以输入 \(F(s)\),得到传递函数:
$$G(s)=\frac{X(s)}{F(s)}=\frac{1}{ms^2+bs+k}$$
分母里的 \(ms^2+bs+k\) 就是系统的动态特征。质量越大,惯性越强;阻尼越大,速度相关阻碍越强;刚度越大,位移恢复力越强。
易错点: 传递函数默认零初值;有非零初值时会多出初值项。
例 4.1b 闭环控制传递函数
基础变式
场景交代: 画标准单位负反馈框图:参考输入先与输出反馈相减形成误差,误差进入前向通道 \(G(s)\),输出再通过 \(H(s)=1\) 回到比较点的负端。
题目: 单位负反馈系统前向通道为 \(G(s)=\frac{K}{s+2}\),反馈 \(H(s)=1\)。求闭环传递函数 \(T(s)\),并说明 \(K\) 增大对闭环极点的影响。
Σ
r
e
G(s)
H(s)
y
-
单位负反馈框图示意:闭环传递函数由前向通道和反馈通道共同决定。图中元素: 左侧 \(r\) 是参考输入,圆圈是求和点,绿色框是前向通道 \(G(s)\),下方橙色回路是反馈 \(H(s)\),输出 \(y\) 回到负端形成误差。
建模顺序: 先画输入、控制器、被控对象和反馈信号,明确误差从哪里来。 把时域微分、误差积分或误差导数分别对应到公式项。 按公式逐项代入,保留每一项的中间结果。 最后解释输出大小和符号对系统运动意味着什么。
解析过程
负反馈闭环传递函数不是直接等于 \(G(s)\),而是:
$$T(s)=\frac{G(s)}{1+G(s)H(s)}$$
代入 \(G(s)=K/(s+2)\)、\(H(s)=1\):
$$T(s)=\frac{\frac{K}{s+2}}{1+\frac{K}{s+2}}=\frac{K}{s+2+K}$$
闭环极点来自分母 \(s+2+K=0\),所以 \(s=-(2+K)\)。当 \(K\) 增大时,极点向更负的方向移动,一阶系统响应通常更快;但真实系统里增益过大也可能带来噪声放大、执行器饱和或未建模动态问题。
易错点: 闭环分母是 \(1+GH\),不是把 \(G\) 和 \(H\) 简单相加。
时域 Laplace 域 常用场景
\(1\) \(1/s\) 阶跃输入
\(t\) \(1/s^2\) 斜坡输入
\(e^{-at}\) \(1/(s+a)\) 一阶衰减
\(\dot x\) \(sX(s)-x(0)\) 微分方程变代数式
3. 系统分类、传递函数和状态空间
概念 判断方法 例子
线性 满足叠加性和齐次性 \(\dot x+2x=u\) 线性;\(\dot x+x^2=u\) 非线性。
时不变 参数不显含时间 \(\dot x+2x=u\) 时不变;\(\dot x+t x=u\) 时变。
开环 输出不反馈影响输入 预先给一串力矩。
闭环 测量输出并修正误差 编码器反馈关节角。
Bang-Bang 控制量只在两个极值之间切换 温控开关、继电器控制;简单但易振荡。
Bang-Bang controller 又叫 on-off / two-position controller。它不连续调节控制量,而是根据误差符号直接输出最大正值或最大负值,例如 \(u=+U_{max}\) 或 \(u=-U_{max}\)。优点是结构非常简单、执行器可以快速饱和输出;缺点是接近目标时会来回切换,容易产生抖振、超调或磨损。它适合精度要求不高、允许一定滞环的场合;如果题目要求平滑跟踪或精密手术操作,一般要用 PID、状态反馈或模型补偿控制。
例 4.1c Bang-Bang 控制输出判断
概念+计算
场景交代: 画一个单输入单输出闭环系统,参考值 \(r\) 与测量值 \(y\) 相减得到误差。控制器只有两个饱和值 \(+U_{max}\) 和 \(-U_{max}\),不输出中间值。
题目: 某 on-off 控制器设定 \(U_{max}=5\),误差 \(e=r-y\)。若 \(e>0\) 输出 \(+U_{max}\),若 \(e<0\) 输出 \(-U_{max}\)。当 \(r=10\),测量值依次为 \(8,9.7,10.2\) 时,分别输出多少?
+Umax
-Umax
t
only two output levels
Bang-Bang 控制示意:误差超过阈值时输出在两个极值之间切换。图中元素: 横轴是时间,输出只有上下两个平台:\(+U_{max}\) 和 \(-U_{max}\);当误差符号改变时,控制量直接跳到另一个极值。
建模顺序: 先画输入、控制器、被控对象和反馈信号,明确误差从哪里来。 把时域微分、误差积分或误差导数分别对应到公式项。 按公式逐项代入,保留每一项的中间结果。 最后解释输出大小和符号对系统运动意味着什么。
解析过程
Bang-Bang 控制只看误差符号,不根据误差大小连续调节。先分别计算三次误差:
$$e_1=10-8=2>0,\qquad e_2=10-9.7=0.3>0,\qquad e_3=10-10.2=-0.2<0$$
前两次误差为正,说明输出还低于目标,需要正向最大控制;第三次误差为负,说明已经超过目标,需要反向最大控制。
$$u_1=+5,\qquad u_2=+5,\qquad u_3=-5$$
注意 \(e=2\) 和 \(e=0.3\) 的输出一样,都是 \(+5\)。这正是 Bang-Bang 的特点:简单、强力,但接近目标时容易在正负输出之间切换。
易错点: Bang-Bang 看误差符号,不按误差大小比例缩放。
状态空间模型适合 MIMO 系统,也适合描述机器人内部状态。常见形式:
$$\dot x=Ax+Bu,\qquad y=Cx+Du$$
传递函数还会出现零点、极点和闭环传递函数。负反馈系统若前向通道为 \(G(s)\)、反馈为 \(H(s)\):
$$T(s)=\frac{G(s)}{1+G(s)H(s)}$$
系统分类不是为了背名词,而是为了判断能用哪套工具。线性时不变系统可以用传递函数、极点零点和频域方法;非线性机器人系统通常只能在某个工作点附近线性化,或者直接用非线性控制方法。开环控制像提前播放一段命令,模型错了也不会自动纠正;闭环控制会把实际输出测回来和期望比较,因此能抵抗扰动。状态空间则把系统内部记忆写成状态 \(x\),输入 \(u\) 通过 \(B\) 影响状态变化,输出 \(y\) 通过 \(C,D\) 从状态和输入中读出。对于多关节机器人,状态空间比单输入单输出传递函数更自然。
状态空间里的 \(x\) 不是位置坐标的那个 \(x\),而是“状态向量”。例如一个一维质量块可以取状态 \(x_1=\) 位置、\(x_2=\) 速度,那么 \(\dot x_1=x_2\),\(\dot x_2=\) 加速度。这样二阶微分方程就被改写成两个一阶微分方程。机器人里也类似,常把状态写成 \([q,\dot q]^T\):前半是关节位置,后半是关节速度,状态的导数就包含 \(\dot q\) 和 \(\ddot q\)。
闭环传递函数的分母 \(1+G(s)H(s)\) 很重要,因为闭环极点来自这个分母。控制器调得好,本质上就是把闭环极点放到让系统稳定、响应快、超调不过大的位置。
4. PID 控制:计算题和概念题都常考
$$u(t)=K_pe(t)+K_i\int_0^t e(\xi)d\xi+K_d\dot e(t)$$
PID 控制器只看误差 \(e=q_d-q\) 或 \(e=x_d-x\),然后用三种方式生成控制量。P 项看当前误差,误差越大推得越用力;I 项看过去误差的累计,适合消除长期偏差,例如重力或摩擦造成的稳态误差;D 项看误差变化速度,像给系统加阻尼,误差正在快速变大时提前刹车,误差正在快速减小时避免冲过头。它之所以常考,是因为计算简单,但物理含义很丰富。
把这个公式拆开看会更清楚:\(e(t)\) 是当前时刻的误差;\(\int_0^t e(\xi)d\xi\) 是从开始到现在的误差面积,也就是“过去欠了多少账”;\(\dot e(t)=de/dt\) 是误差对时间的一阶导数,表示误差正在变大还是变小。如果 \(\dot e>0\),误差在扩大,D 项会推动系统更快纠正;如果 \(\dot e<0\),误差在缩小,D 项通常会减少输出,防止冲过目标。这里积分变量写成 \(\xi\),只是为了说明积分是在从 0 到 \(t\) 的整个历史上累加,不是只看当前一个点。
例 4.2 PID 输出计算
必会
场景交代: 画一个关节位置闭环:期望关节角和编码器测得的实际关节角相减得到误差。PID 控制器同时读取当前误差、误差历史积分和误差变化率。
题目: 某时刻误差 \(e=0.2\),误差积分 \(\int e\,dt=0.5\),误差导数 \(\dot e=-0.1\)。若 \(K_p=10,K_i=2,K_d=1\),求控制输出。
P = 10 x 0.2 = 2
I = 2 x 0.5 = 1
D = 1 x -0.1 = -0.1
+
u
2.9
PID 数值分项示意:控制输出不是只看当前误差,而是把 P、I、D 三项按各自增益加权后相加。图中元素: 绿色框是比例项 \(K_pe=10\times0.2=2\),蓝色框是积分项 \(K_i\int e\,dt=2\times0.5=1\),黄色框是微分项 \(K_d\dot e=1\times(-0.1)=-0.1\);三项进入求和点后得到 \(u=2.9\)。
建模顺序: 先画输入、控制器、被控对象和反馈信号,明确误差从哪里来。 把时域微分、误差积分或误差导数分别对应到公式项。 按公式逐项代入,保留每一项的中间结果。 最后解释输出大小和符号对系统运动意味着什么。
解析过程
先把三项分开算,这样不容易混淆。比例项是 \(K_pe=10\times0.2=2\),表示当前误差带来的主要纠正作用。积分项是 \(K_i\int e\,dt=2\times0.5=1\),表示过去累积误差还在推动控制器继续修正。导数项是 \(K_d\dot e=1\times(-0.1)=-0.1\),因为误差正在减小,所以它会略微抵消前两项。
$$u=10(0.2)+2(0.5)+1(-0.1)=2+1-0.1=2.9$$
最终输出 \(2.9\)。从控制效果看,P 和 I 想继续往误差减小方向推,D 项判断误差已经在回落,于是提供一点“刹车”,这就是 D 项减少超调的原因。
易错点: 积分项使用误差累积,不是当前位置;导数项符号要看误差变化方向。
例 4.3 P 控制稳态误差
概念+计算
场景交代: 画一个静止关节受到恒定外扰力矩,例如重力或摩擦偏置。控制器只有比例项,必须靠保留非零位置误差来产生抵消扰动的力矩。
题目: 关节受恒定重力扰动 \(2\,\mathrm{N\,m}\)。只用 P 控制 \(\tau=K_pe\),\(K_p=20\)。静态误差是多少?
P controller
tau=20e
balance
disturbance 2 Nm
20e = 2
e = 0.1
P 控制稳态误差示意:只有比例项时,要靠非零误差产生力矩来抵消恒定扰动。图中元素: 右侧红色箭头是恒定扰动 \(2\,\mathrm{N\,m}\),左侧 P 控制器输出 \(\tau=K_pe=20e\)。静态平衡要求 \(20e=2\),所以误差必须保留 \(e=0.1\),这就是只用 P 控制时的稳态误差。
建模顺序: 先画输入、控制器、被控对象和反馈信号,明确误差从哪里来。 把时域微分、误差积分或误差导数分别对应到公式项。 按公式逐项代入,保留每一项的中间结果。 最后解释输出大小和符号对系统运动意味着什么。
解析过程
稳态时关节不再运动,加速度和速度都为零,但外部扰动仍然存在。只有 P 控制时,控制器输出来自误差本身:\(\tau=K_pe\)。如果误差真的为零,P 控制输出也为零,就无法抵消 \(2\,\mathrm{N\,m}\) 的恒定扰动。
因此稳态必须留下一个非零误差,让 P 项产生恰好等于扰动的力矩:
$$20e=2\Rightarrow e=0.1\,\mathrm{rad}$$
所以仅 P 控制会有稳态误差。加入积分项后,即使当前误差变小,历史误差积分仍能提供额外输出;加入重力/扰动补偿也能减少 P 项需要承担的负担。
易错点: 不要说 P 控制一定能精确到零误差;有恒定扰动时通常不能。
例 4.3b PID 三项作用变式
进阶小题
场景交代: 画同一个关节闭环,但此刻实际位置刚好等于期望位置,所以当前误差为零。过去的误差积分和当前误差变化率仍储存在控制器中,可能继续产生输出。
题目: 某时刻 \(e=0\),误差积分 \(\int e\,dt=0.6\),误差导数 \(\dot e=0.2\)。若 \(K_p=8,K_i=1.5,K_d=2\),求 \(u\),并解释为什么误差为零时输出仍可能不为零。
P = 8 x 0 = 0
I = 1.5 x 0.6 = 0.9
D = 2 x 0.2 = 0.4
+
u
1.3
误差为零时 PID 仍可输出的示意:P 项只看当前误差,因此为 0;I 项和 D 项分别看历史累计和变化率,所以仍可能不为零。图中元素: 绿色框 \(P=8\times0=0\),蓝色框 \(I=1.5\times0.6=0.9\),黄色框 \(D=2\times0.2=0.4\),三项相加得到 \(u=1.3\)。
建模顺序: 先画输入、控制器、被控对象和反馈信号,明确误差从哪里来。 把时域微分、误差积分或误差导数分别对应到公式项。 按公式逐项代入,保留每一项的中间结果。 最后解释输出大小和符号对系统运动意味着什么。
解析过程
按 PID 公式逐项代入。当前误差为零,所以比例项没有输出;但积分项看的是历史误差面积,导数项看的是误差变化趋势,它们都可能不为零。
$$u=K_pe+K_i\int e\,dt+K_d\dot e=8(0)+1.5(0.6)+2(0.2)=1.3$$
这说明“当前误差为零”不等于“控制输出为零”。积分项可能还在补偿过去长期存在的偏差,D 项可能在根据误差变化趋势提前调整。实际控制中这也提醒我们:积分项太大可能导致 windup,D 项对噪声会敏感。
易错点: PID 不只看当前误差;I 看历史,D 看变化率。
5. 关节空间、任务空间与独立关节控制
关节空间 让 \(q(t)\) 跟踪 \(q_d(t)\)。编码器直接测量,控制简单。
$$e_q=q_d-q$$
任务空间 让末端 \(x(t)\) 跟踪 \(x_d(t)\),需要运动学/Jacobian 转换。
$$\dot x=J(q)\dot q$$
Independent-joint control 又叫 decentralized control:把多关节机械臂近似看成多个 SISO 关节,各关节分别用 PID/PD 控制。
关节空间控制的优势是反馈直接:编码器测到的就是 \(q\),所以误差 \(q_d-q\) 很容易得到。任务空间控制更贴近手术工具末端的位置和姿态,因为医生关心的通常是针尖、夹持器或内窥镜末端在哪里;但它必须借助正运动学和 Jacobian 把末端误差转换成关节运动。独立关节控制进一步简化,把每个关节当成单独的小系统,这样实现容易,但忽略了多关节之间的惯性耦合、科氏项和重力耦合,所以速度高、负载重或姿态变化大时效果会下降。
考
独立关节控制实现简单,但忽略关节耦合;低速轻载时常可用,高速重载时需要动力学补偿。
6. 计算力矩控制
核心是用动力学模型抵消非线性,让误差系统变成容易调的二阶系统。
$$\tau=M(q)v+C(q,\dot q)\dot q+g(q)$$
$$v=\ddot q_d+K_d(\dot q_d-\dot q)+K_p(q_d-q)$$
计算力矩控制可以理解为“先设计一个理想加速度 \(v\),再用动力学模型把这个理想加速度翻译成真实电机力矩”。\(v\) 里面包含期望加速度、速度误差反馈和位置误差反馈;如果模型完全准确,把 \(\tau\) 代回机器人动力学后,复杂的 \(M,C,g\) 会被抵消,误差动态近似变成 \(\ddot e+K_d\dot e+K_pe=0\)。这就是它比普通 PID 更适合高速多关节机器人的原因:它不是假装耦合不存在,而是主动补偿耦合。
按课件的说法,\(v\) 也可以看成“前馈加速度 + 反馈修正”。\(\ddot q_d\) 是 feedforward:它来自规划轨迹,即使当前误差为零也应该提前给出,让机器人按期望加速度运动;\(K_d(\dot q_d-\dot q)+K_p(q_d-q)\) 是 feedback:它根据实际测量到的位置和速度误差纠偏。两者合在一起,既利用模型预先给力,又在模型不准或有扰动时靠反馈拉回来。
这个“抵消”可以写得更直观。机器人真实动力学是 \(M(q)\ddot q+C(q,\dot q)\dot q+g(q)=\tau\)。如果控制器给 \(\tau=M(q)v+C(q,\dot q)\dot q+g(q)\),两边相同的 \(C\dot q\) 和 \(g\) 会消掉,剩下 \(M(q)\ddot q=M(q)v\),所以在理想模型下 \(\ddot q=v\)。再定义误差 \(e=q_d-q\),则 \(\dot e=\dot q_d-\dot q\),\(\ddot e=\ddot q_d-\ddot q\)。把 \(\ddot q=v\) 代入,就得到 \(\ddot e+K_d\dot e+K_pe=0\),这说明误差像一个带阻尼的二阶系统一样衰减。
例 4.4 计算力矩控制输出
必会
场景交代: 画单关节机器人,控制器先根据期望轨迹和实际测量值算出虚拟加速度 \(v\),再通过动力学模型把 \(v\) 转换成关节电机需要输出的力矩。
题目: 单关节模型 \(M=2\), \(C\dot q=0.5\), \(g=3\)。期望 \(q_d=1,\dot q_d=0,\ddot q_d=0\),当前 \(q=0.8,\dot q=0.1\),\(K_p=10,K_d=4\)。求 \(\tau\)。
errors
e=0.2
edot=-0.1
virtual accel
v=10e+4edot
v=1.6
dynamics
2v+0.5+3
tau=6.7
computed torque = feedback-designed acceleration + model compensation
计算力矩控制数值流程示意:先用轨迹误差算虚拟加速度 \(v\),再把 \(v\) 代入动力学模型得到实际力矩。图中元素: 左侧先算位置误差 \(q_d-q=0.2\) 和速度误差 \(\dot q_d-\dot q=-0.1\);中间得到 \(v=0+10(0.2)+4(-0.1)=1.6\);右侧动力学补偿为 \(\tau=2(1.6)+0.5+3=6.7\)。
建模顺序: 先画输入、控制器、被控对象和反馈信号,明确误差从哪里来。 把时域微分、误差积分或误差导数分别对应到公式项。 按公式逐项代入,保留每一项的中间结果。 最后解释输出大小和符号对系统运动意味着什么。
解析过程
先算虚拟输入 \(v\)。位置误差是 \(q_d-q=1-0.8=0.2\),速度误差是 \(\dot q_d-\dot q=0-0.1=-0.1\)。期望加速度为 0,所以 \(v\) 完全来自反馈项。
$$v=0+4(0-0.1)+10(1-0.8)=-0.4+2=1.6$$
这个 \(v=1.6\) 可以理解为控制器希望关节产生的“修正加速度”:位置落后带来正加速度,当前速度偏正带来一点负阻尼修正。
第二步用机器人动力学把 \(v\) 转成真实力矩。惯性项需要 \(Mv=2\times1.6=3.2\),再加上速度相关项 \(0.5\) 和重力项 \(3\)。
$$\tau=Mv+C\dot q+g=2(1.6)+0.5+3=6.7\,\mathrm{N\,m}$$
最后的 \(6.7\,\mathrm{N\,m}\) 不是单纯的反馈力矩,而是“反馈想要的加速度”加上模型补偿后的总力矩。
易错点: 先算虚拟输入 \(v\),再代入动力学补偿;别把 \(K_p\) 直接加到 \(\tau\) 上。
例 4.5 计算力矩控制含前馈加速度
进阶变式
场景交代: 画单关节机器人正沿规划轨迹运动,当前位置和速度都跟上了期望值,但规划轨迹下一瞬间需要继续加速。控制器因此仍要输出前馈加速度对应的力矩。
题目: 单关节模型 \(M=2\),\(C\dot q=0.3\),\(g=1\)。当前 \(q=q_d\)、\(\dot q=\dot q_d\),但期望轨迹加速度 \(\ddot q_d=2\)。求计算力矩控制输出。
tracking exact
e=0, edot=0
feedback = 0
feedforward
v=qdd_d=2
dynamics
2(2)+0.3+1
tau=5.3
zero error does not mean zero torque when desired acceleration is nonzero
计算力矩前馈加速度示意:即使位置误差和速度误差都为零,只要期望轨迹要求加速度,控制器仍要输出对应力矩。图中元素: 左侧框表示 \(q=q_d,\dot q=\dot q_d\),所以反馈误差项为 0;中间保留前馈加速度 \(v=\ddot q_d=2\);右侧代入动力学得到 \(\tau=2(2)+0.3+1=5.3\)。
建模顺序: 先画输入、控制器、被控对象和反馈信号,明确误差从哪里来。 把时域微分、误差积分或误差导数分别对应到公式项。 按公式逐项代入,保留每一项的中间结果。 最后解释输出大小和符号对系统运动意味着什么。
解析过程
这个题专门考前馈项。虽然当前位置误差和速度误差都为零,计算力矩控制中的虚拟输入 \(v\) 仍然包含期望加速度 \(\ddot q_d\)。
$$v=\ddot q_d+K_d(\dot q_d-\dot q)+K_p(q_d-q)=2+0+0=2$$
然后把 \(v\) 代入动力学补偿:
$$\tau=Mv+C\dot q+g=2(2)+0.3+1=5.3\,\mathrm{N\,m}$$
这说明跟踪一条有加速度的轨迹时,即使“此刻没误差”,控制器也要提前给出加速所需力矩。这个提前量就是 feedforward 的作用。
易错点: 误差为零时,前馈加速度 \(\ddot q_d\) 仍然可能要求非零力矩。
概念题与计算题自测
概念 1
场景交代: 画控制框图:开环只从输入命令直接到机器人,闭环则把传感器测得的输出反馈回来,与期望值相减形成误差。
闭环控制相比开环控制的主要优势是什么?
robot
controller+robot
Σ
open loop
closed loop
feedback reduces disturbance and model-error effects
开环/闭环对比示意:闭环把输出测量反馈回来修正误差。图中元素: 上方是开环,命令直接进入机器人;下方是闭环,传感器测得输出并反馈到求和点,与期望值相减形成误差。
查看答案与解析 闭环控制会测量实际输出,并把实际输出和期望输出相减形成误差。只要存在误差,控制器就会继续修正,因此它能抵抗模型不准、外界扰动和负载变化。开环控制只按预先计算好的输入执行,如果机器人模型和真实系统有偏差,它自己不会发现,也不会自动补偿。
计算 1
场景交代: 把系统看成一维输入输出模型,输出为位移 \(x(t)\),输入为 \(u(t)\) 或外力;零初值表示初始位移和速度都取 0。
求 \(G(s)=X(s)/U(s)\):\(\ddot x+3\dot x+2x=u\),零初值。
u(t)
x(t)
xddot + 3 xdot + 2 x = u
Laplace, zero initial: (s^2+3s+2)X(s)=U(s)
m=1, b=3, k=2
G(s)=X(s)/U(s)=1/(s^2+3s+2)
二阶传递函数代入示意:零初值下,二阶导数变为 \(s^2X(s)\),一阶导数变为 \(sX(s)\),所有输出项合并后再除以输入。图中元素: 左侧输入为 \(u(t)\),中间系统框写出 \(\ddot x+3\dot x+2x=u\),其中质量项系数为 1、阻尼项系数为 3、刚度项系数为 2;右侧输出为 \(x(t)\),下方给出 \(G(s)=1/(s^2+3s+2)\)。
查看答案与解析 零初值时,\(\ddot x\) 变成 \(s^2X(s)\),\(\dot x\) 变成 \(sX(s)\)。把所有含 \(X(s)\) 的项合并到左边,输入 \(U(s)\) 在右边。
$$(s^2+3s+2)X(s)=U(s)$$
$$G(s)=\frac{X(s)}{U(s)}=\frac{1}{s^2+3s+2}$$
概念 2
场景交代: 画一个带传感器反馈的控制系统,测量信号中叠加高频噪声;微分环节会对快速变化的噪声特别敏感。
D 项为什么容易受噪声影响?
Σ
PID
D: derivative
robot
noise n
measured feedback y+n
噪声反馈示意:微分项会放大测量信号中的快速变化成分。图中元素: 右侧传感器测得输出 \(y\) 时混入红色噪声 \(n\),反馈信号进入误差求和点;D 项对误差求导,因此高频噪声更容易造成控制输出抖动。
查看答案与解析 D 项对误差求导,而求导会放大快速变化的信号。传感器噪声通常变化很快、频率较高,即使幅值不大,求导后也可能变成很大的尖峰控制量。因此实际 PID 中 D 项常需要滤波,或者只对测量值的低频部分使用微分。