v1.1.6; fix terrain_weighted_summary bug

This commit is contained in:
wty-yy
2026-03-24 21:55:53 +08:00
parent f713f70561
commit 1ab6c58fd1
10 changed files with 202 additions and 28 deletions

View File

@@ -4,24 +4,34 @@
## 基本定义
- Zero Moment PointZMP零矩点机械系统的惯性力重力的净力矩在该点沿水平轴分量为零
- Support Polygon支撑多边形机械系统所有与地面接触点构成的凸包。
- FZMPfictitious ZMP虚拟零矩点当 ZMP 落在支撑多边形外时,称 ZMP 为 FZMP此时系统可能处于非平衡状态。
- Virtual Horizontal Plane虚拟水平投影面机械系统所有与地面接触点的几何中心为 $O'$,将世界坐标系平移到 $O'$,得到的 $xy$ 平面。
- Zero Moment PointZMP零矩点机械系统的惯性力重力对某点的合力矩在水平轴方向上的分量为零时,该点称为 ZMP
- Support Polygon支撑多边形所有有效地面接触点在水平面上的投影构成的凸包。
- FZMPfictitious ZMP虚拟零矩点当 ZMP 落在支撑多边形外时,称为 FZMP此时系统可能处于非平衡状态。
- Virtual Horizontal Plane虚拟水平投影面记所有有效接触点的三维几何中心为 $O'$,将世界坐标系平移到 $O'$ 后,其 $xy$ 平面即本文使用的参考平面。
## MuJoCo 中的符号约定
设机器人总共包含 $N$ 个刚体。对于第 $i$ 个刚体,在当前时刻具有如下量:
在实现中,首先选出满足接触距离阈值的有效接触点 $\{\boldsymbol{c}_k\}_{k=1}^{K}$,并定义其几何中心为
$$
O' = \frac{1}{K} \sum_{k=1}^{K} \boldsymbol{c}_k
$$
这里的 $O'$ 就是代码中的 `support_center`。注意它是所有有效接触点的简单平均,不是按接触力加权的中心,也不是支撑多边形的面积质心。
随后以 $O'$ 为原点建立平移后的参考平面,其方向仍与世界坐标系保持一致。
设机器人总共包含 $N$ 个动态刚体。这里的“动态刚体”指质量 $m_i > 0$ 的刚体。对于第 $i$ 个刚体,在当前时刻具有如下量:
- 质量:$m_i$
- 质心位置:$\boldsymbol{p}_i$
这里相对于当前 `base_link` 在世界坐标系 $z$ 轴方向上平移到虚拟水平投影面的点
这里表示该刚体质心相对于 $O'$ 的位置
- 质心线加速度:$\boldsymbol{\ddot{p}}_i$
- 角速度:$\boldsymbol{\omega}_i$
- 角加速度:$\boldsymbol{\dot{\omega}}_i$
- 惯性张量:$\boldsymbol{I}_i$
- 惯性张量:$\boldsymbol{I}_i$,并且需要是世界坐标系下的惯性张量。
上述量均相对于世界坐标系,保持相对于惯性参考系表达;本体坐标系不一定是参考系。计算 $\boldsymbol{I}_i$ 时需要确保其已经转换到世界坐标系下
$\boldsymbol{p}_i$ 是相对于 $O'$ 的相对位置外,其余运动学与动力学量均在世界坐标系下表达,并保持相对于惯性参考系计算
## 总力与总力矩