想象你坐在副驾,看两位司机开同一辆车跑同一段山路。第一位是刚拿驾照的新手:眼睛死死盯着车头与车道线的距离,一偏就立刻打方向。动作干脆,却总是矫枉过正——车头刚摆正,又冲向了另一边,车身左摇右晃。第二位是开了二十年车的老司机:他提前看清下一个弯道、前方缓行的车流、路边的限速牌,心里默默规划好这一脚油门、那一次刹车,全程如丝般顺滑。 汽车控制领域,恰好也有这样两种风格的“司机”——PID控制器与MPC控制器。PID像那位新手,靠当前的误差做本能反应,结构简单、皮实可靠;MPC像那位老司机,带着预测模型展望未来几步,沉着应对各种限制条件。在自动驾驶的横纵向控制中,两者各有所长:基础场景让新手司机来,复杂场景请老司机上,必要时两人配合、无缝换手。这篇文章就用“新手与老司机”的故事,带你拆解PID和MPC的原理、参数调优、融合部署以及控制品质的评估方法,弄懂自动驾驶的“方向盘与油门”,到底是怎么被指挥的。

岗位关联

掌握PID/MPC是自动驾驶控制工程师的核心功底,直接关系到量产车的安全与驾乘体验,也是面试与实战中绕不开的硬核技能。

目录
  1. 可视化演示
  2. 控制基础
  3. PID原理
  4. PID调优
  5. MPC原理
  6. MPC特性
  7. 融合策略
  8. 品质评估
  9. 工程部署
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

动态展示PID与MPC控制器原理对比、PID三环反馈机制、MPC滚动优化机制与融合选型最佳实践。

本节配有交互动效(进入视口后自动加载,约 3KB)。

控制基础

学开车的第一个练习是什么?不是踩油门,而是“看远点、握稳方向”。教练总喊:“眼睛看远,别只盯着车头!”因为只有知道车在路中的真实位置,才谈得上修正。控制系统做的第一件事,就是给机器装上一双“眼睛”——用传感器测量现实,再与期望目标比较。

“盲开”对应开环控制:系统按设定好的指令执行,完全不看结果。好比蒙着眼开车,方向盘角度是出发前定死的,遇上坡道、侧风、轮胎打滑全都不管,路径必然越偏越远。自动驾驶绝不能这样,必须引入闭环:测出实际状态,算出与目标的差距,再据此调整指令。

闭环控制有三要素:被控对象(车辆)、传感器(测量位置与速度)、控制器(根据误差生成指令)。控制器每时每刻都在回答一个问题:“当前偏差有多大,该怎么动?”这个偏差就是误差,记为 \( e(t) \):

新手司机盯着车道线修正方向,就是最朴素的闭环;教练让“看远点”,等于在这双眼睛上加了“预测”——这为后面的MPC埋下了伏笔。

e(t)=r(t)−y(t)\displaystyle e(t) = r(t) - y(t)
误差就是“我想在的位置”减去“我实际在的位置”。反馈控制的一切,都围绕这个差值展开。
  1. 期望目标\( r(t) \) 是系统希望到达的目标信号,比如期望车速、期望车道位置。
  2. 实际输出\( y(t) \) 是传感器测到的系统当前状态,代表“现实”。
  3. 误差定义\( e(t) = r(t) - y(t) \),用“目标减现实”得到差距,所有反馈控制都从这个差距出发。

PID原理

现在,新手司机正式上路。他的驾驶风格可以总结为三条本能:偏得越多,方向打得越多——这是比例;总是偏右,就持续向左多修一点——这是积分;眼瞅要压线了,赶紧提前回轮——这是微分。这三条本能合在一起,就是PID控制器。

PID把误差 \( e(t) \) 分别做三件事:放大、累积、求变化率,再相加成最终控制量 \( u(t) \):

所以PID是“当下响应型”选手:反应快、结构简单、无需模型。但它的“预测”只是对误差斜率的近似,看不到远方的路况,这就是它和新手司机的共同局限。

u(t)=Kp e(t)+Ki∫0te(τ) dτ+Kdde(t)dt\displaystyle u(t) = K_p\, e(t) + K_i \int_{0}^{t} e(\tau)\, d\tau + K_d \frac{d e(t)}{d t}
PID的输出等于“当下误差乘以比例增益、历史误差的累积、误差变化趋势”三者之和。三个系数像三个旋钮,分别决定反应力度、记性好坏和预判能力。
  1. 误差信号输入\( e(t) \) 是每个时刻目标与实际的差值,是PID的“面粉”。
  2. 比例环节\( K_p e(t) \),把当前误差放大 \( K_p \) 倍,形成最基本的反应力度——偏多少,拉多少。
  3. 积分环节\( K_i \int_{0}^{t} e(\tau)\, d\tau \),把历史误差一路累积起来,专治“长期慢性病”——稳态误差。
  4. 微分环节\( K_d \frac{d e(t)}{d t} \),看误差的变化率,判断正在靠近还是跑远,提前反向施力、阻尼振荡。
  5. 总控制量\( u(t) \) 是三个环节的加权和,输出给执行器,比如舵机、油门、刹车。

PID调优

教练开始调教新手:“方向打太猛车就晃,轻轻打又并不了线;总是压线要记得多修一点;提前看趋势,别等偏了才动!”这三句话,分别对应 \( K_p \)、\( K_i \)、\( K_d \) 的调整方向。

\( K_p \) 决定“反应力度”:太小了响应慢吞吞,太大了矫枉过正、车身画龙。\( K_i \) 负责“清账”:它能消除稳态误差,但累积过头就会造成低频振荡。\( K_d \) 是“阻尼器”:抑制超调,但放太大就会被测量噪声干扰,方向盘高频抖动。

工程上常用“先比例、后积分、再微分”的整定口诀。先只留 \( K_p \),从小到大调到系统开始等幅振荡,记下临界增益和振荡周期;再把 \( K_p \) 缩到六成左右,加入 \( K_i \) 消除残余误差;最后加 \( K_d \) 抑制超调。实车标定时,不同车速、不同载荷需要不同的参数表,存成表格按工况查询。若系统持续振荡,多半是 \( K_p \) 偏大或 \( K_d \) 不足,这是最常见的振荡诊断套路。

调参就像教练调教新手司机:找到“力道、记忆、预判”的最佳组合,让这位司机在大多数场景下都能稳稳走在车道里。

MPC原理

老司机为什么开得稳?因为他“看得远”:前方五百米的路况,心里已经有了一张未来几秒的地图,提前松油门、预打方向。MPC(模型预测控制)的核心理念正是如此——带着模型看未来,再从容做决策。

MPC每一拍都做三件事:用预测模型从当前状态推演未来 \( N \) 步的轨迹;在满足约束的前提下优化出一串控制序列,使成本函数最小;只执行第一步,下一拍重新推演。这就是“滚动优化”——不是一次定终身,而是走一步看一步、步步更新。

MPC的成本函数要同时压住“跟踪误差”和“控制量变化”:

同时还必须满足物理约束:

看得远,才能从容。这就是MPC在自动驾驶中能优雅处理多约束的根本原因。

J=∑i=1N(yref(k+i)−ypred(k+i))2+λ∑i=0N−1Δu2(k+i)\displaystyle J = \sum_{i=1}^{N} \left( y_{\text{ref}}(k+i) - y_{\text{pred}}(k+i) \right)^2 + \lambda \sum_{i=0}^{N-1} \Delta u^2(k+i)
s.t.umin⁡≤u(k+i)≤umax⁡,i=0,1,…,N−1\displaystyle \text{s.t.} \quad u_{\min} \le u(k+i) \le u_{\max}, \quad i = 0,1,\ldots,N-1
老司机的“心里地图”就是预测模型,“最优决策”就是滚动优化,“不超速、不猛刹”就是约束公式。
  1. 预测时域\( N \) 是老司机“看得多远”——每一步向前推演 \( N \) 个采样周期。
  2. 跟踪误差平方\( \left( y_{\text{ref}}(k+i) - y_{\text{pred}}(k+i) \right)^2 \) 衡量未来每步“想在哪”与“预测在哪”的差距,平方让大偏差付出更大代价。
  3. 控制变化惩罚\( \Delta u^2(k+i) \) 限制控制量不要大起大落,防止急加速、急刹车。
  4. 权衡权重\( \lambda \) 在“追得紧”和“开得柔”之间做取舍,越大越平顺、越小越激进。
  5. 约束范围\( u_{\min} \le u(k+i) \le u_{\max} \) 保证油门、刹车、转向指令不超出执行器物理极限,预测时域内每一步都要遵守。

MPC特性

老司机的厉害之处,在于能同时照顾许多“规则”:车上坐着老人要平缓、前方有车要保持距离、路边限速牌要遵守。新手司机(PID)只盯一个误差,顾不了这么多约束。

MPC天然就是一个多约束优化器:油门/刹车有物理上限(输入饱和)、车速和跟车距离有安全范围(输出限制)、急刹会产生不舒适(变化率限制),这些都能直接写进约束条件里,由求解器统一处理。相比之下,PID要处理这些约束,只能靠人工设计限幅和逻辑判断,繁琐且容易顾此失彼。

代价是计算量大:每一步都要求解一个带约束的优化问题。预测时域 \( N \) 越大,“看得越远”,但计算量随之线性增长;权重 \( \lambda \) 越大,控制越平缓,但跟踪越懒。更关键的是模型依赖——MPC的控制质量强依赖预测模型的精度。模型不准,远见就变成了错觉:老司机记错了路况,反而会开错路。所以实车部署时,模型辨识和在线校准是MPC的重头戏。

老司机也有弱点:脑子转得慢、依赖经验。所以MPC虽强,也不能独挑所有场景,这才有了它与PID的融合搭配。

融合策略

长途高速上,老司机可以让新手来开定速巡航,自己歇一歇;到了复杂匝道,再亲自接管。两种风格无缝换手,乘客完全无感——这就是控制融合的精髓。

实车中常用的融合方式有三种。场景切换:低速拥堵、直线巡航用PID求快,高速变道、多约束场景用MPC求稳。串级结构:MPC作外环,输出期望速度;PID作内环,快速响应跟踪这个速度。冗余备份:主控制器故障时,备用的控制器立刻接管,保证安全不中断。

切换控制最怕的是“换手顿挫”——切换瞬间控制量突变,车身猛地一闯。解决办法是无扰切换(bumpless transfer):切换前让两个控制器的状态互相跟踪,切换时从当前控制量平滑过渡,必要时加上速率限制。实车上还要做状态同步,把PID的积分项初值设为MPC当前输出的对应值,让两套策略“心里想的一致”。

新手与老司机配合的关键不是“谁更强”,而是“何时换手、怎么换得让乘客无感”。控制融合,正是这个道理。

品质评估

怎么评价一个司机开得好不好?乘客会看三点:稳不稳、快不快、准不准;工程师还会加一条——换个路况还稳不稳。这四个字,对应控制领域的四大品质指标。

稳定性:系统响应不发散,车不会越开越晃、最后失控。快速性:调节时间短,多久能回到车道中央。准确性:稳态误差小,最终与目标位置还有多大差距。鲁棒性:当车辆载荷变化、路面变滑、参数漂移时,系统依然能保持稳定和性能。

工程上常看阶跃响应:超调量太大说明“矫枉过正”,调节时间太长说明“反应迟钝”。为了量化“总痛苦”,还会用积分型指标把整个响应过程综合成一个数:

给司机打分不能只看某一秒,要看整段路的综合表现;给控制器打分,同样要看整个响应过程的积累。这也是实车验收时,工程师最常引用的指标。

JISE=∫0∞e2(t) dt\displaystyle J_{\text{ISE}} = \int_{0}^{\infty} e^2(t)\, d t
ISE把每个时刻的误差平方再积分:误差越大、拖得越久,这个分数就越高。它是衡量控制器“整体表现”的体检表。
  1. 误差平方\( e^2(t) \) 把偏差平方,放大明显偏差、弱化微小偏差,让大误差成为主导惩罚。
  2. 积分累加\( \int_{0}^{\infty} e^2(t)\, d t \) 把整个响应过程的“惩罚”累加起来,得到一个总分——分越低,控制品质越高。

工程部署

教练教得再好,也要上考场。实车部署就是控制器的“路考”,从这里开始,一切以安全为准绳。

部署之路分四步走:模型在环(MIL)仿真验证算法逻辑 → 软件在环(SIL)验证代码 → 硬件在环(HIL)接入真实ECU跑闭环 → 实车标定最后路试。仿真里跑不通的策略,绝不上车。每一道关卡都像驾考科目,层层过滤风险。

实车部署还必须配齐安全冗余:控制器输出限幅(防止异常指令直接打到执行器)、看门狗超时监测(程序卡死自动降级)、控制量速率限制(防止指令突变导致车身猛闯)、以及功能安全标准(如ISO 26262)的合规流程。标定环节要把 PID 参数表做成随车速、载荷、模式自适应的查询结构——不同工况翻不同的“教案”。

路考通过不等于一劳永逸。老司机也要定期复训,实车部署同样要持续采集线上数据、监测参数漂移,发现异常及时更新标定。这才是量产车安全合规的长久之道。

AI 应用场景

车道居中保持(LKA)

阶段:感知 → 决策 → 控制(横向控制环节)

解决的问题:车辆在车道内轻微偏移时,需要毫秒级的方向修正。传统机械转向难以做到连续微调,且不同路面摩擦系数不同。基于视觉车道线检测加PID横向控制器,实时计算方向盘修正量,就能实现稳定的车道居中。

具体案例:某量产车型在高速巡航时,前视摄像头识别车道线,PID控制器根据横向偏差和航向偏差输出方向盘转角,修正频率约50Hz。实测居中性优于±10厘米,即使遇到路面接缝扰动,也能在0.5秒内拉回车道中心。

自适应巡航(ACC)

阶段:感知 → 决策 → 控制(纵向控制环节)

解决的问题:跟车时既要保持安全车距,又要平缓加减速。只用PID盯速度误差,容易急加速、急减速,乘客前仰后合。MPC能同时把“车距约束、加速度限制、舒适性”写进优化问题,一次求解出最优的油门/刹车指令。

具体案例:某新能源车ACC系统使用MPC纵向控制器,预测时域约2秒,约束包括加速度不超过±3m/s²、最小跟车距离2.5米。实测在目标车急刹时,本车减速度平滑建立,无“点头”式刹车,驾乘平顺性显著提升。

城市NOA中的控制融合

阶段:规划 → 跟踪控制

解决的问题:城区场景复杂多变,单一控制器难以兼顾。量产方案采用“PID+MPC融合”:低速泊车、拥堵跟车用PID求快,高速变道、弯道限速用MPC求稳,切换时做无扰切换,保证乘客无感。

具体案例:某车企城市NOA系统在匝道汇入场景切换到MPC时,目标油门从PID输出的20%平滑过渡到MPC的18.5%,全程纵向加速度变化小于0.2m/s²,乘客几乎无感知。这套融合方案已通过数万公里路试验证。

Python 演示

python96 行
class SimpleVehicle:    """带一拍执行延迟的一阶惯性被控对象"""     def __init__(self, tau=1.0, dt=0.1):        self.tau = tau        self.dt = dt        self.state = 0.0        self._last_u = 0.0     def step(self, u):        u_eff = self._last_u        self._last_u = u        self.state += (self.dt / self.tau) * (u_eff - self.state)        return self.state  class PIDController:    """经典增量式 PID 控制器"""     def __init__(self, kp, ki, kd, dt=0.1):        self.kp = kp        self.ki = ki        self.kd = kd        self.dt = dt        self.integral = 0.0        self.prev_error = 0.0     def step(self, refs, k, obs, last_u):        e = refs[k] - obs        self.integral += e * self.dt        derivative = (e - self.prev_error) / self.dt        self.prev_error = e        return self.kp * e + self.ki * self.integral + self.kd * derivative  class SimpleMPC:    """用网格搜索实现滚动优化的简版 MPC"""     def __init__(self, horizon=10, dt=0.1, u_min=-2.0, u_max=2.0, q=1.0, r=0.05):        self.horizon = horizon        self.dt = dt        self.u_min = u_min        self.u_max = u_max        self.q = q        self.r = r     def _predict_cost(self, x0, last_u, u_seq, ref_seq):        state = x0        cost = 0.0        for i in range(self.horizon):            u_eff = last_u            last_u = u_seq[i]            state += (self.dt / 1.0) * (u_eff - state)            e = ref_seq[i] - state            cost += self.q * e * e + self.r * u_seq[i] * u_seq[i]        return cost     def step(self, refs, k, obs, last_u):        ref_seq = list(refs[k:k + self.horizon])        while len(ref_seq) < self.horizon:            ref_seq.append(refs[-1])        best_u = self.u_min        best_cost = float('inf')        for i in range(21):            u0 = self.u_min + (self.u_max - self.u_min) * i / 20.0            u_seq = [u0] + [ref_seq[0]] * (self.horizon - 1)            cost = self._predict_cost(obs, last_u, u_seq, ref_seq)            if cost < best_cost:                best_cost = cost                best_u = u0        return best_u  def run_case(controller, refs, steps=100):    vehicle = SimpleVehicle()    obs = 0.0    last_u = 0.0    err_sum = 0.0    for k in range(steps):        u = controller.step(refs, k, obs, last_u)        last_u = u        obs = vehicle.step(u)        err_sum += abs(refs[k] - obs)    return obs, err_sum / steps  def main():    refs = [0.0] * 30 + [1.0] * 70    _, pid_mae = run_case(PIDController(kp=2.0, ki=0.8, kd=0.2), refs)    _, mpc_mae = run_case(SimpleMPC(), refs)    print('PID MAE: {:.4f}'.format(pid_mae))    print('MPC MAE: {:.4f}'.format(mpc_mae))  if __name__ == '__main__':    main()
目的:用一辆带一拍延迟的一阶惯性模拟车,对比PID与简化MPC跟踪阶跃目标的平均绝对误差(MAE),直观展示“预测控制提前行动”的优势。
  1. self.integral += e * self.dt把每一拍的误差乘以采样时间后累加,这就是积分项的离散实现。
  2. derivative = (e - self.prev_error) / self.dt用误差差分近似误差变化率,就是微分项的离散实现。
  3. return self.kp * e + self.ki * self.integral + self.kd * derivativePID三个环节加权求和,输出控制量。
  4. u_eff = self._last_u模拟执行器一拍延迟:当前实际生效的是上一拍指令,让系统更接近真实。
  5. state += (self.dt / self.tau) * (u_eff - self.state)一阶惯性系统的欧拉离散化,模拟车速对油门指令的惯性响应。
  6. cost += self.q * e * e + self.r * u_seq[i] * u_seq[i]MPC成本函数:跟踪误差平方 + 控制量惩罚。
  7. u_seq = [u0] + [ref_seq[0]] * (self.horizon - 1)简化假设:未来控制序列从首步候选值起保持不变。
  8. u = controller.step(refs, k, obs, last_u)统一控制接口,每拍输出一个控制量并滚动推进。

常见误区

误区新手以为比例系数越大,系统反应越敏捷,于是把Kp调到最大,结果车身疯狂画龙,甚至直接失控。

正解Kp增大确实能加快响应,但过大的Kp会让系统“用力过猛”——超调变大、振荡加剧,接近临界振荡后继续增大会发散失稳。调Kp的正确姿势是逐步加大,观察到轻微振荡后回退一些,再配合Kd来压制超调。

为何常见:直觉上“越大越有力”很自然,但控制是动态博弈——当下纠偏的力,会变成过冲的祸。

误区觉得MPC能处理约束、会预测,那干脆全部用MPC,PID淘汰算了。

正解MPC每拍要在线求解优化问题,计算代价大;对模型精度敏感,模型一偏性能就崩。基础场景用PID更轻、更快、更稳,是量产车上成本最低、经过百万公里验证的选择。工程上讲究“够用就好、场景适配”。

为何常见:人容易崇拜“技术更强”的方案,但忽略了实时性、成本和可靠性的工程权衡。

误区初学者发现积分能消除稳态误差,就把Ki调得很大,结果系统不但没变准,反而开始低频晃悠。

正解积分项是把历史误差不断累积,Ki太大意味着“翻旧账翻得太狠”,会让系统产生积分饱和与低频振荡。正确做法是让Ki适中,或加入抗积分饱和机制(限幅、条件积分),让积分帮上忙而不捣乱。

为何常见:把“缺失的整形术”当成“万能药”,忽略了累积作用的滞后性和副作用。

误区觉得参数在测试场调好了,量产交付后就万事大吉。

正解车辆载荷、轮胎磨损、路面附着、电池电压等都会改变被控对象特性,原来调好的参数可能逐渐漂移。量产车要有参数自适应或周期标定机制,并靠线上数据持续监测控制品质。

为何常见:实验室环境和真实世界的差距,让“一次性成功”的幻想特别容易破灭。

误区以为MPC就是“加强版PID”,不建模型也能黑盒调参。

正解MPC的“预测”全靠预测模型,模型精度直接决定控制品质。模型错了,优化出来的“最优”动作就是南辕北辙。实车部署MPC,第一件事是精确辨识车辆动力学模型,而不是调权重。

为何常见:很多框架把MPC封装得像黑盒,让使用者误以为它和PID一样只靠反馈修正,忽略了模型的核心地位。

面试题

Q1. 经典PID控制器的三个环节是?

单选题 · easy

  • A.比例、积分、微分← 正确答案
  • B.比例、指数、对数
  • C.开环、闭环、反馈
  • D.误差、扰动、噪声

答案:A。PID全称Proportional-Integral-Derivative,即比例、积分、微分三个环节。比例管当下,积分清历史,微分看趋势。B是指数对数、C是系统结构概念、D是信号类型,都不是PID的组成环节。

Q2. PID系统响应太慢,最直接的调整是?

单选题 · easy

  • A.增大比例系数Kp← 正确答案
  • B.减小积分系数Ki
  • C.增大微分系数Kd
  • D.降低采样频率

答案:A。响应慢说明“反应力度不足”,增大Kp可以提升比例环节的修正力度,让输出更快逼近目标。减小Ki反而削弱消除误差的能力,增大Kd主要用于抑制超调,降低采样频率会让信息变少、响应更迟钝。

Q3. 积分环节的主要作用是?

单选题 · easy

  • A.消除稳态误差← 正确答案
  • B.加快瞬态响应
  • C.降低系统噪声
  • D.增大超调量

答案:A。积分把历史误差累积起来,即使误差很小,累积多了也会产生控制量,最终把稳态误差压到零。它不负责加快响应(那是比例的事),也不负责降噪,增大超调通常是Ki过大的副作用而非功能。

Q4. 某PID系统阶跃响应超调过大,首先应考虑?

单选题 · mid

  • A.减小Kp或增大Kd← 正确答案
  • B.增大Kp或减小Ki
  • C.增大Ki并减小Kd
  • D.同时增大Kp和Ki

答案:A。超调过大像司机打方向过猛——要么减小反应力度(Kp),要么增加预判阻尼(Kd)。增大Kp、Ki都会让系统更“冲”,只会加剧超调,所以B、C、D方向都对不上。

Q5. MPC与PID最本质的区别在于?

单选题 · mid

  • A.采用预测模型做滚动优化← 正确答案
  • B.不需要任何传感器反馈
  • C.必须依赖深度学习模型
  • D.只能用于纵向速度控制

答案:A。MPC的核心是“预测模型+滚动优化”:每拍推演未来N步、求解最优控制序列、只执行第一步。它不是深度学习的变种,也需要反馈校正,横向纵向都能用。B、C、D都是对MPC的误解。

Q6. MPC成本函数中权重λ的作用是?

单选题 · mid

  • A.调节控制量变化的惩罚← 正确答案
  • B.决定传感器的采样率
  • C.控制目标参考值的大小
  • D.校准执行器的偏移量

答案:A。λ乘在控制增量Δu²前面,λ越大,控制量变化越受惩罚,输出越平缓;λ越小,跟踪误差优先,控制越激进。它不碰采样率、参考值和执行器标定,是跟踪与平顺之间的天平。

Q7. 控制品质评估的常用指标包括?

多选题 · mid

  • A.稳定性指标← 正确答案
  • B.快速性指标← 正确答案
  • C.准确性指标← 正确答案
  • D.车身颜色指标

答案:ABC。控制品质四大件是稳、快、准、鲁:稳定性指响应不发散,快速性指调节时间短,准确性指稳态误差小,鲁棒性指受扰动后仍稳定。车身颜色与动力学品质无关,是干扰项。

Q8. 简化MPC网格搜索每步试21个候选控制量,预测时域为N,总计算量约为?

单选题 · hard

  • A.O(21×N) 量级← 正确答案
  • B.O(21/N) 量级
  • C.O(N²) 量级
  • D.O(1) 常数级

答案:A。每个候选控制量都要在预测时域内推演N步并计算成本,21个候选就是21×N次预测,所以总计算量是O(21×N)。计算量随预测时域线性增长——这正是MPC“看得越远、算得越久”的代价。

Q9. MPC在实车部署中的主要挑战包括?

多选题 · hard

  • A.要求实时计算收敛← 正确答案
  • B.依赖精确的被控模型← 正确答案
  • C.约束可能不可行← 正确答案
  • D.无需任何标定过程

答案:ABC。MPC每拍要在线解优化问题,必须保证实时性;预测模型不精确,优化结果就不可信;遇到意外工况,约束可能互相矛盾导致无解,需要软约束兜底。实车部署恰恰需要精心标定,所以D错误。

Q10. 关于串级控制,下列说法正确的是?

多选题 · extreme

  • A.外环输出作为内环参考← 正确答案
  • B.内环响应需快于外环← 正确答案
  • C.外环通常处理位置误差← 正确答案
  • D.外环直接驱动执行机构

答案:ABC。串级控制中,外环(如位置环)输出期望速度作为内环(如速度环)的参考,内环用更快的采样率抑制扰动,所以内环响应必须快于外环。外环不直接驱动执行机构,而是给内环下达“小目标”,D错。