news 2026/4/16 17:02:51

【RL】从公式推导到电机控制:深入浅出理解 Policy Gradient 与 Sim-to-Real

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【RL】从公式推导到电机控制:深入浅出理解 Policy Gradient 与 Sim-to-Real

【RL】从公式推导到电机控制:深入浅出理解 Policy Gradient 与 Sim-to-Real

摘要:通过legged_gym训练四足机器人时,常常会遇到 Policy Gradient(策略梯度)的核心公式。本文不堆砌晦涩的术语,而是从数学推导出发,直观地解释这个梯度是如何一步步转化为控制电机转动的指令,并探讨为什么理论完美的策略在 Sim-to-Real 环节往往需要“域随机化”来救场。


1. 引言:由于什么我们在优化U ( θ ) U(\theta)U(θ)

在强化学习(RL)的世界里,我们训练的智能体(比如一只 Unitree A1 机器狗)拥有一个大脑——策略网络(Policy Network),其参数由θ \thetaθ表示。

当我们看着训练曲线(Reward Curve)不断上升时,本质上我们是在优化一个核心指标:U ( θ ) U(\theta)U(θ)

1.1U ( θ ) U(\theta)U(θ)的物理含义

U ( θ ) U(\theta)U(θ)代表的是期望回报 (Expected Return)。简单来说,它是衡量这只机器狗在当前智力水平(参数θ \thetaθ)下,平均能拿多少分。

数学定义如下:
U ( θ ) = E τ ∼ P θ ( τ ) [ R ( τ ) ] U(\theta) = E_{\tau \sim P_\theta(\tau)} [R(\tau)]U(θ)=EτPθ(τ)[R(τ)]

其中:

  • τ \tauτ(Trajectory):代表机器人的一次完整尝试(从开机到摔倒或结束的一连串状态s ss和动作a aa的序列)。
  • R ( τ ) R(\tau)R(τ):这一次尝试获得的总分数(走得远加分,摔倒扣分,力矩过大扣分)。
  • P θ ( τ ) P_\theta(\tau)Pθ(τ):在当前策略下,出现这条轨迹的概率。

我们的终极目标:找到一组参数θ \thetaθ,让U ( θ ) U(\theta)U(θ)最大化。


2. 数学魔法:Policy Gradient 推导 (Log-Derivative Trick)

为了最大化U ( θ ) U(\theta)U(θ),我们需要求它的梯度∇ θ U ( θ ) \nabla_\theta U(\theta)θU(θ),告诉参数该往哪个方向更新。这里用到了经典的似然比技巧 (Likelihood Ratio Trick)

第一步:将期望展开为积分

期望本质上是加权平均,我们可以将其写成积分形式。假设奖励函数R ( τ ) R(\tau)R(τ)只由环境决定,与θ \thetaθ无关,我们将梯度算子∇ θ \nabla_\thetaθ移进积分号内部:

∇ θ U ( θ ) = ∫ ∇ θ P θ ( τ ) R ( τ ) d τ \nabla_\theta U(\theta) = \int \nabla_\theta P_\theta(\tau) R(\tau) d\tauθU(θ)=θPθ(τ)R(τ)dτ

第二步:Log-Derivative Trick(灵魂一步)

利用微积分中的恒等式( log ⁡ x ) ′ = 1 x (\log x)' = \frac{1}{x}(logx)=x1,我们可以反推出∇ x = x ⋅ ∇ log ⁡ x \nabla x = x \cdot \nabla \log xx=xlogx
P θ ( τ ) P_\theta(\tau)Pθ(τ)看作x xx,代入上式:

∇ θ P θ ( τ ) = P θ ( τ ) ∇ θ log ⁡ P θ ( τ ) \nabla_\theta P_\theta(\tau) = P_\theta(\tau) \nabla_\theta \log P_\theta(\tau)θPθ(τ)=Pθ(τ)θlogPθ(τ)

现在,我们把这个结果代回第一步的积分中:

∇ θ U ( θ ) = ∫ P θ ( τ ) ∇ θ log ⁡ P θ ( τ ) R ( τ ) d τ \nabla_\theta U(\theta) = \int \color{red}{P_\theta(\tau) \nabla_\theta \log P_\theta(\tau)} R(\tau) d\tauθU(θ)=Pθ(τ)θlogPθ(τ)R(τ)dτ

第三步:变回期望形式

观察上式,发现积分里又出现了P θ ( τ ) P_\theta(\tau)Pθ(τ)。这意味着我们可以把积分重新写回期望的形式:

∇ θ U ( θ ) = E τ ∼ P θ ( τ ) [ ∇ θ log ⁡ P θ ( τ ) R ( τ ) ] \nabla_\theta U(\theta) = E_{\tau \sim P_\theta(\tau)} [\nabla_\theta \log P_\theta(\tau) R(\tau)]θU(θ)=EτPθ(τ)[θlogPθ(τ)R(τ)]

第四步:消掉环境模型(Model-Free 的关键)

一条轨迹的概率P θ ( τ ) P_\theta(\tau)Pθ(τ)由三部分组成:初始状态概率、环境转移概率(物理引擎)、策略网络概率。
当我们对θ \thetaθ求梯度时,所有与θ \thetaθ无关的环境物理规律(比如牛顿定律、摩擦系数)全部变成了 0

最终,我们得到了那个著名的梯度公式:

∇ θ U ( θ ) ≈ 1 N ∑ i = 1 N ( ∑ t ∇ θ log ⁡ π θ ( a t ∣ s t ) ) R ( τ ( i ) ) \nabla_\theta U(\theta) \approx \frac{1}{N} \sum_{i=1}^{N} \left( \sum_{t} \nabla_\theta \log \pi_\theta(a_t|s_t) \right) R(\tau^{(i)})θU(θ)N1i=1N(tθlogπθ(atst))R(τ(i))

为什么这个公式很牛?
它告诉我们:不需要知道环境的物理模型(Model-Free)。无论机器人结构多复杂,只要能通过仿真器采样出来,就可以训练!


3. 物理直觉:梯度是如何控制电机的?

把公式放到四足机器人项目中,每一个符号都有了物理含义。在legged_gym等框架中,策略π θ \pi_\thetaπθ通常输出的是动作分布的均值。

我们可以把梯度更新公式简化理解为:

参数更新 ∝ ∇ θ log ⁡ π ( a ∣ s ) ⏟ 调整方向 ⋅ R ( τ ) ⏟ 调整幅度 \text{参数更新} \propto \underbrace{\nabla_\theta \log \pi(a|s)}_{\text{调整方向}} \cdot \underbrace{R(\tau)}_{\text{调整幅度}}参数更新调整方向θlogπ(as)调整幅度R(τ)

场景 A:成功的尝试(R ( τ ) > 0 R(\tau) > 0R(τ)>0且很大)

  • 现象:机器狗这一步迈得很稳,没有摔倒,且速度达标。
  • 数学:奖励R RR为正,梯度方向与∇ log ⁡ π \nabla \log \pilogπ相同。
  • 效果:更新神经网络权重,增加在当前状态下输出该关节角度的概率密度。
  • 潜台词:“刚才那个姿势很帅,下次遇到这种情况还这么走!”

场景 B:失败的尝试(R ( τ ) < 0 R(\tau) < 0R(τ)<0

  • 现象:机器狗腿软了或者劈叉了。
  • 数学:奖励R RR为负,梯度方向反转。
  • 效果:更新神经网络权重,抑制产生该动作的概率。
  • 潜台词:“刚才那个电机力矩给大了,导致翻车,下次收敛一点。”

4. 现实的挑战:Sim-to-Real 为何会失效?

理论上很完美,但在 Isaac Gym 或 MuJoCo 里训练好的“满分策略”,直接部署到真机(如 A1, ANYmal)上经常会表现得像个刚学步的婴儿,甚至直接抽搐。

这是因为我们计算梯度的分布P s i m P_{sim}Psim和真实世界的分布P r e a l P_{real}Preal存在Distribution Shift(分布偏移)

4.1 核心差异点

  1. 执行器动力学 (Actuator Dynamics)
    • Sim: 假设电机是理想的,指令一下,扭矩瞬间到达。
    • Real: 真实的电机(如宇树 8010)有带宽限制摩擦死区滞后。如果策略要求电机以 50Hz 剧烈抖动,真机根本响应不过来。
  2. 延迟 (Latency)
    • Real: 从 IMU 读取 -> C++ 驱动解析 -> 网络推理 -> 串口下发,整个链路存在几十毫秒的延迟。
  3. 接触模型
    • 仿真里的地面通常是刚体,而真实地面可能是软的、滑的。

4.2 解决方案:域随机化 (Domain Randomization)

既然我们无法让P s i m P_{sim}Psim完美逼近P r e a l P_{real}Preal强化学习的思路是:让P s i m P_{sim}Psim变得超级宽,宽到把P r e a l P_{real}Preal包进去。

legged_gymconfig中,我们通常会进行以下操作:

  • 随机化摩擦力:范围 0.5 ~ 1.5。
  • 随机化质量:给狗身加减 1-2kg 的负载。
  • 随机化外力:训练时不断推挤机器人。
  • 随机化延迟:模拟 10ms ~ 30ms 的控制回路延迟。

原理:如果你的神经网络能在摩擦力既大又小、身体既重又轻、延迟既长又短的“地狱模式”模拟中都能站稳,那么它在那个“唯一且确定”的真实物理世界中,大概率也能站稳。


5. 总结

Policy Gradient 的本质,就是通过大量的试错(Rollout),利用概率论的技巧,将“好的行为”概率推高,将“坏的行为”概率压低。

理解了这个公式,就理解了为什么我们需要大规模并行仿真(Isaac Gym),以及为什么Domain Randomization是 Sim-to-Real 的必经之路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 14:28:06

34、深入探索Shell编程:算术运算、数组与bc计算器

深入探索Shell编程:算术运算、数组与bc计算器 1. 算术运算与扩展 1.1 算术扩展基础 算术扩展用于对整数执行各种算术运算,基本形式为 $((expression)) ,其中 expression 是有效的算术表达式。这与用于算术求值(真值测试)的复合命令 (( )) 相关。 1.2 数字进制 …

作者头像 李华
网站建设 2026/4/16 10:47:56

3个步骤让你的MAUI应用变身智能条码扫描仪

3个步骤让你的MAUI应用变身智能条码扫描仪 【免费下载链接】ZXing.Net.Maui Barcode Scanning for MAUI? 项目地址: https://gitcode.com/gh_mirrors/zx/ZXing.Net.Maui 想象一下&#xff0c;你的移动应用能够像超市收银台那样快速识别商品条码&#xff0c;或者像会议签…

作者头像 李华
网站建设 2026/4/16 12:22:46

【农业物联网通信稳定性提升】:99.9%在线率背后的7个关键策略

第一章&#xff1a;农业物联网Agent通信稳定性概述在现代农业物联网系统中&#xff0c;多个分布式Agent&#xff08;如传感器节点、执行器、网关和云平台&#xff09;需持续交换环境数据与控制指令。通信稳定性直接影响农作物监测精度、灌溉响应速度及整体系统可靠性。不稳定的…

作者头像 李华
网站建设 2026/4/16 9:23:02

大幅面激光打标机厂家推荐?当设备轰鸣声停下时,您需要一个永不下线的“陪跑者”

“效率与占地面积的博弈&#xff0c;是每一家大型工件制造商都必须面对的成本困局。”当您在生产线上划出一块宝贵的空地&#xff0c;放置一台能覆盖整张板、整个柜体或大尺寸外壳的大幅面激光打标机时&#xff0c;期待的是它开启产能新纪元。然而&#xff0c;现实往往充满变数…

作者头像 李华
网站建设 2026/4/16 9:22:11

【高精度制造必备】:工业机器人Agent动态补偿技术深度解析

第一章&#xff1a;工业机器人Agent精度控制的核心挑战在现代智能制造系统中&#xff0c;工业机器人Agent的精度控制直接影响生产效率与产品质量。随着柔性制造和高精度装配需求的增长&#xff0c;传统控制方法面临多重挑战&#xff0c;尤其是在动态环境下的实时响应、多源误差…

作者头像 李华
网站建设 2026/4/16 10:51:47

晨控CK-FR03-EC与基恩士系列PLC配置EtherCAT通讯连接手册

晨控CK-FR03系列作为晨控智能工业级别RFID读写器,支持大部分工业协议如RS232、RS485、以太网。支持工业协议Modbus RTU、Modbus TCP、Profinet、EtherNet/lP、EtherCat以及自由协议TCP/IP等。本期主题&#xff1a;围绕CK-FR03产品的EtherCAT通讯协议与基恩士系列PLC进行通讯配置…

作者头像 李华