chore: release v0.1.0

(cherry picked from commit 82525f882f3924a332d9ce40bf64255d0d14f6a4)
This commit is contained in:
motphys-developers
2026-01-04 04:43:04 +00:00
parent 13cfbce9a7
commit 62011bb24f
390 changed files with 18897 additions and 626 deletions

View File

@@ -1,6 +1,6 @@
# 二维步行机器人训练示例
# 二维步行机器人
二维步行机器人Walker2D基于 DeepMind Control Suite 的经典机器人控制任务,目标是通过控制机器人关节来实现站立、行走和奔跑。
二维步行机器人Walker2D是 DeepMind Control Suite 的经典双足行走任务。其目标是训练一个模拟的双足机器人,通过控制其关节力矩,实现站立、行走和奔跑。
```{video} /_static/videos/dm_walker.mp4
:poster: _static/images/poster/dm_walker.jpg
@@ -14,89 +14,131 @@
## 任务描述
Walker2D 是一个二维平面的双足机器人,具有多个关节和执行器:
Walker2D 是一个二维平面的双足机器人任务。由多个身体部位组成,拥有多个受控关节,智能体通过向这些关节施加扭矩作为动作,让机器人实现站立平衡、向前行走或快速奔跑。该任务要求协调的双足步态和平衡控制能力。
- **状态空间**:包括机器人各部位的旋转角度、角速度、躯干高度和速度等
- **动作空间**:控制各个关节的力矩
- **奖励函数**:主要由保持站立、前进速度等组成
- **终止条件**:机器人摔倒或关节达到极限位置
---
### 三种任务模式
## 动作空间Action Space
1. **dm-stander**: 静止站立任务 (move_speed = 0.0)
| 项目 | 详细信息 |
| -------- | ------------------------------- |
| **类型** | `Box(-1.0, 1.0, (6,), float32)` |
| **维度** | 6 |
```bash
uv run scripts/train.py --env dm-stander
```
动作对应如下:
2. **dm-walker**: 行走任务 (move_speed = 1.0)
| 序号 | 动作含义(施加在关节的力矩) | 最小值 | 最大值 | 对应 XML 中名称 |
| ---: | ---------------------------- | :----: | :----: | :-------------: |
| 0 | 右大腿关节驱动扭矩 | -1 | 1 | `right_thigh` |
| 1 | 右小腿关节驱动扭矩 | -1 | 1 | `right_leg` |
| 2 | 右脚关节驱动扭矩 | -1 | 1 | `right_foot` |
| 3 | 左大腿关节驱动扭矩 | -1 | 1 | `left_thigh` |
| 4 | 左小腿关节驱动扭矩 | -1 | 1 | `left_leg` |
| 5 | 左脚关节驱动扭矩 | -1 | 1 | `left_foot` |
```bash
uv run scripts/train.py --env dm-walker
```
---
3. **dm-runner**: 奔跑任务 (move_speed = 5.0)
## 观察空间
```bash
uv run scripts/train.py --env dm-runner
```
| 项目 | 详细信息 |
| -------- | -------------------------------- |
| **类型** | `Box(-inf, inf, (17,), float32)` |
| **维度** | 17 |
## 配置参数
Walker2D 环境的观测空间由以下部分组成(按顺序):
### 环境配置
| 部分 | 内容说明 | 维度 | 备注 |
| -------- | -------------------------- | ---- | -------------------- |
| **qpos** | 各身体关节与根部的位置信息 | 9 | 包括躯干高度和角度 |
| **qvel** | 各身体关节与根部的速度信息 | 8 | 所有关节及躯干的速度 |
```python
@dataclass
class WalkerEnvCfg(EnvCfg):
model_file: str = "walker.xml" # MJCF模型文件
max_episode_seconds: float = 25.0 # 最大episode长度
sim_dt: float = 0.0125 # 仿真时间步
ctrl_dt: float = 0.025 # 控制时间步
move_speed: float = 1.0 # 目标移动速度
stand_height: float = 1.2 # 目标站立高度
```
### 训练配置
```python
@dataclass
class WalkerRLCfg(BaseRLCfg):
num_envs: int = 512 # 并行环境数量
learning_rate: float = 3e-4 # 学习率
batch_size: int = 512 # 批大小
max_epochs: int = 1000 # 最大训练轮数
```
---
## 奖励函数设计
Walker2D 的奖励函数由以下几个部分组成:
walker 的奖励函数由以下几个部分组成:
### 基础站立奖励
```python
# 高度奖励:保持躯干在目标高度
# 直立奖励:保持躯干直立
# 总奖励 = 高度奖励 + 直立奖励
```
### 移动奖励(行走和奔跑任务)
```python
# 速度奖励:追踪目标速度
# 总奖励 = 站立奖励 * 移动权重
# 速度奖励:追踪目标前进速度
# 站立奖励:保持躯干在目标高度
# 直立奖励:保持躯干直立
# 总奖励 = 速度奖励 + 站立奖励 + 直立奖励
```
## 预期结果
---
1. **dm-stander**
## 初始状态
- 躯干高度保持在 1.0-1.4m 范围
- 躯干直立角度偏差小于 15 度
- 重置所有有限关节角度到其允许范围内的随机值
- 保持无限幅度关节默认状态
2. **dm-walker**
## Episode 终止条件
- 实际行走速度接近 1.0 m/s
- 步态协调,无明显摔倒
- 机器人的状态观测值出现异常数值NaN
- 机器人躯干接触地面(跌倒)
3. **dm-runner**
- 奔跑速度达到 4.0-5.0 m/s
- 出现飞行相(双脚同时离地)
---
## 使用指南
### 1. 环境预览
```bash
uv run scripts/view.py --env dm-stander
uv run scripts/view.py --env dm-walker
uv run scripts/view.py --env dm-runner
```
### 2. 开始训练
```bash
uv run scripts/train.py --env dm-stander
uv run scripts/train.py --env dm-walker
uv run scripts/train.py --env dm-runner
```
### 3. 查看训练进度
```bash
uv run tensorboard --logdir runs/dm-walker
```
### 4. 测试训练结果
```bash
uv run scripts/play.py --env dm-stander
uv run scripts/play.py --env dm-walker
uv run scripts/play.py --env dm-runner
```
---
## 预期训练结果
### 站立任务 (dm-stander)
1. 躯干高度保持在 1.0-1.4m 范围
2. 躯干直立角度偏差小于 15 度
3. 能够稳定站立不倒
### 行走任务 (dm-walker)
1. 实际行走速度接近 1.0 m/s
2. 步态协调,无明显摔倒
3. 能够持续稳定行走
### 奔跑任务 (dm-runner)
1. 奔跑速度达到 4.0-5.0 m/s
2. 出现飞行相(双脚同时离地)
3. 步态协调稳定