五分钟入门控制算法:MPC(模型预测控制)算法

五分钟入门控制算法:MPC(模型预测控制)算法

什么是控制算法?

        比如我现在的无人机悬浮在空中的某个位置,我想要让他以最短时间抬升悬浮到上方10m的位置,那我要具体如何去调整输入(如电流、油门、功率),以最好的性能(时间最短)来达到预期的目标呢?那就需要控制算法来求解,来调整这些输入。

        控制算法(Control Algorithm)本质上是一套控制机械系统运作的“数学指挥指令”。它告诉机器(如无人机、恒温空调、机械臂)如何根据目前的状态,通过调整输入(如电流、油门、功率)来达到预期的目标。

        不同的算法有不同的使用场景与特性,有些适用于动态系统,有些适用于静态。有些适用于低阶系统,有些适用于高阶系统。有些计算量小,有些计算量大。所以衍生出了很多种控制算法。

        如何根据不同的场景选择合适的控制算法,创造更厉害的控制算法,调整控制算法的参数使得任务完成的效果更好;如何让实时波形图(如 rqt_plot)更加贴合跟踪曲线;如何对机械系统编写“保护逻辑” ;如何处理传感器噪声与延迟,用一些滤波算法(卡尔曼滤波)做更好的状态估计。如何增加前馈(Feedforward)**或优化阻尼比来让动作丝滑 就是控制算法工程师的工作。

MPC控制算法:

MPC是一类控制算法。

如果 PID 是根据“现在的误差”在做反应,那么 MPC 就是在**“预测未来”并做决策。你可以把它想象成一个会推算未来几秒钟走势的驾驶员**。

MPC控制算法的几大特性:

(1)预测模型:模型是 MPC 的灵魂,它是对物理世界规律的数学表达。

(2)预测:根据预测模型推算出未来N个步长里系统的状态

(3)滚动优化:虽然我算出了未来 10 步的完美计划,但我只走第 1 步,然后扔掉剩下的,重新计算。走一步,看十步。每一个采样周期都在解一个最优问题。虽然计算量大,但它能保证在任何时刻,输出的操作都是基于当前最新状态的最优选择。

PID vs. LQR vs. MPC 核心对比表

特性PID (比例-积分-微分)LQR (线性二次调节器)MPC (模型预测控制)
核心思想消除误差:根据过去和现在的误差来调整输出。能量最优:在无限时间内寻找系统状态与控制能量的最佳平衡。预测未来:在有限时间内通过滚动优化寻找满足约束的最优解。
对模型的依赖无需模型强依赖:需要精确的线性状态空间模型强依赖:需要系统模型,但要求不高
处理约束的能力几乎没有:设计时考虑了能量权衡,但不能直接加入硬约束。极强
多变量系统 (MIMO)困难:多个回路之间存在严重的耦合干扰。擅长:天然支持多输入多输出系统,通过矩阵统一计算。最擅长:能同时处理多个目标和复杂的变量耦合。
计算复杂度极低:简单的代数运算,单片机轻松跑。:设计阶段解代数黎卡提方程,   运行时仅为矩阵乘法。极高:每个采样周期都要解一个带约束的最优化问题(QP)。
主要应用场景电机转速、恒温控制、简单平衡。航天器姿态控制、精密工业伺服。自动驾驶避障、无人机轨迹规划、化工过程。

普适的MPC算法推导流程:

如果针对某一个问题不好简历数学模型,我们可以不构造数学模型,可以通过一些手段直接跳过数学建模获得预测模型:



总结:

根据原始问题满足的数学物理原理,状态变量,输入,去建立连续动力学模型

根据连续动力学模型构建连续状态空间方程

将状态空间方程离散化

通过离散状态空间方程预测未来N步的状态,并整理为矩阵形式预测方程

构造代价函数,将预测方程代入得到一个QP问题,再通过QP求解器求解

所以本质上是在求解一个受约束的优化问题(如果实在处理线性系统那就是是 QP问题)。输入是表征位置,速度的预测方程跟期望的轨迹。输出是N的步长的控制量。

控制序列 u 是有物理单位的实际物理量(力、扭矩、电流、流速,加速度等等)。

假如u=2.5,那就让pwm占空比为50%,就可以控制机器人踩下一半的油门了。

以一维小车位置控制(多大力从A走到B)为例使用MPC控制:

MPC算法调参:

调节 MPC(模型预测控制)参数的过程,就像是在“计算性能”、“控制精度”和“运行稳定性”之间找平衡。根据不同的场景,有不同的性能需求,自然需要调节不同的参数

1. 时域参数 (Horizon Parameters)

Np:预测步长。     Nc:控制步长


什么是状态空间方程:

状态空间方程是描述系统动态特性的核心工具。传递函数也能表征系统动态特性,但传递函数是“黑盒”,只关注输入输出;状态空间是“白盒”,可以实时观测机器人的每一个关节状态。

1. 核心直觉:什么是“状态”?

想象你在开一辆车(或者控制你的仓库机器人):

  • 如果你只知道机器人现在的位置,你没法预判它下一秒在哪,因为你不知道它的速度
  • 如果你知道位置 + 速度,你就掌握了它的完整“状态”。
2. 数学定义

一个线性定常系统的状态空间模型由两个方程组成:状态方程输出方程状态空间方程的核心思想: 只要知道了现在的状态和接下来的动作,就能算出未来的状态。

Read more

开源本地AI助手OpenClaw详解:从零开始,手把手安装

开源本地AI助手OpenClaw详解:从零开始,手把手安装

在AI助手遍地开花的今天,一款能让你完全掌控数据、兼具强执行力与高灵活性的工具显得尤为珍贵——OpenClaw便是这样一款开源个人AI助手。它打破了传统云端AI的局限,运行在你的本地设备上,可通过WhatsApp、Telegram等10+主流聊天平台交互,既能操作系统、控制浏览器,也能扩展技能、持久记忆,堪称你的“私人数字员工”。 1 OpenClaw为什么值得安装? 直接一张图告诉你为什么选OpenClaw: 当 Claude Code 和 OpenCode 还在局部战场较量时,OpenClaw 已构建起完整的能力闭环。尤其是“自我修复”和“原生本地自动化”这两项,让它真正具备了处理复杂连续性任务的能力,优势不止一点点。 2 环境安装 2.1 NodeJS安装 安装OpenClaw的前提条件是安装Node 22或者以上的版本,如图所示: 下载位置:Node.js 双击打开之后,按照以下步骤操作: 这里选择安装位置之后,点击Next: 使用以下命令检查是否安装成功: node--version

By Ne0inhk

阿里开源 OpenClaw:5分钟本地搞定多 Agent 团队!

大家好,我是玄姐。 阿里开源 Team 版 OpenClaw:HiClaw 发布,5分钟本地搞定多 Agent 团队! 作为模型服务的新入口,OpenClaw 曾凭借强大的自动化能力(写代码、查邮件、操作 GitHub、设置定时任务)让无数开发者大呼过瘾。这种通过 IM 直接下发指令的交互创新,确实带来了极大的“爽感”。 但是,随着你的指令积压、Long Horizon(长周期)项目越来越多,原生 OpenClaw 的短板开始暴露: * 安全风险在裸奔:每个 Agent 都要配置自己的 API Key。GitHub PAT、LLM Key 散落各处。2026年初的漏洞事件提醒我们,这种 "self-hackable"

By Ne0inhk
gitee:The requested URL returned error: 400,The requested URL returned error: 403,已解决

gitee:The requested URL returned error: 400,The requested URL returned error: 403,已解决

🛠️ The requested URL returned error: 400,The requested URL returned error: 403, Gitee代码推送问题排查与解决复盘 1. idea推送突然遇到的报错现象,同时用命令行推送也出现同样的问题: 🔴 现象一:403 Forbidden * 报错信息:fatal: unable to access '...': The requested URL returned error: 403 🔴 现象二:400 Bad Request * 报错信息:remote: [session-xxx] reject by [gitee] ... error: 400 2. ❌ 尝试过但失败的方案 (HTTPS) 尝试了以下 HTTPS 修复手段,

By Ne0inhk
Linux系统学习【深入剖析Git的原理和使用(上)】

Linux系统学习【深入剖析Git的原理和使用(上)】

🔥承渊政道:个人主页 ❄️个人专栏: 《C语言基础语法知识》《数据结构与算法》 《C++知识内容》《Linux系统知识》 ✨逆境不吐心中苦,顺境不忘来时路!🎬 博主简介: 引言:在软件开发的全流程中,版本控制是保障协作效率、规避开发风险的核心基石,而Git作为目前最流行、最强大的分布式版本控制系统,早已渗透到从个人开发到大型企业级项目的每一个环节.无论是多人协作时的代码冲突解决、开发过程中的版本回溯,还是跨环境的代码同步、分支管理,Git都以其高效、安全、灵活的特性,成为开发者必备的核心工具.然而,多数开发者对Git的使用仍停留在“会用基础命令”的层面——知道用git add提交暂存、git commit提交本地、git push推送远程,却未必理解这些命令背后的底层逻辑:暂存区(Stage)、本地仓库(Local Repository)、远程仓库(Remote Repository)之间的数据流是怎样的?Git如何高效追踪文件的每一次变更?分布式架构与SVN等集中式版本控制系统相比,核心优势到底体现在哪里? 基于此,

By Ne0inhk