chore: release v0.0.1
This commit is contained in:
99
docs/source/zh_CN/user_guide/demo/cartpole.md
Normal file
99
docs/source/zh_CN/user_guide/demo/cartpole.md
Normal file
@@ -0,0 +1,99 @@
|
||||
# 倒立摆训练示例
|
||||
|
||||
倒立摆(CartPole)是强化学习中的经典控制任务,目标是通过控制小车左右移动来保持杆子平衡。
|
||||

|
||||
|
||||
## 任务描述
|
||||
|
||||
- **状态空间**:小车位置、小车速度、杆子角度、杆子角速度
|
||||
- **动作空间**:向左或向右施加力
|
||||
- **奖励函数**:每一步保持杆子不倒下获得+1 奖励
|
||||
- **终止条件**:杆子角度超过 ±15 度或 episode 长度超过 10 秒
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1. 环境预览
|
||||
|
||||
```bash
|
||||
uv run scripts/view.py --env cartpole
|
||||
```
|
||||
|
||||
### 2. 开始训练
|
||||
|
||||
```bash
|
||||
# 使用默认参数训练
|
||||
uv run scripts/train.py --env cartpole
|
||||
|
||||
# 自定义环境数量
|
||||
uv run scripts/train.py --env cartpole --num-envs 1024
|
||||
|
||||
# 启用渲染(训练时可视化)
|
||||
uv run scripts/train.py --env cartpole --render
|
||||
```
|
||||
|
||||
### 3. 查看训练进度
|
||||
|
||||
```bash
|
||||
uv run tensorboard --logdir runs/cartpole
|
||||
```
|
||||
|
||||
### 4. 测试训练结果
|
||||
|
||||
```bash
|
||||
# 自动寻找最佳策略测试(推荐)
|
||||
uv run scripts/play.py --env cartpole
|
||||
|
||||
# 手动指定策略文件测试
|
||||
uv run scripts/play.py --env cartpole --policy runs/cartpole/nn/best_agent.pickle
|
||||
|
||||
```
|
||||
|
||||
> **提示**:系统会自动在 `runs/cartpole/` 目录下寻找最新、最佳的策略文件进行测试。您也可以通过 `--policy` 参数手动指定特定的策略文件。
|
||||
|
||||
## 配置参数
|
||||
|
||||
倒立摆环境的主要配置参数:
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class CartPoleEnvCfg(EnvCfg):
|
||||
model_file: str = "path/to/inverted_pendulum.xml" # MJCF模型文件
|
||||
reset_noise_scale: float = 0.01 # 重置噪声
|
||||
max_episode_seconds: float = 10.0 # 最大episode长度
|
||||
```
|
||||
|
||||
训练配置参数:
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class CartPoleRLCfg(BaseRLCfg):
|
||||
num_envs: int = 2048 # 并行环境数量
|
||||
learning_rate: float = 3e-4 # 学习率
|
||||
batch_size: int = 2048 # 批大小
|
||||
max_epochs: int = 500 # 最大训练轮数
|
||||
```
|
||||
|
||||
## 自定义训练
|
||||
|
||||
您可以通过命令行参数覆盖默认配置:
|
||||
|
||||
```bash
|
||||
uv run scripts/train.py --env cartpole \
|
||||
--num-envs 1024 \
|
||||
--train-backend jax \
|
||||
--sim-backend np
|
||||
```
|
||||
|
||||
## 预期结果
|
||||
|
||||
- 杆子角度大部分时间保持在 ±5 度以内
|
||||
- 小车位移范围适中
|
||||
|
||||
## 故障排除
|
||||
|
||||
如果训练效果不佳,可以尝试:
|
||||
|
||||
1. 调整学习率(尝试 1e-4 到 1e-3)
|
||||
2. 增加环境数量(更多并行训练)
|
||||
3. 调整奖励函数权重
|
||||
4. 检查物理参数设置是否合理
|
||||
102
docs/source/zh_CN/user_guide/demo/dm_walker.md
Normal file
102
docs/source/zh_CN/user_guide/demo/dm_walker.md
Normal file
@@ -0,0 +1,102 @@
|
||||
# 二维步行机器人训练示例
|
||||
|
||||
二维步行机器人(Walker2D)是基于 DeepMind Control Suite 的经典机器人控制任务,目标是通过控制机器人关节来实现站立、行走和奔跑。
|
||||
|
||||
```{video} /_static/videos/dm_walker.mp4
|
||||
:poster: _static/images/poster/dm_walker.jpg
|
||||
:nocontrols:
|
||||
:autoplay:
|
||||
:playsinline:
|
||||
:muted:
|
||||
:loop:
|
||||
:width: 100%
|
||||
```
|
||||
|
||||
## 任务描述
|
||||
|
||||
Walker2D 是一个二维平面的双足机器人,具有多个关节和执行器:
|
||||
|
||||
- **状态空间**:包括机器人各部位的旋转角度、角速度、躯干高度和速度等
|
||||
- **动作空间**:控制各个关节的力矩
|
||||
- **奖励函数**:主要由保持站立、前进速度等组成
|
||||
- **终止条件**:机器人摔倒或关节达到极限位置
|
||||
|
||||
### 三种任务模式
|
||||
|
||||
1. **dm-stander**: 静止站立任务 (move_speed = 0.0)
|
||||
|
||||
```bash
|
||||
uv run scripts/train.py --env dm-stander
|
||||
```
|
||||
|
||||
2. **dm-walker**: 行走任务 (move_speed = 1.0)
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
## 配置参数
|
||||
|
||||
### 环境配置
|
||||
|
||||
```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 的奖励函数由以下几个部分组成:
|
||||
|
||||
### 基础站立奖励
|
||||
|
||||
```python
|
||||
# 高度奖励:保持躯干在目标高度
|
||||
# 直立奖励:保持躯干直立
|
||||
```
|
||||
|
||||
### 移动奖励(行走和奔跑任务)
|
||||
|
||||
```python
|
||||
# 速度奖励:追踪目标速度
|
||||
# 总奖励 = 站立奖励 * 移动权重
|
||||
```
|
||||
|
||||
## 预期结果
|
||||
|
||||
1. **dm-stander**:
|
||||
|
||||
- 躯干高度保持在 1.0-1.4m 范围
|
||||
- 躯干直立角度偏差小于 15 度
|
||||
|
||||
2. **dm-walker**:
|
||||
|
||||
- 实际行走速度接近 1.0 m/s
|
||||
- 步态协调,无明显摔倒
|
||||
|
||||
3. **dm-runner**:
|
||||
- 奔跑速度达到 4.0-5.0 m/s
|
||||
- 出现飞行相(双脚同时离地)
|
||||
139
docs/source/zh_CN/user_guide/demo/locomotion_unitree_go1.md
Normal file
139
docs/source/zh_CN/user_guide/demo/locomotion_unitree_go1.md
Normal file
@@ -0,0 +1,139 @@
|
||||
# Unitree GO1 机器人行走训练示例
|
||||
|
||||
Unitree GO1 是一个四足机器人平台,本示例展示了如何训练 GO1 在平坦地形上实现稳定的步态行走。
|
||||
|
||||
```{video} /_static/videos/go1_walk.mp4
|
||||
:poster: _static/images/poster/go1_walk.jpg
|
||||
:nocontrols:
|
||||
:autoplay:
|
||||
:playsinline:
|
||||
:muted:
|
||||
:loop:
|
||||
:width: 100%
|
||||
```
|
||||
|
||||
## 任务描述
|
||||
|
||||
GO1 四足机器人具有 12 个自由度(每条腿 3 个关节),需要通过深度强化学习学习协调的步态控制:
|
||||
|
||||
- **状态空间**:48 维,包含机器人线速度、角速度、姿态、关节角度、关节速度、动作和命令等
|
||||
- **动作空间**:12 维,控制各个关节的目标位置(通过 PD 控制器转换为力矩)
|
||||
- **奖励函数**:复合奖励,包含速度跟踪、姿态稳定、能量效率等多个组件
|
||||
- **终止条件**:机器人躯干接触地面或其他不稳定状态
|
||||
|
||||
### 训练任务
|
||||
|
||||
```bash
|
||||
uv run scripts/train.py --env go1-flat-terrain-walk
|
||||
```
|
||||
|
||||
## 配置参数
|
||||
|
||||
### 环境配置
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class Go1WalkNpEnvCfg(EnvCfg):
|
||||
max_episode_seconds: float = 20.0 # 最大episode长度
|
||||
model_file: str = "scene_motor_actuator.xml"
|
||||
sim_dt: float = 0.01 # 仿真时间步
|
||||
ctrl_dt: float = 0.01 # 控制时间步
|
||||
```
|
||||
|
||||
### 控制配置
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class ControlConfig:
|
||||
stiffness = 80 # PD 控制器刚度 [N*m/rad]
|
||||
damping = 1 # PD 控制器阻尼 [N*m*s/rad]
|
||||
action_scale = 0.05 # 动作缩放因子
|
||||
```
|
||||
|
||||
### 初始关节角度
|
||||
|
||||
```python
|
||||
default_joint_angles = {
|
||||
"FL_hip": 0.0, # 前左髋关节
|
||||
"RL_hip": 0.0, # 后左髋关节
|
||||
"FR_hip": -0.0, # 前右髋关节
|
||||
"RR_hip": -0.0, # 后右髋关节
|
||||
"FL_thigh": 0.9, # 前左大腿
|
||||
"RL_thigh": 0.9, # 后左大腿
|
||||
"FR_thigh": 0.9, # 前右大腿
|
||||
"RR_thigh": 0.9, # 后右大腿
|
||||
"FL_calf": -1.8, # 前左小腿
|
||||
"RL_calf": -1.8, # 后左小腿
|
||||
"FR_calf": -1.8, # 前右小腿
|
||||
"RR_calf": -1.8, # 后右小腿
|
||||
}
|
||||
```
|
||||
|
||||
## 奖励函数设计
|
||||
|
||||
GO1 的奖励函数是一个复杂的复合函数,包含多个组件:
|
||||
|
||||
### 主要奖励组件
|
||||
|
||||
```python
|
||||
reward_config.scales = {
|
||||
"tracking_lin_vel": 1.0, # 线速度跟踪奖励
|
||||
"tracking_ang_vel": 0.5, # 角速度跟踪奖励
|
||||
"feet_air_time": 1.0, # 足部空中时间奖励
|
||||
"lin_vel_z": -2.0, # Z轴线速度惩罚
|
||||
"ang_vel_xy": -0.05, # XY轴角速度惩罚
|
||||
"orientation": -0.0, # 姿态偏离惩罚
|
||||
"torques": -0.00001, # 力矩消耗惩罚
|
||||
"dof_acc": -2.5e-7, # 关节加速度惩罚
|
||||
"action_rate": -0.001, # 动作变化率惩罚
|
||||
"hip_pos": -1, # 髋关节位置惩罚
|
||||
"calf_pos": -0.3, # 腿关节位置惩罚
|
||||
}
|
||||
```
|
||||
|
||||
### 关键奖励函数
|
||||
|
||||
#### 速度跟踪奖励
|
||||
|
||||
```python
|
||||
# 跟踪线速度命令(xy平面)
|
||||
def _reward_tracking_lin_vel(self, data, commands):
|
||||
|
||||
# 跟踪角速度命令(偏航)
|
||||
def _reward_tracking_ang_vel(self, data, commands):
|
||||
```
|
||||
|
||||
#### 足部空中时间奖励
|
||||
|
||||
```python
|
||||
def _reward_feet_air_time(self, commands, info):
|
||||
```
|
||||
|
||||
## 观察空间构成
|
||||
|
||||
GO1 的观察空间为 48 维,包含以下信息:
|
||||
|
||||
```python
|
||||
obs = np.hstack([
|
||||
noisy_linvel, # 3维:局部坐标系线速度
|
||||
noisy_gyro, # 3维:陀螺仪数据
|
||||
local_gravity, # 3维:局部重力方向
|
||||
noisy_joint_angle, # 12维:关节角度(相对于默认值)
|
||||
noisy_joint_vel, # 12维:关节速度
|
||||
last_actions, # 12维:上一帧动作
|
||||
command, # 3维:速度命令 [vx, vy, vyaw]
|
||||
])
|
||||
```
|
||||
|
||||
## 运动速度命令生成
|
||||
|
||||
训练过程中随机生成速度命令,确保智能体能够跟踪不同的移动速度:
|
||||
|
||||
```python
|
||||
def resample_commands(self, num_envs: int):
|
||||
```
|
||||
|
||||
## 预期训练结果
|
||||
|
||||
1. 稳定的四足步态
|
||||
2. 良好的速度跟踪
|
||||
Reference in New Issue
Block a user