2.5 KiB
2.5 KiB
二维步行机器人训练示例
二维步行机器人(Walker2D)是基于 DeepMind Control Suite 的经典机器人控制任务,目标是通过控制机器人关节来实现站立、行走和奔跑。
:poster: _static/images/poster/dm_walker.jpg
:nocontrols:
:autoplay:
:playsinline:
:muted:
:loop:
:width: 100%
任务描述
Walker2D 是一个二维平面的双足机器人,具有多个关节和执行器:
- 状态空间:包括机器人各部位的旋转角度、角速度、躯干高度和速度等
- 动作空间:控制各个关节的力矩
- 奖励函数:主要由保持站立、前进速度等组成
- 终止条件:机器人摔倒或关节达到极限位置
三种任务模式
- dm-stander: 静止站立任务 (move_speed = 0.0)
uv run scripts/train.py --env dm-stander
- dm-walker: 行走任务 (move_speed = 1.0)
uv run scripts/train.py --env dm-walker
- dm-runner: 奔跑任务 (move_speed = 5.0)
uv run scripts/train.py --env dm-runner
配置参数
环境配置
@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 # 目标站立高度
训练配置
@dataclass
class WalkerRLCfg(BaseRLCfg):
num_envs: int = 512 # 并行环境数量
learning_rate: float = 3e-4 # 学习率
batch_size: int = 512 # 批大小
max_epochs: int = 1000 # 最大训练轮数
奖励函数设计
Walker2D 的奖励函数由以下几个部分组成:
基础站立奖励
# 高度奖励:保持躯干在目标高度
# 直立奖励:保持躯干直立
移动奖励(行走和奔跑任务)
# 速度奖励:追踪目标速度
# 总奖励 = 站立奖励 * 移动权重
预期结果
-
dm-stander:
- 躯干高度保持在 1.0-1.4m 范围
- 躯干直立角度偏差小于 15 度
-
dm-walker:
- 实际行走速度接近 1.0 m/s
- 步态协调,无明显摔倒
-
dm-runner:
- 奔跑速度达到 4.0-5.0 m/s
- 出现飞行相(双脚同时离地)