Files
Motrixlab/docs/source/zh_CN/user_guide/demo/dm_walker.md
motphys-developers 5133830b5a chore: release v0.0.1
2025-11-20 17:39:31 +08:00

2.5 KiB
Raw Blame History

二维步行机器人训练示例

二维步行机器人Walker2D是基于 DeepMind Control Suite 的经典机器人控制任务,目标是通过控制机器人关节来实现站立、行走和奔跑。

:poster: _static/images/poster/dm_walker.jpg
:nocontrols:
:autoplay:
:playsinline:
:muted:
:loop:
:width: 100%

任务描述

Walker2D 是一个二维平面的双足机器人,具有多个关节和执行器:

  • 状态空间:包括机器人各部位的旋转角度、角速度、躯干高度和速度等
  • 动作空间:控制各个关节的力矩
  • 奖励函数:主要由保持站立、前进速度等组成
  • 终止条件:机器人摔倒或关节达到极限位置

三种任务模式

  1. dm-stander: 静止站立任务 (move_speed = 0.0)
uv run scripts/train.py --env dm-stander
  1. dm-walker: 行走任务 (move_speed = 1.0)
uv run scripts/train.py --env dm-walker
  1. 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 的奖励函数由以下几个部分组成:

基础站立奖励

# 高度奖励:保持躯干在目标高度
# 直立奖励:保持躯干直立

移动奖励(行走和奔跑任务)

# 速度奖励:追踪目标速度
# 总奖励 = 站立奖励 * 移动权重

预期结果

  1. dm-stander

    • 躯干高度保持在 1.0-1.4m 范围
    • 躯干直立角度偏差小于 15 度
  2. dm-walker

    • 实际行走速度接近 1.0 m/s
    • 步态协调,无明显摔倒
  3. dm-runner

    • 奔跑速度达到 4.0-5.0 m/s
    • 出现飞行相(双脚同时离地)