Zhicheng

Robotics, Learning, and Control

0%

Safe Reinforcement Learning on the Constraint Manifold: Theory and Applications

在线学习的需求:

  • 机器人自适应控制要求策略在部署中持续(适应环境变化或者硬件老化)
  • CMDP的离线训练:训练后直接部署无法解决真实世界的动态不确定性
  • 需要保证在线学习的每一步都是安全的

同时如果在仿真训练时已经满足鲁棒性约束,迁移到现实时更能保证安全

举例:在一个机械臂避障任务中,机械臂末端需要从起点运动到目标点并在途中避开障碍物,其中有安全约束为机械臂与障碍物之间的距离D(q)> d_safe.扰动是关节控制过程中的噪声(如电机误差或外部力干扰)。

  • 当没有扰动(标称情况)
    此时使用ATACOM控制方法:构造约束函数;随后在构造的约束函数切空间生成安全动作,从而严格保证k(q) <= 0

  • 当存在扰动
    扰动模型:控制输入受到噪声影响;定理2可以保证机械臂可能短暂进入不安全区域,但是不会完全碰撞到障碍物

通过一个 机械臂避障 的实例,结合ATACOM算法的设计步骤,说明如何从问题建模到控制器实现的全过程。假设机械臂需在避免碰撞(安全约束)的同时完成末端轨迹跟踪(任务目标)。


  1. 问题建模
    状态与动力学
  • 状态变量:
    ( s = [q, \dot{q}] \in \mathbb{R}^{2n} ),其中 ( q ) 为关节角度,( \dot{q} ) 为角速度。
  • 动力学模型(控制仿射形式):
    [
    \dot{s} = \underbrace{\begin{bmatrix} \dot{q} \ -M(q)^{-1}(C(q,\dot{q})\dot{q} + g(q)) \end{bmatrix}}{f(s)} + \underbrace{\begin{bmatrix} 0 \ M(q)^{-1} \end{bmatrix}}{G(s)} u_s
    ]
    • ( M(q) ):惯性矩阵,( C(q,\dot{q}) ):科氏力矩阵,( g(q) ):重力项。
    • 控制输入 ( u_s \in \mathbb{R}^n ):关节力矩。

安全约束

  • 避障约束(距离函数):
    [
    k(s) = d_{\text{min}} - |p(q) - p_{\text{obs}}| \leq 0
    ]
    • ( p(q) ):机械臂末端位置,( p_{\text{obs}} ):障碍物位置,( d_{\text{min}} ):最小安全距离。
    • 约束函数 ( k(s) ) 需满足 ( C^1 ) 光滑性(可通过距离场平滑化实现)。

  1. ATACOM算法设计步骤
    步骤1:构造约束流形
  • 引入松弛变量 ( \mu \geq 0 ),定义等式约束:
    [
    c(s, \mu) = k(s) + \mu = 0
    ]
  • 约束流形:
    [
    \mathcal{M} = {(s, \mu) \in \mathbb{R}^{2n} \times [0, +\infty) : c(s, \mu) = 0}
    ]
    • 投影性质:若 ( (s, \mu) \in \mathcal{M} ),则 ( s ) 满足原始约束 ( k(s) \leq 0 )。

步骤2:设计松弛变量动力学

  • 动态更新规则(类K函数控制):
    [
    \dot{\mu} = \alpha(\mu) u_\mu, \quad \alpha(\mu) = \mu \quad (\text{例:线性函数})
    ]
    • 控制输入 ( u_\mu \in \mathbb{R} ):调节松弛变量的变化速率。
    • 性质:若初始 ( \mu(0) > 0 ),则 ( \mu(t) > 0 ) 对所有 ( t \geq 0 ) 成立(Lemma 1)。

步骤3:增广系统动力学

  • 联合系统:
    [
    \begin{bmatrix} \dot{s} \ \dot{\mu} \end{bmatrix} = \begin{bmatrix} f(s) \ 0 \end{bmatrix} + \begin{bmatrix} G(s) & 0 \ 0 & \alpha(\mu) \end{bmatrix} \begin{bmatrix} u_s \ u_\mu \end{bmatrix}
    ]
    • 控制矩阵:
      [
      J_u(s, \mu) = \nabla_s c(s, \mu) G(s) = \nabla_q k(s) \cdot J_{\text{arm}}(q) \cdot M(q)^{-1}
      ]
      • ( J_{\text{arm}}(q) ):机械臂末端雅可比矩阵。

步骤4:切空间投影

  • 切空间基 ( B_u ) 计算:
    • 对 ( J_u ) 进行SVD分解,取右奇异向量 ( B_u \in \mathbb{R}^{(n+1) \times n} ) 满足 ( J_u B_u = 0 )。
    • 物理意义:( B_u ) 的列向量张成允许的安全控制方向(即不违反约束的力矩组合)。

步骤5:安全控制器

  • 控制律(公式12):
    [
    \begin{bmatrix} u_s \ u_\mu \end{bmatrix} = \underbrace{-J_u^\dagger \psi}{\text{漂移补偿}} + \underbrace{B_u u}{\text{任务控制}} - \underbrace{\lambda J_u^\dagger c}_{\text{收缩项}}
    ]
    • 参数说明:
      • ( \psi = \nabla_s k(s) \cdot f(s) ):约束对自然动态的敏感度。
      • ( u ):RL策略输出的原始力矩(如跟踪PD控制信号)。
      • ( \lambda > 0 ):收缩速率。

  1. 实例运行流程
  2. 初始化:机械臂位于安全位置 ( s_0 ),松弛变量 ( \mu(0) = \max(-k(s_0), \text{tol}) )。
  3. 在线控制循环:
    • RL策略输出 ( u ):如目标跟踪的PD控制信号。
    • ATACOM修正:
      • 计算 ( J_u ) 和 ( B_u ),投影 ( u ) 到切空间。
      • 若机械臂接近障碍物(( k(s) \to 0 )),收缩项 ( -\lambda J_u^\dagger c ) 主导,产生避障力矩。
    • 执行安全控制 ( u_s )。
  4. 结果:机械臂末端绕开障碍物并收敛到目标轨迹(见下图)。

  1. 关键设计要点
    设计环节 解决方法 实例中的实现
    约束建模 距离函数 + 松弛变量 ( k(s) = d_{\text{min}} - |p - p_{\text{obs}}| )
    流形切空间计算 SVD分解控制矩阵 ( J_u ) 机械臂雅可比矩阵与惯性矩阵耦合
    安全控制律 漂移补偿 + 任务投影 + 收缩项 避障力矩自动生成
    动态松弛变量 类K函数控制的 ( \dot{\mu} ) 保证 ( \mu(t) > 0 ) 避免数值奇点

  1. 数学与物理意义对应
  • 切空间投影:将关节力矩限制在“不缩短机械臂与障碍物距离”的方向。
  • 收缩项:类似虚拟排斥力,强度随 ( k(s) ) 接近0而增大。
  • 松弛变量:量化“允许的临时约束违反”,动态调整控制保守性。

几种RL对于约束函数的处理方法

假设约束函数$k(s) \leq 0$, 机械臂与障碍物距离 $ D ( s ) \geq d _ { s a f e }$ 可以表示为 $ k(s) = d_safe - D(s) \leq 0 $

方法对比与切空间的优越性

以下是针对同一个约束函数,不同安全强化学习方法处理方式的对比分析,结合数学形式、实现逻辑和应用场景的详细说明:

  1. 问题设定
    约束函数:
    [ k(s) \leq 0 ]
    (例如:机械臂与障碍物距离 ( D(s) \geq d_{\text{safe}} ) 可表示为 ( k(s) = d_{\text{safe}} - D(s) \leq 0 ))

目标:在强化学习训练和部署中保证 ( k(s) \leq 0 ) 始终成立。

  1. 不同方法对比

(1) 惩罚函数法(Penalty Method)

  • 处理方式:
    在奖励函数中加入惩罚项:
    [
    R_{\text{penalized}} = R_{\text{task}} - \lambda \max(0, k(s))^2
    ]
    • (\lambda) 为惩罚系数,需手动调节。
  • 特点:
    • 数学简单:无需修改策略结构。
    • 安全无保证:训练早期可能严重违反约束(如图1左)。
    • 调参敏感:(\lambda) 过小导致约束失效,过大抑制探索。
  • 适用场景:
    仿真环境预训练,且约束违反无严重后果时。

(2) 安全滤波器(QP-Based Safety Filter)

  • 处理方式:
    在线求解二次规划问题,修正动作 ( u ):
    [
    \begin{aligned}
    \min_{u} \quad & |u - u_{\text{RL}}|^2 \
    \text{s.t.} \quad & \nabla k(s)^T (f(s) + G(s)u) \leq -\alpha k(s)
    \end{aligned}
    ]
    • 通过CBF(Control Barrier Function)保证约束。
  • 特点:
    • 即时安全:每一步动作均满足约束。
    • 计算开销大:实时求解QP问题(毫秒级延迟)。
    • 可行性风险:约束冲突时无解(如机械臂被“卡死”)。
  • 适用场景:
    计算资源充足的实时控制系统(如自动驾驶)。

(3) 备份策略(Backup Policy)

  • 处理方式:
    预设安全策略 ( \pi_{\text{safe}} )(如零速度指令),当 ( k(s) > \epsilon ) 时切换:
    [
    u = \begin{cases}
    u_{\text{RL}} & \text{if } k(s) \leq \epsilon, \
    \pi_{\text{safe}}(s) & \text{otherwise}.
    \end{cases}
    ]
  • 特点:
    • 简单可靠:硬件易实现。
    • 保守性:任务中断频繁(如图1中)。
    • 泛化性差:需为每个任务单独设计 ( \pi_{\text{safe}} )。
  • 适用场景:
    已知明确安全动作的简单系统(如急停按钮)。

(4) 切空间投影(ATACOM,Tangent Space Projection)

  • 处理方式:
    1. 构造约束流形 ( \mathcal{M} = {s \mid k(s) = 0} ) 的切空间 ( T_s\mathcal{M} )。
    2. 将RL动作 ( u ) 投影到切空间:
      [
      u_{\text{safe}} = (I - \nabla k(s) (\nabla k(s)^T \nabla k(s))^{-1} \nabla k(s)^T) u
      ]
    3. 动态调整松弛变量 ( \mu ) 保证渐近收敛(见原文公式12)。
  • 特点:
    • 严格安全:数学保证 ( k(s) \leq 0 )(即使训练中)。
    • 高效:投影计算仅需矩阵乘法(微秒级)。
    • 自适应:无需手动设计安全策略。
  • 适用场景:
    高维复杂系统(如机器人、无人机)的在线安全学习。

对比总结表

方法 数学形式 安全性保证 计算效率 是否需要调参 适用场景
惩罚函数法 修改奖励函数 ❌ 无 ⚡ 最高 ✅ 需调λ 无风险仿真
安全滤波器 在线QP优化 ✅ 严格 🐢 慢 ❌ 无需 高资源实时系统
备份策略 条件策略切换 ⚠️ 保守 ⚡ 快 ✅ 需设计策略 简单硬件系统
切空间投影 几何投影+动态松弛 ✅ 严格 ⚡ 快 ❌ 无需 复杂在线学习
  1. 实例说明(机械臂避障)
  • 惩罚函数法:
    训练早期机械臂碰撞障碍物(( k(s) > 0 )),直到策略学会规避。
  • 安全滤波器:
    每个时间步求解QP,保证 ( D(s) \geq 0.1 ) m,但计算延迟导致控制频率下降。
  • 备份策略:
    机械臂接近障碍物时紧急停止,无法完成任务。
  • 切空间投影:
    机械臂沿障碍物表面切线运动(( D(s) \equiv 0.1 ) m),既安全又完成任务。
  1. 核心差异总结
  2. 安全性的数学基础:
    • 切空间投影和QP滤波器通过微分几何/优化理论严格保证安全。
    • 其他方法依赖启发式设计。
  3. 计算本质:
    • 切空间投影是解析解,QP是数值解,备份策略是规则匹配。
  4. 适用性:
    • 切空间方法唯一同时满足实时性、严格安全和自适应学习的要求。

通过这种对比,可以清晰看出为何ATACOM的切空间方法在复杂安全关键任务中具有显著优势。

应用方向 是否适合用 RL 推荐算法
自主步态生成 PPO / SAC
多地形适应 PPO + Domain Rand
扰动恢复 TD3 / SAC
动力学复杂、控制难 RL + WBC / MPC
纯平地、稳定任务 ❌(传统控制器足够) -

强化学习在双足机器人中的问题和解决方案

问题类别 具体问题描述 典型解决方法 说明
Sim-to-Real Gap 仿真与现实存在建模差异,策略迁移失败 Domain Randomization 训练时随机化仿真参数,提高泛化能力
Domain Adaptation / Fine-tuning 用少量真实数据微调策略
Residual Policy Learning 用小网络学习偏差残差,补偿仿真误差
System Identification 精准拟合物理参数,减小建模误差
样本效率低 学习步态需要大量交互,训练时间长 Imitation Learning + RL 先用专家演示加速策略初始化
Offline RL(如 CQL) 用离线数据训练,减少实物交互
Model-based RL / Dynamics model 引入动力学模型减少试错次数
安全性差 实机训练中容易跌倒、损伤硬件 Safe RL / Shielded RL 引入安全约束、屏蔽高风险动作
Curriculum Learning 从简单任务逐步训练,降低跌倒风险
仿真预训练 + 小步实机测试 仿真先学好,在现实中逐步上线
不可解释性强 策略黑箱、调试难、难验证稳定性 Hybrid Control (RL + MPC/WBC) RL 生成参考,稳定由经典控制器保障
可视化工具(t-SNE, Grad-CAM) 分析策略结构与决策依据
结构化策略设计 将任务拆解成可控子模块组合训练

扩散模型在其中的作用

Sim2Real问题点 扩散模型可能解决的问题 原理与作用说明
1. 物理环境差异 生成更真实、丰富的环境扰动样本 扩散模型可以学习仿真环境和真实环境间的差异分布,生成多样化、接近真实环境的状态或扰动样本,丰富训练数据,使策略对真实环境有更好的鲁棒性。
2. 样本效率低 辅助生成高质量模拟数据,提升样本多样性和有效性 通过扩散模型生成逼真且多样化的状态转移样本,减少真实环境数据需求,提高训练效率。
3. 安全风险 辅助仿真中生成更接近真实的安全扰动数据,降低实机试错风险 利用扩散模型生成多种环境扰动场景,进行安全的仿真训练,避免实机危险。
4. 策略泛化能力弱 通过生成多样化情景样本,增强策略对未见环境的泛化 多样化生成可以让RL策略在训练时接触更广泛的状态分布,减少策略过拟合,提升现实适应能力。

双足机器人的控制方法汇总

层级 控制范式 代表方法
1⃣ 底层控制 位置/速度/力控制 PID控制、阻抗控制、力控制
2⃣ 运动学级 逆运动学、任务空间控制 IK伪逆、OSC、Stack-of-Tasks
3⃣ 动力学级 基于模型的控制 WBC、Feedback Linearization、优化控制
4⃣ 步态规划与预测控制 步态生成、预测控制 ZMP轨迹规划、MPC、Preview Control
5⃣ 混合系统与学习 稳定性优化与学习 HZD、强化学习、RL-MPC、模仿学习
方法 控制层级 优点 局限 适合场景
PID/阻抗 底层 简单鲁棒 控制力弱 力控制、人机交互
SoT / OSC 运动学 多任务清晰 不考虑动态 多目标位置控制
WBC 动力学 多任务 + 力控制 实时性要求高 全身控制、双足
MPC / Preview 预测 稳定性强 需模型、优化开销大 CoM轨迹、ZMP稳定
HZD 杂交系统 周期稳定性好 难以适应非周期 平地行走、理论研究
强化学习 数据驱动 灵活自适应 样本量大、转移难 非结构环境

杂交系统是指包含连续动态系统(例如由微分方程描述的运动)和离散事件系统(例如接触切换、碰撞、跳跃)的组合系统。

双足机器人中的杂交结构

  • 系统由两种部分构成:连续阶段(Continuous Dynamics:机器人在空中摆腿、质心运动

例如:单腿支撑期、双腿支撑期的动力学模型

离散事件(Discrete Transitions):脚与地面接触或离地引起的状态突变

一个杂交系统一般写作如下六元组:$ H = ( Q , X , f , D , R , G )$

控制流程总结图

目标行走任务(如向前走)

[高层任务] 决定步长/频率

[步态生成] 生成ZMP轨迹、抬脚时序

[运动规划] 用ZMP规划CoM轨迹(如 Preview Control)

[任务空间控制] 生成CoM和足端运动指令

[关节控制] 逆解得到关节目标值(IK/ID)

[底层控制] PID or 力矩控制跟踪

[电机执行,机器人行走]

双足机器人中步行常用轨迹类型

轨迹类型 控制目标 怎么求得的
ZMP轨迹(零力矩点) 动态稳定性 ZMP保持在支撑面内部
质心轨迹(CoM) 平衡、重心移动 CoM 按LIPM/MPC等控制
足端轨迹(swing foot) 摆动腿落点精度 Bézier曲线、多项式轨迹
关节轨迹(joint angles) 驱动指令输入 由逆运动学或优化求得
任务空间轨迹(如髋/躯干) 姿态保持 水平/垂直速度稳定

双足机器人中OMPL的用途

  • 环境中的路径规划(从A到B点)
  • 多步脚印序列规划: OMPL 可用来在配置空间中搜索一条“步态合法序列”。

ESO在双足机器人中的应用

双足机器人是高度非线性、耦合、强扰动的系统:

问题 对应解决目标
地面不确定性(软硬、摩擦) 外部扰动估计
建模误差(动力学不完整) 结构性扰动估计
控制信号延迟、误差 观测状态误差补偿
状态难以精确传感(如关节加速度) 使用 ESO 估计不可测状态

双足中的欠驱动问题

欠驱动意味着控制输入的自由度少于系统的自由度,导致系统无法直接驱动所有运动变量。控制这类系统时,通常需要利用系统本身的动力学特性和非线性控制方法。

方法类别 具体方法
反馈线性化控制 利用系统的非线性动力学方程,通过反馈设计奖系统部分状态线性化,便于设计线性控制器
滑膜控制 设计滑膜面
非线性控制(如反馈线性化结合非线性轨迹规划) - 设计非线性控制器匹配系统非线性动力学,同时结合轨迹规划确保系统按预期运动
阶段切换控制(Hybrid Control) - 欠驱动系统多表现为混合动力学(如步态中不同相位),通过切换不同控制策略完成不同阶段的控制
反步法(Backstepping) - 递归设计控制律,将复杂系统分解为层级子系统,逐步设计控制器,适用于非线性欠驱动系统
优化控制与MPC(Model Predictive Control) - 利用模型预测未来状态,求解带约束的最优控制输入,特别适合处理欠驱动系统的运动规划和实时控制
学习控制与强化学习 - 通过数据驱动的方法,学习欠驱动系统的控制策略,适合模型不准确或环境复杂的情况

双足机器人中走的更快的问题

轨迹规划改进

  • 动态步态生成
  • 可变的步态调整

控制算法应该怎么改进

  • 前馈和反馈进行结合:前馈部分用于快速响应人体和环境变化,反馈部分保证稳定性和误差校正。
  • MPC:利用预测未来状态,提前计算控制输入,增强快速运动的稳定性和灵活性。
  • 自适应控制:实时调整控制参数,应对人体动力学变化和不同的速度变化。

解决走路晃动幅度很大的问题

加强平衡控制:对质心和零力矩点进行控制

控制算法优化:

  • 增强反馈控制增益
  • 阻抗控制或者自适应阻抗控制
  • 模型预测控制

MPC for Humanoid Gait Generation: Stability and Feasibility

问题:传统的ZMP方法与质心(CoM)动力学存在内在不稳定性。
创新方法:提出了一种本质稳定的模型预测控制,通过稳定性约束保证CoM轨迹相对于ZMP轨迹有界。

整体框架:

  • 高层指令:接收外部驱动的参考速度(平移速度v_x, v_y和转向速度\omaga);
  • 脚步生成模块:通过QP优化生成候选脚步位置和时序T_s;
  • IS-MPC模块:优化实时脚步和CoM轨迹,确定稳定性约束;
  • 运动控制:跟踪生成的CoM和摆动脚的轨迹。

DreamPolicy: A Scalable Unified Policy for Versatile Humanoid Locomotion

任务的依赖性:传统的强化学习需要为每种地形设计特定的奖励函数,导致“一个任务一个策略”
数据利用不足:即使数据量增长,但是传统的强化学习难以有效利用离线数据提升泛化能力。
泛化性差:策略容易过拟合训练地形,在未见地形中表现不佳。

现有解决方案的缺陷:

  • 人类运动数据集需要复杂重定向到人形机器人,而且无法直接编码地形约束。
  • 策略蒸馏(将一个性能好但是计算开销高的策略压缩给一个较小较高效的策略网络)依赖在线仿真,计算成本较高。

DreamPolicy的框架创新
地形感知的的专家技能收集:

  • 在六种单一地形上训练专用的RL策略,生成巨大的离线数据集
  • 数据直接捕获人形机器人运动学,包含本地感知,地形高度图,历史状态等

扩散驱动的混动合成

  • 使用生成模型框架(DDPM)来预测未来的状态轨迹,条件输入包含历史状态和地形嵌入。

HMI条件化统一策略

  • 以扩散模型生成的轨迹为动态目标,优化RL策略。扩散模型和策略优化分离,支持通过数据扩展持续改进。
  • HMI隐式编码指的是一种通过扩散模型生成的未来运动轨迹来动态替代传统手工设计奖励函数的技术。核心思想是将地形物理约束,运动风格等复杂目标嵌入到扩散模型生成的轨迹中,从而指导策略学习。

算法模块

文件名 功能简要
Eul_w_filter.cpp / Eul_w_filter.h 用于欧拉角速度滤波(姿态估计的角速度平滑)
foot_placement.cpp / foot_placement.h 足端位置规划(多用于步态规划、平衡控制)
gait_scheduler.cpp / gait_scheduler.h 步态调度器(步态状态机、步态切换、步态周期控制)
joystick_interpreter.cpp / joystick_interpreter.h 摇杆解释器(人机交互或远程控制的速度指令解析)
mpc.cpp / mpc.h 模型预测控制(用于轨迹规划、步态控制或平衡控制)
pino_kin_dyn.cpp / pino_kin_dyn.h Pinocchio动力学/运动学接口(封装好的运动学求解器)
priority_tasks.cpp / priority_tasks.h 任务优先级模块(多任务控制,如Stack-of-Tasks等)
StateEst.cpp / StateEst.h 状态估计模块(卡尔曼滤波或其他方法估计机器人状态)
wbc_priority.cpp / wbc_priority.h 具有优先级的全身控制(Whole-Body Control)模块

jocabi矩阵的作用

四元数的形式

  • 四元数通常表示为:q=w+xi+yj+zk
    w:实部(标量部分),表示旋转的角度信息。
    x,y,z:虚部(向量部分),表示旋转轴的方向。
    避免万向节锁:欧拉角在特定角度(如俯仰角±90°)时丢失自由度,而四元数无此问题。

  • 四元数的规范化:
    $ | | q | | = \sqrt { w ^ { 2 } + x ^ { 2 } + y ^ { 2 } + z ^ { 2 } } = 1$

  • 四元数到旋转矩阵:$ R = \begin{bmatrix} 1 - 2 y ^ { 2 } - 2 z ^ { 2 } 2 x y - 2 w z 2 x z 2 x z 2 x z \ 2 x y + 2 w z 1 - 2 x ^ { 2 } - 2 z ^ { 2 } 2 y z - 2 w x \ 2 x z - 2 w y 2 y z + 2 w x 1 - 2 x ^ { 2 } - 2 y ^ { 2 } \end{bmatrix} $

旋转矩阵的使用

  • 绕x轴旋转:
    M << 1, 0, 0,
    0, cos(theta), -sin(theta),
    0, sin(theta), cos(theta);

  • 绕y轴旋转:
    M << cos(theta), 0, sin(theta),
    0, 1, 0,
    -sin(theta), 0, cos(theta);

  • 绕z轴旋转:
    M << cos(theta), -sin(theta), 0,
    sin(theta), cos(theta), 0,
    0, 0, 1;

贝塞尔曲线的使用

  • $ B ( s ) = \sum _ { i = 0 } ^ { n } C ( n , i ) ( 1 - s ) ^ { n - i } s ^ { i } P _ { i }, 其中 s∈[0,1] $ 。
  • 上面的贝塞尔曲线本身就是连续没有拐点的,同时导数也是连续的。
  • 在一维(Bezier_1D)里,P 是一个向量,保存了 控制点的值。

卡尔曼滤波

卡尔曼滤波是一种递归状态估计算法,通过融合系统模型预测和传感器观测数据,在噪声干扰下得到最优状态估计。

  • 预测-更新循环:交替进行模型预测和测量校正。
  • 最小方差准则:通过协方差矩阵量化不确定性,追求估计误差最小。

状态方程:$ x _ { k } = A _ { k } x _ { k - 1 } + B _ { k } u _ { k } + w _ { k }$
观测方程: $z _ { k } = H _ { k } x _ { k } + v _ { k } $
以下是卡尔曼滤波(Kalman Filter)的详细过程解析,结合数学推导和实际意义说明:

  1. 卡尔曼滤波五大公式及解释
    假设线性系统模型如下:
  • 状态方程:( \mathbf{x}_k = \mathbf{A}k \mathbf{x}{k-1} + \mathbf{B}_k \mathbf{u}_k + \mathbf{w}_k )
  • 观测方程:( \mathbf{z}_k = \mathbf{H}_k \mathbf{x}_k + \mathbf )
    其中:
  • ( \mathbf{x}_k ):系统状态(如位置、速度)。
  • ( \mathbf{u}_k ):控制输入。
  • ( \mathbf{w}_k \sim \mathcal{N}(0, \mathbf{Q}_k) ):过程噪声(建模误差)。
  • ( \mathbf{v}_k \sim \mathcal{N}(0, \mathbf{R}_k) ):观测噪声。
  • ( \mathbf{A}_k, \mathbf{B}_k, \mathbf{H}_k ):状态转移、控制输入、观测矩阵。

步骤1:状态预测(时间更新)

  1. 先验状态估计:
    [ \hat{\mathbf{x}}_k^- = \mathbf{A}k \hat{\mathbf{x}}{k-1} + \mathbf{B}_k \mathbf{u}_k
    ]

    • 基于上一时刻最优估计 ( \hat{\mathbf{x}}_{k-1} ) 和系统模型预测当前状态。
  2. 先验协方差预测:
    [
    \mathbf{P}_k^- = \mathbf{A}k \mathbf{P}{k-1} \mathbf{A}_k^T + \mathbf{Q}_k
    ]

    • ( \mathbf{P}_k^- ) 表示预测状态的不确定性(含过程噪声 ( \mathbf{Q}_k ))。

步骤2:卡尔曼增益计算
[
\mathbf{K}_k = \mathbf{P}_k^- \mathbf{H}_k^T (\mathbf{H}_k \mathbf{P}_k^- \mathbf{H}_k^T + \mathbf{R}_k)^{-1}
]

  • 物理意义:
    • 分子 ( \mathbf{P}_k^- \mathbf{H}_k^T ):预测状态与观测的协方差。
    • 分母 ( \mathbf{H}_k \mathbf{P}_k^- \mathbf{H}_k^T + \mathbf{R}_k ):预测观测的总不确定性(含传感器噪声 ( \mathbf{R}_k ))。
  • 作用:权衡模型预测与观测的信任度。若传感器噪声大(( \mathbf{R}_k ) 大),增益 ( \mathbf{K}_k ) 减小,更依赖模型预测。

步骤3:状态更新(测量校正)
[
\hat{\mathbf{x}}_k = \hat{\mathbf{x}}_k^- + \mathbf{K}_k (\mathbf{z}_k - \mathbf{H}_k \hat{\mathbf{x}}_k^-)
]

  • 残差项 ( \mathbf{z}_k - \mathbf{H}_k \hat{\mathbf{x}}_k^- ):观测值与预测值的差异(即“新息”)。
  • 更新逻辑:通过卡尔曼增益将残差加权修正预测值。

步骤4:协方差更新
[
\mathbf{P}_k = (\mathbf{I} - \mathbf{K}_k \mathbf{H}_k) \mathbf{P}_k^-
]

  • 意义:修正后的状态不确定性降低(( \mathbf{P}_k \leq \mathbf{P}_k^- ))。
  1. 扩展卡尔曼滤波(EKF)
    针对非线性系统(如机器人SLAM):
  2. 线性化:在当前估计点对非线性模型 ( f(\mathbf{x}), h(\mathbf{x}) ) 进行一阶泰勒展开。
    • 状态方程雅可比矩阵:( \mathbf{F}k = \left. \frac{\partial f}{\partial \mathbf{x}} \right|{\hat{\mathbf{x}}_{k-1}} )。
    • 观测方程雅可比矩阵:( \mathbf{J}k = \left. \frac{\partial h}{\partial \mathbf{x}} \right|{\hat{\mathbf{x}}_k^-} )。
  3. 公式调整:
    • 预测:( \hat{\mathbf{x}}k^- = f(\hat{\mathbf{x}}{k-1}) )。
    • 协方差:( \mathbf{P}_k^- = \mathbf{F}k \mathbf{P}{k-1} \mathbf{F}_k^T + \mathbf{Q}_k )。
    • 增益:( \mathbf{K}_k = \mathbf{P}_k^- \mathbf{J}_k^T (\mathbf{J}_k \mathbf{P}_k^- \mathbf{J}_k^T + \mathbf{R}_k)^{-1} )。

MPC的控制过程

  • 线性化动力学(Ac, Bc)
    • 当前机器人站在世界系某个角度(base_rot),所以要将惯性矩阵和其他力项转换到世界系。
  • 离散变换,把连续时间Ac, Bc乘上dt得到离散时间矩阵A, B。
  • 累积状态转移矩阵(Aqp, Aqp1)
  • 累积输入矩阵(Bqp1, Bqp11, Bqp)
  • 构建QP问题

1. 自我认知与人生思考类

  • 《被讨厌的勇气》岸见一郎 —— 帮助你思考自己的人生课题。
  • 《活出生命的意义》维克多·弗兰克 —— 从逆境中找到意义。
  • 《少有人走的路》M·斯科特·派克 —— 成长、爱与精神修炼。
  • 《沉思录》马可·奥勒留 —— 斯多葛哲学入门。

2. 未来职业与技能提升类

  • 《原则》Ray Dalio —— 工作与生活决策的逻辑。
  • 《刻意练习》Anders Ericsson —— 如何高效学习和成长。
  • 《底层逻辑》刘润 —— 认知升级和商业思维训练。
  • 《如何阅读一本书》莫提默·J·艾德勒 —— 教你真正学会自学。

3. 文学与文化修养类

  • 《百年孤独》加西亚·马尔克斯 —— 拉美魔幻现实主义巅峰。
  • 《月亮与六便士》毛姆 —— 追梦与现实的冲突。
  • 《挪威的森林》村上春树 —— 关于孤独与成长。
  • 《追风筝的人》卡勒德·胡赛尼 —— 成长与救赎。

4. 世界观与视野拓展类

  • 《枪炮、病菌与钢铁》贾雷德·戴蒙德 —— 人类文明的演化逻辑。
  • 《未来简史》尤瓦尔·赫拉利 —— 未来几十年的大趋势。
  • 《全球通史》斯塔夫里阿诺斯 —— 用长镜头理解世界。

5. 兴趣探索与灵感启发类

  • 《流浪地球》刘慈欣 —— 科幻世界里的想象与现实。
  • 《小王子》圣·埃克苏佩里 —— 重新认识纯真与爱。
  • 《旅行的艺术》阿兰·德波顿 —— 关于旅途中发现自我。

《未来简史》

1. 人类将成为“数据生物”

  • 生物学的革命:赫拉利认为,随着基因编辑、人工智能和大数据的进步,生物学将成为未来的主流学科,个人的生命、健康、心理等都会被转化为“数据”来处理。
  • 人类与机器的融合:未来,生物与科技将不再是两个独立的领域。人工智能和基因工程可能让人类的能力、寿命甚至思想发生翻天覆地的变化,人与机器的界限会逐渐模糊。

2. 人工智能将取代大部分工作

  • 技术革命的冲击:赫拉利指出,人工智能的发展将使许多传统的职业和任务被机器取代,导致大规模失业。大部分的工作可能会由高度智能化的机器完成,尤其是那些重复性强、需要大量数据处理的工作。
  • 人类的角色转变:未来人类可能需要从“工作机器”转变为更有创造性和社会功能的角色,而这要求人类具备更高的情感智能、创造力和社交能力。

3. 人类的目标不再是“生存”,而是“意义”

  • 生存问题解决后,新的焦虑出现:随着生命延续的技术发展,生存不再是最大的问题,问题将转向“为什么活着”。赫拉利提到,未来人类将面临“存在的意义”这一更深层次的哲学问题,如何为自己的生命找到意义和价值,将成为人类的新挑战。
  • 无聊与虚无感:随着AI和自动化的普及,人们将不再为了生存而工作,这种自由也可能带来焦虑、无聊和失落,社会如何管理人们的心理健康和情感需求,将变得更加重要。

4. “智人”将变成“超人”

  • 超级人类的诞生:赫拉利预测,未来会有一些人通过基因编辑、神经科学或智能增强等技术,超越现有的人类能力,变成“超人类”。这些“超人”将具备超常的智慧、健康或能力,从而在社会上拥有巨大的优势,甚至可能重新定义“人类”的定义。

5. 全球化与科技进步带来新的社会不平等

  • 财富和权力的集中:随着技术的不断进步,赫拉利警告,科技和财富的集中可能会加剧社会不平等。未来,少数拥有控制技术和资源的人可能将拥有巨大的社会权力,而普通人可能面临更多的困境。
  • 社会结构的变化:全球化和技术进步将使国家边界变得不那么重要,但全球不平等、社会阶层的固化仍将是世界面临的一大挑战。

《底层逻辑》

1. 看到事物背后的规律,而不仅是表面现象

  • 真正聪明的人,不是看见了表象,而是能洞察背后的本质、模式和因果关系。

2. 世界是复杂的,但可以通过“底层逻辑”来简化认知

  • 底层逻辑包括:第一性原理、系统思考、长期主义、概率思维等。
  • 不是简单套模板,而是建立自己的思考体系,灵活应对变化。

3. 理解底层逻辑,让你在不确定的世界里找到确定性

  • 比如,财富积累的底层逻辑是:延迟满足 + 复利思维;
  • 个人成长的底层逻辑是:不断积累稀缺能力 + 构建个人护城河。

4. 认知升级比努力更重要

  • 单纯的努力可能是无效的,只有基于正确认知和方法的努力,才能真正拉开人与人之间的差距。

5. 真正有智慧的人,都是做“长期正确”的事

  • 不是追求短期的成功和满足,而是能在时间中不断积累优势。

《被讨厌的勇气》

1. 所有烦恼都来源于“人际关系”

  • 无论是自卑、愤怒、焦虑,还是不安,本质上都是因为“我在意别人怎么看我”。

2. 课题分离:做好自己的事,不干涉别人的事

  • 只专注于自己能控制的部分。别人的评价、感受,是他们自己的课题,不是你的责任。
  • 不要为了取悦别人而活,也不要干预别人的选择。

3. 生活不是追求认可,而是“勇敢地被讨厌”

  • 真正的自由,是接受即使被讨厌也无所谓,仍坚持做自己认为对的事。

4. 一切问题都源自“目的论”而非“原因论”

  • 不是过去的经历决定了我们,而是我们自己为当前的行为设定了目的(比如:为了不受伤害,所以选择逃避)。

5. 活在当下,不为过去或未来所困

  • 人生的价值在于此时此刻,而不是对过去的悔恨或对未来的恐惧。
  • 幸福就是“感受到自己在有价值地活着”。

6. 贡献感是幸福的来源

  • 当你觉得自己对他人、社会有贡献时,就能感受到真正的幸福。

HiLMa-Res: A General Hierarchical Framework via Residual RL for Combining Quadrupedal Locomotion and Manipulation

✅ 1. 提出了一个可泛化的 loco-manipulation 分层强化学习框架

📌 原理:

  • Loco-manipulation 是 locomotion(行走)+ manipulation(操作)的组合问题,控制空间极大,策略难以学习。
  • 将整体任务分层
    • 低层:Locomotion Controller → 学习行走并追踪任意足端轨迹;
      • 用神经网络实现 PPO 策略
        输入:包含机器人当前的运动状态、历史状态、外部扰动、目标轨迹(轨迹隐含在相位变量和周期中);
        输出:每只脚的期望接触力 / 足端位置(用于力控或位置控);
        训练方法:PPO 强化学习算法;
        在 Isaac Gym 中高效并行训练;
        加了 domain randomization(随机地形、噪声)以增强泛化性;
        特征:一旦训练完成,可以直接部署到真实机器人,无需再训练。
    • 高层:Manipulation Planner → 规划残差轨迹,实现操纵任务。
      • 用神经网络实现轨迹规划策略
        输入:状态输入:机器人自身状态、目标信息(如目标位置、速度方向);
        或图像输入:深度图、摄像头画面(需加 CNN);
        输出:每条腿一条 3 阶 Bezier 曲线的控制点(一般是 3~4 个点);
        CPG 的周期/相位调节参数(例如走路节奏);
        训练方法:
        同样使用强化学习算法(PPO/DroQ);
        奖励函数任务相关,比如推球的方向、推箱位置、避障是否成功;
        可接入现实数据再训练(RLPD),提升现实表现;
        特点:通用框架 + 不同任务换不同 reward 即可复用。
    • 用低层网络学“怎么走”;用高层网络学“走向哪里、怎么推、怎么跨”。

✅ 好处:

  • 解耦复杂任务 → 降低学习难度;
  • 低层可重用多个任务,高层策略任务特定,实现模块化和迁移能力

✅ 2. 采用任务无关的运动控制器和任务相关的操作规划器

📌 原理:

  • 低层运动控制器(Locomotion Controller)专注于足端轨迹跟踪,不关心上层任务内容。
  • 高层操作规划器只需要设计足端轨迹(residual),来完成具体任务目标。

✅ 实现方式:

  • 低层训练时,只用模拟中随机生成的轨迹训练它追踪;
  • 高层策略负责设计这些轨迹的“形状”(比如球要往左推 → 左脚向外伸);
  • 二者通过轨迹接口(Bezier + CPG)连接,高层给轨迹,低层负责执行。
  • 实现方式:
    • 低层训练时,只用模拟中随机生成的轨迹训练它追踪;
    • 高层策略负责设计这些轨迹的“形状”(比如球要往左推 → 左脚向外伸);
    • 二者通过轨迹接口(Bezier + CPG)连接,高层给轨迹,低层负责执行。

✅ 3. 利用了残差学习(Bezier 曲线)+ CPG(中央模式发生器)来灵活生成轨迹

📌 原理:

  • CPG(Central Pattern Generator):用于生成周期性足端轨迹,如走路、跳跃;
  • Bezier 曲线:高层策略学习残差,用平滑的曲线微调轨迹,实现操作动作(如推、踢、跨越)。

✅ 实现方式:

  • 控制器最终执行的轨迹 = CPG生成的默认轨迹 + Bezier残差轨迹
  • Bezier 的控制点由高层网络输出,调节轨迹形状;
  • 可用较少参数,生成复杂、多样的足端轨迹

✅ 4. 在多个现实任务上验证了方法的通用性与优越性

📌 实验设计原理:

  • 将高层策略迁移到多个任务上,如:

    1. 带球(dribble)
    2. 踩点避障(stepostone)
    3. 推箱(navload)
  • 低层控制器不变,仅更换高层策略 → 验证了框架的模块化和通用性

✅ 成果:

  • 所有任务均能从仿真零样本直接迁移到现实机器人,性能优于多个对比基线(Reward shaping、Motion tracking、AMP 等)。

✅ 5. 支持视觉、状态、多模态输入,适配多种 RL 算法

📌 原理:

  • 高层策略输入是任务相关的信息,具有很强的扩展性;
    • 可接受:
      • 状态向量(如物体位置、机器人速度等);
      • 视觉输入(如深度图);
      • 多模态(状态 + 视觉);
  • 可适配不同类型的 RL 算法,如 PPO、DroQ、RLPD(现实数据驱动)等。

✅ 实现方式:

  • 高层策略结构灵活:可以是 MLP(状态输入)或 CNN+MLP(图像输入);
  • 训练框架可无缝切换不同策略优化器;
  • 利用现实 fine-tuning(如 RLPD)提升现实成功率和样本效率