Skip to content

Commit ff525d0

Browse files
docs: update legged and manipulator tutorials
1 parent 694c6de commit ff525d0

52 files changed

Lines changed: 1692 additions & 579 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

05_运动控制/机械臂/D01_导论_双臂任务分类.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
| 编号 | 问题 | 答不出时回顾 |
2222
|:----:|------|------------|
2323
| 1 | **雅可比矩阵**:对于 7-DOF 机械臂,几何雅可比 $J(q) \in \mathbb{R}^{6 \times 7}$ 的物理含义是什么?当 $\text{rank}(J) < 6$ 时意味着什么? | M01 Pinocchio 深度精读 |
24-
| 2 | **伪逆与零空间**写出 Moore-Penrose 伪逆 $J^+ = J^T(JJ^T)^{-1}$ 的表达式。$q_{\text{null}} = (I - J^+J)\dot{q}_0$ 为什么满足 $J q_{\text{null}} = 0$?这个性质的工程意义是什么? | M03 IK 求解器深度 |
24+
| 2 | **伪逆与零空间**写出右伪逆 $J^+ = J^T(JJ^T)^{-1}$($J$ 满行秩时即 Moore-Penrose 伪逆)的表达式。$q_{\text{null}} = (I - J^+J)\dot{q}_0$ 为什么满足 $J q_{\text{null}} = 0$?这个性质的工程意义是什么? | M03 IK 求解器深度 |
2525
| 3 | **操作空间动力学**:写出操作空间惯量矩阵 $\Lambda = (JM^{-1}J^T)^{-1}$ 的定义。它为什么需要 $J$ 行满秩?当接近奇异位形时 $\Lambda$ 会发生什么? | F02 操作空间动力学 |
2626
| 4 | **SE(3) 与 twist**:写出刚体的空间速度 twist $\mathcal{V} = [\omega^T, v^T]^T \in \mathbb{R}^6$。两个 twist 的"差"在 Lie 代数意义下如何计算? | 李群基础 / M01 |
2727
| 5 | **阻抗控制**:Hogan 阻抗律 $F = M_d\ddot{\tilde{x}} + D_d\dot{\tilde{x}} + K_d\tilde{x}$ 的三个参数分别控制什么物理行为? | F01 阻抗导纳二分法 |
@@ -519,9 +519,9 @@ $$N_\lambda = I - J^\dagger_\lambda J$$
519519
| 远离奇异 | 0.01 | 精度优先,最小阻尼 |
520520
| 中等奇异 | 0.05-0.1 | 精度与稳定性平衡 |
521521
| 接近奇异 | 0.1-0.5 | 稳定性优先,牺牲精度 |
522-
| 自适应 | $\lambda = \lambda_0 \cdot \sqrt{1 - w/w_0}$ | Nakamura 自适应阻尼 |
522+
| 自适应 | $\lambda = \begin{cases} \lambda_0 \cdot \sqrt{1 - (w/w_0)^2}, & w < w_0 \\ 0, & w \ge w_0 \end{cases}$ | Nakamura 自适应阻尼 |
523523

524-
其中 $w = \sqrt{\det(J_{\text{aug}} J_{\text{aug}}^T)}$ 是操作度(manipulability),$w_0$ 是操作度阈值。
524+
其中 $w = \sqrt{\det(J_{\text{aug}} J_{\text{aug}}^T)}$ 是操作度(manipulability),$w_0$ 是操作度阈值。当 $w \ge w_0$(远离奇异)时阻尼归零以保证精度。
525525

526526
### 零空间利用
527527

05_运动控制/机械臂/D02_双臂协调规划.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@
150150
使 ‖h(q)‖ 减小。2-3 步通常足够收敛。
151151
```
152152

153-
**为什么用伪逆 $J_h^+$ 而不是 $J_h^{-1}$?** 因为 $J_h \in \mathbb{R}^{k \times n}$ 不是方阵($k < n$),没有逆矩阵。伪逆 $J_h^+ = J_h^T (J_h J_h^T)^{-1}$ 给出最小范数修正——即在满足约束的前提下,对 $q$ 的改变量最小。
153+
**为什么用伪逆 $J_h^+$ 而不是 $J_h^{-1}$?** 因为 $J_h \in \mathbb{R}^{k \times n}$ 不是方阵($k < n$),没有逆矩阵。当 $J_h$ 满行秩时,伪逆 $J_h^+ = J_h^T (J_h J_h^T)^{-1}$ 给出最小范数修正——即在满足约束的前提下,对 $q$ 的改变量最小。若 $J_h$ 行秩亏损(约束冗余或接近奇异),需用 SVD 截断伪逆或阻尼伪逆替代
154154

155155
**优势**
156156
- 实现最简单——只需约束函数 $h(q)$ 和 Jacobian $J_h(q)$

05_运动控制/机械臂/D04_双臂学习.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@
106106
| 2023 | Zhao, Kumar, Levine, Finn, "Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware" (ACT/ALOHA) | RSS 2023 | **ACT + ALOHA 硬件**;50 demos 达 80-90% 成功率 |
107107
| 2024 | Fu, Zhao, Finn, "Mobile ALOHA: Learning Bimanual Mobile Manipulation" | CoRL 2024 | ALOHA + 移动底盘;16 维 action;co-training 范式 |
108108
| 2024 | Grotz, Shridhar, Asfour, Fox, "PerAct2: Benchmarking and Learning for Robotic Bimanual Manipulation" | CoRL 2024 | 语言条件双臂 benchmark;13 任务 $\times$ 23 变体 |
109-
| 2024 | Grannen et al., "Stabilize to Act: Learning to Coordinate for Bimanual Manipulation" | CoRL 2024 | 显式"stabilizer + actor"双臂分工建模 |
109+
| 2023 | Grannen et al., "Stabilize to Act: Learning to Coordinate for Bimanual Manipulation" | CoRL 2023 | 显式"stabilizer + actor"双臂分工建模 |
110110
| 2025 | Liu et al., "RDT-1B: a Diffusion Foundation Model for Bimanual Manipulation" | ICLR 2025 | **1.2B DiT 双臂扩散基础模型**;128 维统一 action space |
111111

112112
---
@@ -1452,7 +1452,7 @@ robosuite/environments/manipulation/
14521452
- Voxel-Perceiver 架构预测双臂关键帧
14531453
- 语言指令驱动任务选择和执行参数
14541454

1455-
**Stabilize to Act(Grannen et al., CoRL 2024**
1455+
**Stabilize to Act(Grannen et al., CoRL 2023**
14561456
- 显式建模双臂的"稳定器"和"执行器"角色分工
14571457
- 一只手负责稳定物体状态,另一只手执行操作动作
14581458
- 这个分工建模与 D03 中的"主臂+从臂"思想相呼应,但通过学习自动发现角色分配

05_运动控制/机械臂/D08_运动映射与遥操作数据采集.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1476,9 +1476,9 @@ def compute_coverage(episodes, task_space_dim=6):
14761476

14771477
### 练习
14781478

1479-
1. **[编程]** 实现一个完整的 ROS2 数据采集节点:订阅 2 个相机话题和 1 个关节状态话题,用 ApproximateTimeSynchronizer 同步,存为 LeRobot parquet+mp4 格式。测量同步精度(统计图像时间戳和最近关节状态时间戳的差值分布)
1480-
2. **[编程]** 写一个数据转换脚本:将 ALOHA HDF5 格式转为 LeRobot 格式。注意:HDF5 中图像是原始帧(uint8 数组),LeRobot 需要 mp4 编码。使用 `ffmpeg` 进行视频编码
1481-
3. **[思考题]** UMI 的数据采集不使用 ROS2——它用 GoPro 的 MP4 视频和 ORB-SLAM3 的轨迹。如果要将 UMI 数据和 ALOHA 数据混合训练,关键的挑战是什么?提示:坐标系不同(UMI 是世界坐标系末端位姿,ALOHA 是关节空间),动作空间不同(笛卡尔 vs 关节),相机视角不同(第一人称 vs 第三人称)。
1479+
1. **[编程]** 为你的数据集实现一个自动质量评分系统:对每个 episode 计算任务完成率、轨迹平滑度(jerk 积分)、操作时长,生成质量报告并标记低质量 episode
1480+
2. **[编程]** 实现一个 A/B 测试框架:用完整数据集和过滤后数据集(去除最差 20%)分别训练 ACT 策略,统计成功率差异并用 Fisher 精确检验判断显著性
1481+
3. **[思考题]** 如果操作者水平参差不齐(新手 vs 专家),你会如何设计数据采集协议?讨论:是否需要对操作者标注技能等级?是否可以用学习曲线自动分级?
14821482

14831483
---
14841484

05_运动控制/机械臂/D09_双臂MoveIt2系统集成.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1753,7 +1753,7 @@ D09 新增:
17531753
| ros2_control 官方文档 "Multi-interface Robot" | ⭐⭐ | 多接口/多控制器配置 |
17541754
| Coleman et al. (2014) "Reducing the Barrier to Entry of Complex Robotic Software: a MoveIt! Case Study" | ⭐⭐⭐ | MoveIt 的设计哲学 |
17551755
| MoveIt Task Constructor GitHub Wiki | ⭐⭐⭐ | MTC 的 stage 类型和用法 |
1756-
| Aertbelien et al. (2025) "Simplifying ROS2 Controllers" arXiv 2601.08514 | ⭐⭐⭐⭐ | 模块化参考生成器 |
1756+
| Aertbelien et al. (2026) "Simplifying ROS2 Controllers" arXiv 2601.08514 | ⭐⭐⭐⭐ | 模块化参考生成器 |
17571757
| PickNik MoveIt Pro 文档 | ⭐⭐⭐ | 双臂 MTC 工业化参考 |
17581758

17591759
## 🔧 故障排查手册

05_运动控制/机械臂/F02_数学基础.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
| 1 | 写出 Hogan 阻抗方程 $M_d\ddot{\tilde{x}} + D_d\dot{\tilde{x}} + K_d\tilde{x} = f_{ext}$,解释每个参数的物理含义。 | F01 第 2 节 |
2222
| 2 | 什么是机械阻抗 $Z(s)$ 和机械导纳 $Y(s)$?两者的关系是什么? | F01 第 2.4 节 |
2323
| 3 | 写出关节空间动力学方程 $M(q)\ddot{q} + C(q,\dot{q})\dot{q} + g(q) = \tau + J^T f_{ext}$。$M(q)$ 为什么是对称正定的? | M01 Pinocchio |
24-
| 4 | 什么是 Jacobian 伪逆 $J^+ = J^T(JJ^T)^{-1}$?它给出的解有什么最优性? | M01/M08 |
24+
| 4 | 什么是 Jacobian 伪逆 $J^+ = J^T(JJ^T)^{-1}$?它给出的解有什么最优性? | M01/M03 |
2525
| 5 | Laplace 变换中,$s = j\omega$ 代入传递函数后,实部和虚部分别对应什么? | 控制理论基础 |
2626

2727
---

05_运动控制/机械臂/F03_经典力控算法.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1146,6 +1146,7 @@ void impedance_control_step(mjModel* m, mjData* d,
11461146
11471147
// 3. 获取 Jacobian (MuJoCo 提供 3xn + 3xn)
11481148
int nv = m->nv;
1149+
// ⚠️ 教学示例用 new/delete;实时控制循环中应预分配固定缓冲区(见 M11)
11491150
mjtNum* jacp = new mjtNum[3 * nv];
11501151
mjtNum* jacr = new mjtNum[3 * nv];
11511152
mj_jac(m, d, jacp, jacr, d->xpos + 3*ee_body, ee_body);

05_运动控制/机械臂/F06_变阻抗无源性与碰撞安全.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1628,7 +1628,7 @@ SERL(Berkeley 2024, ICRA)展示了用 RL 从零学习 peg-in-hole 的能力
16281628
| 能量罐 | ⭐⭐⭐ | 虚拟能量银行,罐空则冻结;完整 Lyapunov 证明 | RL 型变阻抗 |
16291629
| KB 阻尼条件 | ⭐⭐⭐ | 对角轴上 $d_i \ge m_i\max(0,\dot{k}_i)/(2k_{i,min})$,并叠加临界阻尼下界 | 状态机型变阻抗 |
16301630
| 动量观测器 | ⭐⭐ | $\dot{r} = K_O(\tau_{ext} - r)$;完整 C++ 实现 | 无传感器碰撞检测 |
1631-
| ISO/TS 15066 | ⭐⭐ | HIC/准静态/瞬态三种限值;有效质量计算 | 协作安全认证 |
1631+
| ISO/TS 15066 | ⭐⭐ | 准静态/瞬态两种限值;有效质量计算 | 协作安全认证 |
16321632
| CBF-based 变阻抗 | ⭐⭐⭐⭐ | 最小干预原则;QP 在线求解 | 前沿研究 |
16331633
| 碰撞恢复策略 | ⭐⭐ | Reflex/Retract/Comply 完整实现 | 碰撞后安全恢复 |
16341634
| 能量监测系统 | ⭐⭐⭐ | 注入/耗散/累积实时监控 | 运行时安全保障 |

05_运动控制/机械臂/F07_浮动基座WBC理论.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1283,7 +1283,7 @@ posture_task.setReference(q_ref.computeNext())
12831283
formulation.addMotionTask(posture_task, w=1.0, level=1, transition_duration=0.0)
12841284

12851285
# ===== 5. 力矩限约束 =====
1286-
tau_max = 87.0 * np.ones(robot.nv)
1286+
tau_max = np.array([87, 87, 87, 87, 12, 12, 12], dtype=float) # Panda: J1-4=87Nm, J5-7=12Nm
12871287
tau_min = -tau_max
12881288
actuator_bounds = tsid.TaskActuationBounds("tau_bounds", robot)
12891289
actuator_bounds.setBounds(tau_min, tau_max)
@@ -1484,6 +1484,7 @@ public:
14841484

14851485
writeBaseVel(base_vel_cmd);
14861486
writeArmTorque(arm_tau);
1487+
return controller_interface::return_type::OK;
14871488
}
14881489
};
14891490
```

05_运动控制/机械臂/F08_腿足MPC_WBC联合力控.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ WBC 不知道的信息:
129129
| 2022 | qiayuanl, legged_control | OCS2+WBC 教学友好实现 |
130130
| 2023 | Sleiman et al., Science Robotics | ANYmal 推门/开阀,接触模式枚举 |
131131
| 2024 | Zhang (skywoodsz), qm_control, IROS | 四足+臂末端阻抗+摩擦锥一体 QP |
132-
| 2025 | Zhang et al. (CMU), FALCON, L4DC | 双智能体 RL 力自适应人形 |
132+
| 2025 | Zhang et al. (CMU), FALCON, L4DC 2026 Oral | 双智能体 RL 力自适应人形 |
133133

134134
### ⚠️ 常见陷阱
135135

0 commit comments

Comments
 (0)