news 2026/8/9 2:00:40

[具身智能-801]:PID 算法在机器人系统中的位置与作用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[具身智能-801]:PID 算法在机器人系统中的位置与作用

PID 算法在机器人系统中的位置与作用

结合前面的多电机混合控制框图、电机控制共性,把 PID 放在完整机器人链路里,讲清楚PID 在哪一层、解决什么问题、不解决什么问题、不同电机下 PID 配置差异

完整机器人分层架构(从上到下)

plaintext

【上层规划层】主控CPU(RDK X5 / ROS2) ↓下发目标:Vx Vy ω、目标关节角度、目标位置 【运动控制层】电机MCU(STM32) ← PID算法运行在这里 ⭐ ↓输出PWM / STEP / 串口指令 【功率驱动层】AM2857 / DRV8825 /舵机内置驱动 ↓强电 【电机&机械层】电机、减速箱、轮子、机械臂 ↓反馈:编码器、电位器 反馈信号回送到【运动控制层】,形成闭环

核心原则:PID 属于底层实时运动控制层,不在 ROS / 上层 AI 主控运行。上层只输出期望值,PID 负责让真实物理对象尽可能跟踪这个期望值。

普通 PWM 舵机、串口舵机:

PID 运行在舵机板载 MCU 内部,外部 STM32 只下发目标,不跑 PID。

PID 的本质

在不同电机中的位置与作用

1. 带编码器直流减速电机(麦克纳姆轮底盘)

  • 运行位置:下层 STM32 电机 MCU
  • 闭环类型:速度环 PID
  • 输入:上层送来期望转速;编码器定时器 CNT 读取实际转速
  • 输出:PWM 占空比给到 AM2857 驱动芯片
  • 作用:
    1. 克服电池电压波动:电池电压下降,电机出力会变,PID 自动提高 PWM 占空比,维持转速稳定。
    2. 抵抗外部负载扰动:小车爬坡、遇到阻力,自动加大输出功率。
    3. 让四个轮子转速跟随逆运动学计算出来的目标转速,保障麦克纳姆轮运动形态不走样。

拓展:机器人还可以在外层套位置 PID 环(位置环输出作为速度环的目标),实现位置控制。

2. PWM 模拟舵机 (SG90)

  • PID 运行位置:舵机板载 MCU 内部,外部完全不可见
  • 闭环类型:位置 PID
  • 反馈:板载电位器
  • 外部 MCU:只输出 50Hz PWM 设置目标角度,不参与 PID 运算
  • 局限:外部无法读取实际角度,你看不到 PID 的偏差,堵转外部系统无法感知。

3. 串口总线舵机

  • PID 运行位置:舵机板载 MCU
  • 闭环类型:位置 PID
  • 特殊点:舵机把 PID 的输入输出状态(实际角度、温度、堵转标志)通过串口回传给 STM32;上层可以拿到偏差,但 PID 计算依旧在舵机内部。

高级用法:上层做外环 PID,舵机执行内环 PID,形成串级 PID。

4. 闭环步进电机(DRV8825 + 外置编码器)

  • 运行位置:STM32 电机 MCU
  • 开环状态:没有 PID,只管发 STEP 脉冲,不知道实际走没走。
  • 闭环模式:编码器读取真实位置,做位置 PID。当发生丢步,PID 提高脉冲频率补偿偏差,抑制丢步。

PID 在整套机器人系统中的层级关系(串级 PID,机器人高频出现)

机器人经常使用双环串级 PID,内环响应快,外环响应慢。 以麦克纳姆轮位置控制举例:

plaintext

上层规划输出目标位置 ↓ 【外环:位置PID】(周期慢,几十ms) 输出 → 目标转速 ↓ 【内环:速度PID】(周期快,1‑5ms,MCU定时器中断) 输出 → PWM占空比 ↓ 电机、机械 ↓ 编码器反馈转速给速度环;积分得到位置反馈给位置环
  • 内环速度 PID:抑制电机扰动,快速响应,运行在高频定时器中断。
  • 外环位置 PID:负责收敛到目标坐标,运行频率更低。

重要:内环必须跑在 MCU 实时中断;千万不要放在 ROS 应用层,ROS 是非实时,抖动会直接让 PID 震荡失控。

PID 能解决什么,PID 不能解决什么(工程最容易踩坑)

✅ PID 可以做到:

  1. 在存在扰动(负载变化、电压跌落)的条件下,让实际物理量跟踪目标值。
  2. 抑制稳态误差,让电机转速、关节位置逼近设定值。
  3. 合理调参可以抑制震荡,提升系统响应速度。

❌ PID不能解决

  1. 不能消除机械打滑:麦克纳姆轮子打滑,编码器读到电机轴转了,但车体没动。PID 只能保证电机轴转速,无法修正车体真实世界位置。打滑带来的漂移 PID 无能为力,需要 IMU、视觉 SLAM 做更高层融合。
  2. 不能修复机械结构缺陷:间隙、齿轮旷量,PID 调再好也会有抖动、过冲,需要机械优化。
  3. 不能突破硬件物理极限:电机最大扭矩、最大电压电流是硬件天花板,PID 输出饱和之后,再大偏差也无能为力,需要限幅。
  4. 不能处理大时延:反馈采样、通信时延过大,PID 会剧烈震荡。

结合两级架构看 PID 的数据流

  1. ROS / 主控 CPU:做运动规划,输出目标速度 / 角度,不跑 PID。
  2. STM32 电机 MCU:
    • 硬件外设:定时器编码器接口采集真实反馈;
    • 定时器中断中执行 PID 运算(固定周期,强实时)
    • PID 输出限幅,转换成 PWM / 脉冲输出;
  3. 驱动芯片执行功率放大;
  4. 电机运动;反馈再次回到 MCU。

如果 PID 放在上层 CPU 运行:USB / 串口传输存在时延抖动,控制周期忽快忽慢,小车会抖动、震荡、控制失效。

工程常见误区

  1. 误区:PID 参数一套通吃全部电机。

每个电机、机械负载不一样,P/I/D 参数必须单独标定;麦克纳姆四个轮子参数都可能略有差异。

  1. 误区:只调 P,无限放大 P 增益。

P 越大响应越快,但会带来震荡;I 消除静态误差;D 抑制震荡,三者配合。

  1. 误区:PID 周期随便写。

PID 必须固定控制周期;周期变化,等效 Kp Ki Kd 全部变化,系统特性改变。所以放在 MCU 定时器中断执行。

  1. 误区:用 PID 补偿打滑。

编码器测的是电机轴,不是车体末端;打滑属于观测失效,PID 无法根治,需要传感器融合。

总结

  1. PID 是底层实时运动控制器,绝大多数机器人中运行在电机 MCU(STM32)的定时器中断;PWM 舵机、串口舵机 PID 运行在舵机内置 MCU。上层主控 / ROS 只下发目标,不执行 PID。
  2. PID 核心工作:对比目标值与传感器反馈值,计算偏差,修正输出控制量,抵抗外界扰动,实现物理量跟踪。
  3. 机器人常使用串级 PID:位置外环 + 速度内环,内环高频,外环低频。
  4. PID 只解决闭环跟踪问题,无法解决机械打滑、旷量、硬件功率上限这类物理约束。
  5. PID 是电机控制共性里 “给定‑反馈‑修正” 逻辑的具体算法实现。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/9 2:00:29

从unittest print(1)到性能与内存优化:软件测试工程师的面试突围指南

1. 项目概述:从unittest print(1)到性能与内存优化的面试突围最近在整理自己的技术笔记,翻到一个非常简单的unittest测试用例:print(1)。这行代码简单到几乎没有任何业务逻辑,但它却像一把钥匙,打开了我对软件测试、性…

作者头像 李华
网站建设 2026/8/9 2:00:19

WeChatMsg:如何从零开始打造你的微信数据资产库

WeChatMsg:如何从零开始打造你的微信数据资产库 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg …

作者头像 李华
网站建设 2026/8/9 1:55:19

电商长程智能体评测:从MerchantBench基准到实战环境搭建

1. 先搞清楚 MerchantBench 到底要测什么,以及它和普通基准的区别如果你最近在关注大模型(LLM)和智能体(Agent)在电商领域的应用,可能会发现一个现象:很多模型或智能体在标准问答测试上表现不错…

作者头像 李华
网站建设 2026/8/9 1:50:56

FPG平台:用维度方式看外汇用户支持体系 形成更稳的判断

在外汇相关服务里,FPG平台是否值得长期关注,往往取决于几个清晰的体验点:说明是否好理解、提示是否到位、流程是否连贯、支持是否稳定。下面从这些维度对FPG平台做一次正向梳理与要点归纳。外汇相关信息更新频繁,平台将关键提示与…

作者头像 李华
网站建设 2026/8/9 1:50:45

状态模式与责任链模式:重构复杂业务逻辑的实战指南

在实际开发中,我们经常会遇到需要处理复杂业务逻辑的场景,这些逻辑往往交织着各种条件判断、状态流转和异常处理,就像品尝人生的“酸甜苦辣”,滋味复杂。一个典型的例子是电商系统中的订单状态管理:从用户下单、支付、…

作者头像 李华
网站建设 2026/8/9 1:46:22

MASA模组中文汉化包:打破语言障碍的终极解决方案

MASA模组中文汉化包:打破语言障碍的终极解决方案 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 你是否曾经因为看不懂MASA模组的英文界面而感到困惑?是否在面对…

作者头像 李华