3.9 KiB
3.9 KiB
二维步行机器人
二维步行机器人(Walker2D)是 DeepMind Control Suite 中的经典双足行走任务。其目标是训练一个模拟的双足机器人,通过控制其关节力矩,实现站立、行走和奔跑。
:poster: _static/images/poster/dm_walker.jpg
:nocontrols:
:autoplay:
:playsinline:
:muted:
:loop:
:width: 100%
任务描述
Walker2D 是一个二维平面的双足机器人任务。由多个身体部位组成,拥有多个受控关节,智能体通过向这些关节施加扭矩作为动作,让机器人实现站立平衡、向前行走或快速奔跑。该任务要求协调的双足步态和平衡控制能力。
动作空间(Action Space)
| 项目 | 详细信息 |
|---|---|
| 类型 | Box(-1.0, 1.0, (6,), float32) |
| 维度 | 6 |
动作对应如下:
| 序号 | 动作含义(施加在关节的力矩) | 最小值 | 最大值 | 对应 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 |
观察空间
| 项目 | 详细信息 |
|---|---|
| 类型 | Box(-inf, inf, (17,), float32) |
| 维度 | 17 |
Walker2D 环境的观测空间由以下部分组成(按顺序):
| 部分 | 内容说明 | 维度 | 备注 |
|---|---|---|---|
| qpos | 各身体关节与根部的位置信息 | 9 | 包括躯干高度和角度 |
| qvel | 各身体关节与根部的速度信息 | 8 | 所有关节及躯干的速度 |
奖励函数设计
walker 的奖励函数由以下几个部分组成:
基础站立奖励
# 高度奖励:保持躯干在目标高度
# 直立奖励:保持躯干直立
# 总奖励 = 高度奖励 + 直立奖励
移动奖励(行走和奔跑任务)
# 速度奖励:追踪目标前进速度
# 站立奖励:保持躯干在目标高度
# 直立奖励:保持躯干直立
# 总奖励 = 速度奖励 + 站立奖励 + 直立奖励
初始状态
- 重置所有有限关节角度到其允许范围内的随机值
- 保持无限幅度关节默认状态
Episode 终止条件
- 机器人的状态观测值出现异常数值(NaN)
- 机器人躯干接触地面(跌倒)
使用指南
1. 环境预览
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. 开始训练
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. 查看训练进度
uv run tensorboard --logdir runs/dm-walker
4. 测试训练结果
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.0-1.4m 范围
- 躯干直立角度偏差小于 15 度
- 能够稳定站立不倒
行走任务 (dm-walker)
- 实际行走速度接近 1.0 m/s
- 步态协调,无明显摔倒
- 能够持续稳定行走
奔跑任务 (dm-runner)
- 奔跑速度达到 4.0-5.0 m/s
- 出现飞行相(双脚同时离地)
- 步态协调稳定