想象你正坐在音乐厅里,指挥家轻轻抬起双手。第一小提琴拉出旋律,圆号低声应和,定音鼓在最合适的瞬间加入。每位乐手都在演奏自己的部分,但真正让音乐成为整体的,是指挥家手中的那根指挥棒——他知道什么时候让某个声部响亮、什么时候让某个声部退后。机器人全身控制(Whole-Body Control,WBC)就是机器人的“指挥家”。传统方法让每个关节各管各的,而全身控制把手臂、腿、躯干看作一支完整的乐队,在同一个控制周期内同时算出所有关节该用的力,让机器人既能伸手够物、又能保持平衡、还能避免自碰撞。本文就用这支“乐队”贯穿始终,从运动学、动力学讲到优化与分层架构,把全身控制的里里外外讲明白。
全身控制是人形机器人实现“手脚并用、边动边稳”能力的关键技术。掌握它,意味着你有能力参与下一代具身智能机器人“大脑”的设计,这是当前机器人赛道最紧缺的算法方向之一。
目录
可视化演示
展示全身关节协同优化、雅可比矩阵关节空间与任务空间映射、平衡操作辅助优先级层次化控制及QP二次规划约束求解,含数据流背景动画。
本节配有交互动效(进入视口后自动加载,约 3KB)。
全身控制概念:一张总谱指挥整支乐队
一位指挥家接手新乐队,第一件事是看总谱:哪一段是主旋律、哪一段是伴奏、哪里渐强哪里收尾。他绝不会让每位乐手各拉各的调,而是让所有声部为一个统一的音乐目标服务。机器人全身控制就是机器人的“指挥家”——它不仅关心某个关节“自己想怎么动”,而是把手臂、腿、躯干看作一支乐队,统筹安排每个关节的力矩。
在机器人学里,一台人形机器人通常有二三十个以上的关节,每个关节称为一个自由度。传统做法像“独奏乐手各看各的谱”:给每个关节单独指定角度轨迹,彼此几乎没有沟通。可惜身体是耦合的——手伸出去拿东西,重心就跟着变,只顾自己角度的关节控制立刻失衡。全身控制把整个身体当作一个统一系统,在同一时刻、同一个优化框架里,决定所有关节该出多少力。
全身控制的定义可以浓缩为:在满足物理与安全约束的前提下,通过对全身关节力矩的协同优化,同时实现多个任务目标。输入是任务描述,比如“右手够到桌上的杯子”“躯干保持竖直”“双脚站稳定”;输出是每一个关节的力矩指令。核心目标分三层:完成任务(手到目标、身体到位)、维持稳定(重心始终落在支撑面内)、保护自身(关节角度、力矩上限、避免肢体自碰撞)。
总谱的意义正在于此:一首曲子的和谐不是靠某位乐手炫技,而是指挥家对整体约束的掌控。机器人的“总谱”就是任务误差与动力学约束的联合权衡——这是理解全身控制的第一块基石。人形机器人搬运、四足机器人爬坡、移动机械臂取物,都是这张总谱在不同乐队身上的演奏。
- 目标函数 min指挥家要选一组力度方案,让整体的“不满意程度”降到最低。
- 任务误差 e_i(q)第 i 个任务离目标差多远,例如手掌与目标物体的距离偏差。
- 权重 w_i主旋律优先级更高,优化器会优先消除它对应的误差。
- 约束符号 s.t.后面是所有方案都不能跨越的物理底线,约束必须被严格遵守。
- 动力学方程全部力矩必须与身体质量、速度效应、重力完全平衡,这是“不能造假”的铁律。
运动学基础:音符与位置
乐手拿到总谱后,第一件事是知道每个音符对应琴键的哪个位置。运动学就是机器人的“乐谱位置词典”:它回答“关节摆成什么角度,手和脚在哪里”,完全不涉及力与质量的概念。
自由度描述是基础。把每个关节的角度记作 q₁, q₂, …, qₙ,合并成一个向量 q,n 就是这台机器的自由度数量。人形机器人双腿双臂加腰,通常有 30 个左右的自由度。正向运动学(Forward Kinematics)解决“从关节到末端”:已知所有 q,求出手掌、脚掌在空间中的坐标 x。逆运动学(Inverse Kinematics)则反过来:已知希望手到达的位置,反推出每个关节应该转多少度。
连接两者的桥梁是雅可比矩阵 J。它是一张随当前姿态变化的“速度放大系数表”:关节哪怕只转一点点,末端也会运动,J 精确记录了这种从关节速度到末端速度的映射。更妙的是,力矩域存在对偶关系 τ = JᵀF:任务空间需要多大的力 F,都能借助 J 的转置折算成每个关节该出的力矩——这正是全身控制把“任务力”变成“关节力”的通道。
乐手看着谱子找到音,机器人看着 q 算出位置、看着 J 算出速度与力的关系。运动学这座“词典”,是后面所有控制算法都绕不开的地基——没有它,指挥家的任何手势都落不到具体的琴键上。
- x 任务空间坐标手掌或脚掌在世界坐标系中的位置。
- 正向运动学函数 f(q)把每个关节角度逐级拼接成末端位置的链条。
- q 关节向量所有关节角度组成的列向量,n 是自由度数量。
- 雅可比矩阵 J(q)随姿态变化的“速度放大系数表”,是 f 对 q 的偏导数。
- 速度映射关节怎么转(速度),末端就怎么动(速度)。
动力学建模:该用多大的力
乐谱只写了音高,没写力度。同一个音符,小提琴轻拉即可,低音提琴却要使出全身力气。动力学的任务,就是回答“这个关节到底该用多大的力矩”。
建模方法主要有两派。牛顿-欧拉法(Newton-Euler)从牛顿第二定律出发,像逐一检查乐手发力动作一样,从底座出发逐连杆递推速度和加速度,再反向递推每个关节承受的力与力矩,计算效率高,适合计算机实现。拉格朗日法(Lagrange)则换个角度:写出整台机器人的动能减势能,再对广义坐标求导,一气呵成得到运动方程,推导更优雅,但计算量通常更大。
无论哪一派,最终得到的方程都有统一形式:τ = M(q)q̈ + C(q,q̇)q̇ + G(q)。M(q) 是惯性矩阵,描述质量分布如何“抗拒”加速度;C(q,q̇)q̇ 项包含科氏力与离心力,代表运动连杆之间互相“拉扯”的影响;G(q) 是重力项,每个连杆都要对抗地球引力。把这三项加起来,就是电机需要输出的净力矩。
指挥家下达的不是“大声点”,而是确切的力度记号:这段用中强、那一段渐强到极强。动力学方程就是全身控制这张总谱上的力度记号——每一项都精确到牛顿·米,让每个关节的发力有据可依。
- τ 关节力矩向量每个关节电机需要输出的驱动力矩。
- M(q) 惯性矩阵质量分布决定了“推得动推不动”,而且随姿态改变。
- C(q,q̇)q̇ 科氏与离心项运动连杆间的相互拉扯,是速度的耦合产物。
- G(q) 重力项地球引力对每个连杆的持续拉扯。
- 等号求和三股需求相加,就是稳稳演奏所需的全部力度。
优化控制方法:指挥家的最优决策
指挥家排练时总在权衡:主旋律要突出、和声要饱满、不能盖过独奏,还要照顾乐手的体力。全身控制的“排练”发生在每个控制周期内——典型 1kHz,也就是每 1 毫秒都要做一次这样的权衡。
这种权衡被数学家写成二次规划(Quadratic Programming,QP)。目标函数把“任务误差”和“控制能量”都写成二次项:误差越小越好,出力越省越好。约束则把“不能违反的底线”写进去:力矩不能超过电机极限、关节不能碰到机械限位。任务误差是“软目标”,靠目标函数最小化;物理极限是“硬约束”,必须严格遵守。
任务进入目标函数的方式是加权最小二乘:每个任务前乘一个权重 w,权重越大,优化器越优先照顾它。例如“保持平衡”权重设为 100,“手部微小抖动抑制”设为 1,那么控制器宁可牺牲后者也不让前者出错。真实系统中,QP 必须由实时求解器(如 OSQP、qpOASES)在 1 毫秒内解完,解出的加速度再转换回关节力矩下发。
指挥家的“试听-调整”如今被数学接管:每一毫秒,优化器都在心里默念一遍“误差最小、不越界”,然后果断给出所有关节的力度方案——这就是全身控制最核心的决策引擎。
- 实际任务加速度第 i 个任务在当前状态下真实产生的加速度。
- 期望加速度 ẍ^d上层轨迹规划想让手或脚达到的加速度。
- 误差平方与权重任务误差平方和再乘权重 w,构成优化器“心疼程度”的度量。
- 正则项 λ‖q̈‖²对剧烈动作收费,避免无意义的浪费与危险。
- 力矩约束任何解出来的方案,最终力矩都必须落在电机允许区间内。
分层控制架构:从总谱到分谱
一场交响乐不会只有指挥一个人对每位乐手喊话。指挥给声部长一个眼神,声部长再带领本声部,信息逐层传递。全身控制的工程实现同样如此:把所有决策都塞进一个优化器,往往既不实时也不可维护。
典型的分层架构从上到下分四层。外层任务规划层(Task Planning)决定“现在要做什么”,比如是走过去拿杯子还是先蹲下;中层运动生成层(Motion Generation)把任务翻译成参考轨迹,比如手的位置随时间怎么变、重心轨迹怎么规划;内层全身控制层(Whole-Body Control)就是我们前面讲的优化器,它接收参考轨迹,结合当前状态算出全身力矩;最底层关节伺服层(Joint Servo)真正驱动电机,并把编码器、力传感器的读数传回上层。
层与层之间靠清晰的数据流衔接:上层输出“参考轨迹”,中层输出“期望加速度与期望力”,底层反馈“实际状态”。这种接口让每一层都能独立测试、替换,甚至把某一层换成深度学习模块,而不会牵一发动全身。层级之间还有一个重要的数学接口——零空间投影,它保证上层(主任务)的指令不被下层(次要任务)干扰。
从总谱到分谱,指令一层层细化。分层不是为了炫技,而是让“指挥”这件复杂的事变成四件简单的事——这正是全身控制系统能稳定跑起来的工程秘诀。
- 伪逆 J†把主任务速度“最小二乘”地翻译回关节速度。
- 主任务速度例如手掌跟踪目标轨迹所对应的期望关节速度。
- 零空间投影矩阵把任何动作投影成“不影响主任务”的分量。
- 次要任务速度保持姿态、避免碰撞等低优先级任务的速度。
- 速度合成叠加之后,主任务纹丝不动,次要任务见缝插针。
多任务与平衡:同时进行的声部
交响乐的高潮往往是多声部同时进行:小提琴唱主旋律、大提琴铺低音、定音鼓敲节奏。机器人也一样,最常见的场景是“边动边稳”——手在干活,身体还得站得住。
多任务协调的第一要件是优先级。典型任务列表可能包括:保持平衡(最高优先级)、手部到达目标(高)、躯干保持竖直(中)、头部朝向舒服(低)。全身控制用两种方式体现优先级:一是软优先级,在 QP 里用权重 w 表达;二是硬优先级,用零空间投影把次要任务限制在“不影响主任务”的子空间里。
平衡判据这块,最常用的概念是重心(Center of Mass, COM)与零力矩点(ZMP)。把每个连杆的质量乘位置累加再除以总质量,得到全身质心;把质心投影到地面,只要投影落在双脚围成的支撑多边形内,机器人就不会倒。慢速运动时 ZMP 判据退化为这个简单规则。此外,人形机器人的自由度远多于任务所需的 6 个,多出来的冗余度正好用来完成“装饰音”——调整姿态、避开障碍、实现省力,这就是冗余度利用。
各声部再怎么交错,音乐的“重心”始终在指挥家手里。机器人的重心也一样:只要它乖乖落在脚掌画出的多边形里,手再忙、身体再扭,整体依然稳稳当当——这就是全身控制“边动边稳”的底气。
- 分子加权和每个连杆的质量乘以其位置,再全部相加。
- 分母总质量把质量加权和归一化成“平均位置”。
- 重心位置 x_com全身质量在地面的投影点,是平衡的“定盘星”。
- 属于符号 ∈判断投影点是否落在安全区间内。
- 支撑多边形双脚脚印围出的凸区域,重力落在其中就不会产生倾倒力矩。
工程实践挑战:从排练厅到舞台
排练再完美,现场演出总有意外:琴弦跑音、观众掌声、舞台震动。工程实践就是处理这些“现场事故”,全身控制从仿真走向实物,有四大关要过。
第一关是实时计算瓶颈。控制频率 1kHz,意味着求解器加通信总共只有 1 毫秒预算;超时一次,就只能使用上一周期的旧指令,系统可能失稳。优化器要精心裁剪约束规模、使用避免动态内存分配的求解器、甚至用 FPGA 加速。第二关是模型不确定性。负载变了、关节磨损了、地面软硬不同,动力学方程里的 M、C、G 都不再准确,必须靠鲁棒控制、自适应参数或学习型模型兜底。
第三关是状态估计。真实机器人看不到自己的重心,只有编码器、IMU、力传感器这些“间接证据”,需要用卡尔曼滤波把多路信号融合出可靠的位姿、速度与接触力。第四关是安全与鲁棒。力矩限幅、碰撞检测、自碰撞避免、急停与遥操作切换,都是量产机器人必须内置的“安全气囊”。
现场指挥的每个拍点都必须卡准,迟到的指令就像迟到的鼓点,整首曲子都会乱套。全身控制从论文到产品,拼的正是这些“现场功夫”——实时、鲁棒、安全,一个都不能少。
- 求解时间 T_solveQP 求解器算出全身力矩所花的时间。
- 通信时间 T_comm读写传感器与下发指令的网络延迟。
- 控制周期 T_s两次控制之间的间隔,1kHz 对应 1 毫秒。
- 不等式 ≤总时长一旦超周期,指令就过期,系统可能失稳。
- 控制频率 f_s必须覆盖机器人最重要的运动模态,否则高频振荡会被漏掉。
AI 应用场景
仓储物流:人形机器人抱箱转身
阶段:运动规划与全身控制阶段
解决的问题:传统机械臂固定在基座上,抱起重物并转身时重心容易越出底座,导致倾覆。全身控制把“抱稳箱子”和“保持平衡”写成两个任务,在力矩分配中同时满足,让机器人像叉车司机一样用腿和腰协同发力。
具体案例:某物流仓库的人形机器人从货架抱起 15kg 纸箱,转身放到 AGV 上。控制器实时估计重心,将支撑腿后撤与躯干前倾的补偿力矩加入 QP,全程保持重心投影不离开双脚围成的支撑多边形。
家庭服务:机器人双手整理桌面
阶段:任务规划-运动生成-整机控制阶段
解决的问题:桌面整理需要“右手够杯、左手扶持、躯干微侧”同时进行。分层架构把任务拆解到不同层级,零空间投影确保次要任务(保持躯干姿态)不干扰主任务(手部精确到达)。
具体案例:服务机器人在厨房把盘子从桌面端到洗碗机。任务规划层决定先后顺序,运动生成层输出手的平滑轨迹,全身控制层在保证手部精度的同时调整髋部与膝部,既保持视线舒适又维持重心稳定。
灾害救援:四足机器人爬碎石坡
阶段:接触力优化与姿态控制阶段
解决的问题:复杂地形下四足机器人需要多足协同分配支撑力。全身控制将接触力优化与机体姿态控制结合,每毫秒重新分配四条腿的支撑力,同时保持机体水平、避免打滑。
具体案例:在震后废墟演练场,四足机器人通过松散的碎石坡时,全身控制器动态调整四足落点与支撑力比例,即便某只脚打滑,也会立刻把支撑力转移到其余三足,维持机身稳定。
Python 演示
import numpy as np # 全身控制中的关节力矩分配(简化示例)# 原理: 已知任务需要的广义力 F(竖直支撑 + 水平推进)# 求解: min ||tau||^2 s.t. J tau = F, 即 KKT 方程# 用途: 把全身任务力"分配"到踝/膝/髋/肩各关节 class TorqueAllocator: def __init__(self, jacobian, tau_limit): self.A = np.asarray(jacobian, dtype=float) # (m, n) 力矩到任务力的映射 self.tau_max = np.asarray(tau_limit, dtype=float) self.n_joints = jacobian.shape[1] def allocate(self, f_desired): n = self.n_joints m = self.A.shape[0] kkt = np.zeros((n + m, n + m)) kkt[:n, :n] = 2.0 * np.eye(n) # 目标: 全身力矩平方和最小 kkt[:n, n:] = self.A.T # 等式约束的转置块 kkt[n:, :n] = self.A # 等式约束: J tau = F rhs = np.zeros(n + m) rhs[n:] = f_desired # 任务目标放在右端项 sol = np.linalg.solve(kkt, rhs) tau = sol[:n] return np.clip(tau, -self.tau_max, self.tau_max) # 硬限幅保护电机 if __name__ == "__main__": J = np.array([ [1.0, 0.8, 0.5, 0.2], # 竖直支撑方向: 腿部贡献更大 [0.1, 0.2, 0.3, 0.6] # 水平推进方向: 手臂贡献更大 ]) alloc = TorqueAllocator(J, tau_limit=[80, 150, 120, 50]) F = np.array([150.0, 30.0]) # 需要 150N 支撑 + 30N 推进 tau = alloc.allocate(F) print("关节力矩(踝/膝/髋/肩):", np.round(tau, 2)) print("实际广义力:", np.round(J @ tau, 2))
kkt[:n, :n] = 2.0 * np.eye(n)把“全身总共最省力”写成优化目标(力矩平方和最小)kkt[n:, :n] = self.A把“任务力必须达到”写成等式约束,这是任务进入控制器的关键rhs[n:] = f_desired等号右边放着机器人要实现的任务目标(支撑力与推进力)sol = np.linalg.solve(kkt, rhs)一次矩阵求解同时放出所有关节力矩,相当于指挥家的“一锤定音”np.clip(tau, -self.tau_max, self.tau_max)把超限力矩压回电机安全范围,这是硬约束的工程兜底print("实际广义力:", np.round(J @ tau, 2))用映射矩阵反向验证分配结果是否真的产生了目标任务力
常见误区
误区我一开始以为全身控制就是所有关节一起使劲,全身都发力,这样反应才快、动作才够猛。
正解全身控制的精髓是“需要时出力、不需要时不动”。它在一个优化问题里权衡任务优先级和物理约束,常常有些关节故意不发力,甚至反向制动——比如伸手拿东西时,膝盖微微后屈来把重心拉回脚掌中央。指挥家绝不会让所有乐手同时发出最大声。
为何常见:“全身”两个字容易让人误以为所有部位都要参与,忽视了“协同优化”其实包含“选择哪些关节出力”。
误区只要把质量、惯量都精确测出来,全身控制照着模型算就行,传感器和状态估计可以省掉。
正解模型永远有误差:负载变化、关节磨损、地面软硬都会让 M、C、G 偏离真实值。真实系统必须用卡尔曼滤波等估计器融合 IMU、编码器、力传感器,把模型输出和测量值互相校正。现场演出永远有意外,光靠排练谱子远远不够。
为何常见:教科书上的方程都是精确的,让人误以为实机也如此,忽略了“建模”和“真实世界”之间的缝隙。
误区1kHz 不够快,干脆跑到 10kHz,感觉频率越高反应越快、系统越稳。
正解频率不是免费的午餐。每个周期要完成状态估计、优化求解和通信,频率过高会让 QP 求解超时,反而得到“过期指令”。执行器本身也有带宽限制,盲目提高频率只会让系统在噪声里发抖。工程上选择能覆盖最重要运动模态的最小够用频率。指挥家的拍点再准,也要给乐手呼吸的时间。
为何常见:直觉上“越快越好”很合理,却忽略了计算开销和硬件执行带宽的约束。
误区既然次要任务在零空间里,那它就不重要,随便写写就行。
正解零空间任务在真实系统中的价值常被低估:保持关节居中可以防止撞限位,保持姿态能为下一步动作铺路,避碰任务更是安全底线。它虽然不改变主任务的结果,却是舒适性与安全性的关键——就像伴唱声部不抢主旋律,但少了它歌曲就单薄了。
为何常见:名字叫“次要”“零空间”,容易让人误以为等于“无所谓”,忽略了它在安全和舒适上的作用。
误区只有双足人形机器人才需要全身控制,普通机械臂或轮式机器人用不上。
正解移动机械臂、四足机器人、外骨骼都需要全身控制。任何“多个任务 + 多个关节 + 物理约束”的系统都适用。轮式底座加机械臂在伸出重臂搬运时,同样需要重心协调和力矩分配,只是支撑多边形的形状不同而已。
为何常见:全身控制的教科书例子大多是人形机器人,导致初学者误以为它是人形的专属技术。
面试题
Q1. 全身控制与传统“各关节独立控制”最本质的区别是什么?
- A.采用更高精度的电机元件
- B.在全系统范围做协同决策优化← 正确答案
- C.完全不依赖任何传感器反馈
- D.只适用于双足人形机器人
答案:B。独立关节控制只追求“每个关节角度到达指令值”,互相之间没有协调;全身控制把全部关节作为决策变量,在同一个优化问题里权衡任务、平衡与约束。它更像指挥家而非散装乐手。B 正确,A、C、D 与定义无关或过于片面。
Q2. 正向运动学解决的问题是什么?
- A.根据关节角度求末端位置← 正确答案
- B.根据末端位置反推关节角
- C.计算电机的温度变化
- D.估计地面的摩擦系数
答案:A。正向运动学指已知关节角度求末端位置,对应 x = f(q) 的方向;B 描述的是逆运动学,C、D 与运动学无关。就像乐手看到指法符号就知道按哪个键,正向运动学把“角度”翻成“位置”。
Q3. 雅可比矩阵 J 的核心作用之一是?
- A.把关节速度映射为末端速度← 正确答案
- B.把视觉图像映射为音频
- C.直接输出关节的力矩上限
- D.替代重力补偿的所有计算
答案:A。雅可比矩阵将关节速度映射为末端速度,即 ẋ = Jq̇;其转置还用于力映射 τ = JᵀF。它就像乐谱里的“移调表”,把关节空间的运动翻译成任务空间的运动。B、C、D 均与雅可比的数学定义无关。
Q4. 以下哪些属于全身控制中的典型约束?
- A.关节力矩不能超过电机极限← 正确答案
- B.关节角度不能超过机械限位← 正确答案
- C.肢体之间不能发生自碰撞← 正确答案
- D.电池电量必须始终显示在 UI
答案:ABC。全身控制的硬约束包含力矩上限、关节机械限位、自碰撞避免等,它们保护机器人的物理安全;D 属于上层 UI 功能,不是运动控制层面的约束。约束就像指挥家给乐手划定的“不能越过的音量红线”。
Q5. 动力学方程 τ=M(q)q̈+C(q,q̇)q̇+G(q) 中,C(q,q̇)q̇ 代表什么?
- A.地球重力对连杆的拉力
- B.科氏力和离心力的耦合← 正确答案
- C.电机内阻发热损耗
- D.关节编码器的噪声
答案:B。C(q,q̇)q̇ 项是科氏力与离心力的合成,来自连杆间相对运动引起的耦合效应;A 是 G(q),C、D 与动力学模型无关。它就像多个乐器同奏时空气振动互相影响,属于“运动中的互相牵拉”。
Q6. 关于 QP 中的任务权重 w,下列说法正确的是?
- A.主任务权重通常设置得更大← 正确答案
- B.权重一旦设定就不能改变
- C.权重表达任务之间的相对优先级← 正确答案
- D.所有任务权重必须完全相等
答案:AC。权重 w 表达任务的相对优先级,主任务(如保持平衡)权重更大,优化器会优先消除它的误差;权重可以根据场景动态调整,并非一成不变;D 让所有任务平等反而失去了主次。权重如同指挥家对声部音量比例的现场调度。
Q7. “重心投影必须落在支撑多边形内”这条判据主要用于?
- A.判断机器人是否会摔倒← 正确答案
- B.判断机器人是否联网
- C.判断关节是否过热
- D.判断电量是否充足
答案:A。这条判据判定静态或准静态稳定:重心投影落在双脚围成的多边形内,重力线不会产生倾倒力矩,机器人就不会倒;慢速运动时 ZMP 判据也退化为它。B、C、D 与平衡稳定性无关。
Q8. 零空间投影 (I−J†J)q̇_h 的作用是什么?
- A.让次要任务不影响主任务← 正确答案
- B.让主任务完全无法执行
- C.把所有任务都变成硬约束
- D.消除重力对系统的全部影响
答案:A。(I−J†J) 是零空间投影矩阵,把它乘上次要任务速度 q̇_h,得到的运动对主任务没有任何影响,这就是“不打扰主旋律的装饰音”。B、C、D 是对零空间概念的曲解。
Q9. 为什么真实机器人需要状态估计而不能只靠动力学模型?
- A.模型参数存在不确定性误差← 正确答案
- B.传感器测量自身有噪声漂移← 正确答案
- C.环境扰动很难被提前建模← 正确答案
- D.为了让代码看着更加复杂
答案:ABC。模型参数误差、传感器噪声与漂移、环境扰动三者都是真实世界的常态,状态估计用多路测量融合来修正模型预测;D 没有实际意义。就像现场演出的音准,不能只靠排练时的谱子,必须实时听、实时调。
Q10. 控制频率从 1kHz 提高到 10kHz 后,下列说法最合理的是?
- A.性能必定线性提升十倍
- B.求解超时风险上升并可能失稳← 正确答案
- C.模型误差会自动消失
- D.电机发热问题必然消失
答案:B。频率提高十倍意味着每个周期预算缩到 0.1ms,QP 求解极易超时,超时后使用旧指令反而破坏稳定性;性能不会线性提升,模型误差与电机发热也不会因频率升高而消失。频率的选择是工程权衡,而非越大越好。