Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Model Predictive Control (MPC)

模型预测控制 (MPC) 使用模型规划一小段动作序列,只执行第一个动作,然后在每一步重新规划。内容涵盖组成部分、用途和代码。

模型预测控制(MPC)是一种控制方法:它利用系统模型预测短期未来内的系统行为,选择最能实现目标且满足约束的动作序列,只执行第一个动作,然后在下一个时间步获取新测量值并重复整个过程。这种规划、执行、重新规划的循环称为滚动时域控制;它让控制器能够预判即将发生的情况,而不是只对当前误差做出反应。MPC 于 20 世纪 70 年代末在炼油和化工领域发展起来,Shell 的动态矩阵控制是最早的工业实现之一;如今,它用于控制机器人、自动驾驶车辆和建筑气候系统。

MPC 控制器的组成部分#

每个 MPC 控制器都包含四个部分:

  • 动力学模型:根据当前状态和动作预测下一个状态,例如预测汽车的位置和朝向会如何随给定的转向角发生变化。模型可以来自物理方程、基于日志数据的系统辨识,也可以是根据记录的轨迹训练出的神经网络。
  • 代价函数:为预测轨迹打分,通常会惩罚与目标的距离、能耗以及控制量的突变。
  • 约束:每个计划都必须遵守的限制,例如电机最大扭矩、速度限制和障碍物周围的禁入区域。显式处理约束是 MPC 相较于经典 PID 控制的主要优势;PID 控制只会在误差出现后做出反应,无法预先考虑限制。
  • 优化器:在每个控制步骤中搜索时域内的最佳动作序列。

模型决定了优化的难度。带有二次代价的线性模型会转化为二次规划,专用求解器可在几毫秒甚至更短时间内完成求解;非线性模型则需要非线性 MPC求解器,通常会配合用于估计状态的扩展卡尔曼滤波器,或者采用基于采样的搜索。在每个控制步骤中,优化器都会运行一个内循环,预测并改进候选计划;控制器则运行一个外循环,执行一个动作,然后从新测量的状态重新开始:

时域长度是最关键的调节选项。较长的时域可以让车辆在急转弯前提前刹车,但每增加一个步骤都会增加计算量,并累积模型的预测误差;整个优化过程还必须在一个控制周期内完成。

代码中的滚动时域#

下面的代码片段控制一辆小车驶向位置 5 并停下,加速度限制为正负 1。每个时间步中,代码会采样 500 个随机加速度方案,利用小车的动力学预测每个方案的轨迹,执行代价最低方案中的第一个动作,然后根据新状态重新规划:

import numpy as np

rng = np.random.default_rng(0)
position, velocity, target = 0.0, 0.0, 5.0
dt, horizon = 0.1, 30

for _ in range(100):
    # Sample 500 candidate plans of accelerations within the actuator limit of +/-1
    plans = rng.uniform(-1, 1, size=(500, horizon))
    # Predict every plan's trajectory with the cart's dynamics model
    v = velocity + dt * plans.cumsum(axis=1)
    p = position + dt * v.cumsum(axis=1)
    # Cost: distance from the target at each step plus speed at the end of the horizon
    cost = ((p - target) ** 2).sum(axis=1) + 10 * v[:, -1] ** 2
    # Apply only the first action of the cheapest plan, then replan from the new state
    velocity += dt * plans[cost.argmin(), 0]
    position += dt * velocity

print(f"position: {position:.2f}, velocity: {velocity:.2f}")

模拟 10 秒后,小车停在位置 5.04,速度为 0.04。没有任何一个随机计划单独看起来很理想,但执行一步后根据测量状态重新规划,可以持续修正误差。这种方法称为随机射击,是基于采样的 MPC 系列中最简单的一种;该系列还包括交叉熵方法和模型预测路径积分(MPPI)控制,Georgia Tech 的研究人员曾用 MPPI 控制五分之一比例的拉力赛车在土路赛道上比赛。

MPC 在工厂、机器人、汽车和建筑中的应用#

  • 流程工业:炼油厂、化工厂和发电站使用 MPC,使温度、压力和产品质量保持在接近极限的范围内,以最大化产能;MPC 最初正是应用于这一领域。
  • 足式机器人:MIT 的 Cheetah 3 使用凸 MPC 运行和保持平衡,每秒多次重新计算地面反作用力;之后,MIT 将该控制器作为开源软件发布,用于 Mini Cheetah。
  • 驾驶:自动驾驶汽车中的路径跟踪控制器会使用 MPC,在满足转向、加速和舒适度限制的前提下平稳跟随规划轨迹。
  • 建筑:供暖和制冷控制器会根据天气和人员占用预测数小时后的室温,并在能源价格最低时提前制冷或预热。
  • PID 控制:PID 控制器根据当前误差、误差积分和误差变化率计算输出。它简单、成本低,但没有未来模型,也无法处理约束。
  • 线性二次调节器(LQR):LQR 针对带二次代价的线性系统,在无限时域上以闭式形式求出最优反馈律。MPC 会在线求解有限时域版本,因此能够施加约束并处理非线性模型。
  • 强化学习:RL 会在部署前通过经验学习策略,之后只需一次快速前向传播就能选择动作。MPC 则会在线使用显式模型进行新的优化求解。

这两种方法正日益融合。基于模型的深度强化学习会学习一个世界模型,并通过 MPC 在其中进行规划;TD-MPC2 等方法则会在学到的潜在空间中规划,并使用学习到的价值函数评估短期时域结束后的结果。学到的动力学模型属于预测建模的一种,其在整个时域内的准确度决定了这类控制器能够有效规划多远。

MPC 中的感知#

MPC 控制器的规划效果取决于其感知能力。对于机器人在人群中移动这类物理 AI系统,其状态必须包含人们所在的位置及移动方向。摄像头使用 Ultralytics YOLO26的跟踪模式运行时,会为每一帧中的每个人提供一个边界框和持久的跟踪 ID。结合深度估计或相机标定以及卡尔曼滤波器,这些跟踪结果就能转化为障碍物的位置和速度,供控制器的约束避让。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来