单脚跳跃机器人#

单脚跳跃机器人(Hopper)是 DeepMind Control Suite 中的经典连续控制任务。其目标是训练一个模拟的单腿跳跃机器人,通过控制其关节力矩,实现站立平衡或向前跳跃。

任务描述#

Hopper 是一个二维单腿跳跃机器人任务。由 5 段身体结构组成(torso 躯干、pelvis 骨盆、thigh 大腿、calf 小腿、foot 脚部),拥有 3 个受控关节(thigh_joint 大腿关节、leg_joint 小腿关节、foot_joint 脚部关节),智能体通过向这些关节施加扭矩作为动作,让机器人完成站立平衡或向前跳跃。


动作空间(Action Space)#

项目

详细信息

类型

Box(-1.0, 1.0, (3,), float32)

维度

3

关节对应如下:

序号

动作含义(施加在关节的力矩)

最小值

最大值

对应 XML 中名称

0

大腿转子驱动扭矩

-1

1

thigh_joint

1

小腿转子驱动扭矩

-1

1

leg_joint

2

脚部转子驱动扭矩

-1

1

foot_joint


观察空间#

项目

详细信息

类型

Box(-inf, inf, (13,), float64)

维度

13

Hopper 环境的观测空间由以下部分组成(按顺序):

部分

内容说明

维度

备注

qpos

关节角度与躯干高度

5

不包括 torso x 坐标(默认隐藏)

qvel

关节角速度与躯干速度

6

所有关节及躯干的速度

contact sensors

脚尖与脚跟触地传感器

2

使用 log1p 正规化处理

序号

观察量

最小值

最大值

XML 名称

关节

类型 (单位)

0

躯干 z 坐标

-Inf

Inf

rootz

slide

位置 (m)

1

躯干角度

-Inf

Inf

rooty

hinge

角度 (rad)

2

大腿关节角度

-Inf

Inf

thigh_joint

hinge

角度 (rad)

3

小腿关节角度

-Inf

Inf

leg_joint

hinge

角度 (rad)

4

脚部关节角度

-Inf

Inf

foot_joint

hinge

角度 (rad)

5

躯干 x 坐标速度

-Inf

Inf

rootx

slide

速度 (m/s)

6

躯干 z 坐标速度

-Inf

Inf

rootz

slide

速度 (m/s)

7

躯干角速度

-Inf

Inf

rooty

hinge

角速度 (rad/s)

8

大腿关节角速度

-Inf

Inf

thigh_joint

hinge

角速度 (rad/s)

9

小腿关节角速度

-Inf

Inf

leg_joint

hinge

角速度 (rad/s)

10

脚部关节角速度

-Inf

Inf

foot_joint

hinge

角速度 (rad/s)

11

前脚触地传感器

-Inf

Inf

touch_toe

sensor

压力 (无量纲)

12

后脚触地传感器

-Inf

Inf

touch_heel

sensor

压力 (无量纲)


奖励函数设计#

hopper 的奖励函数由以下几个部分组成:

stand 任务(站立)#

# 站立奖励:维持目标站立高度稳定性
# 高度奖励:保持躯干在目标高度附近
# 总奖励 = 站立奖励

hop 任务(跳跃)#

# 站立奖励:维持目标站立高度稳定性
# 跳跃奖励:达到目标前进速度
# 腿部运动奖励:适度的腿部摆动(抑制过度运动)
# 膝盖伸展奖励:适度的膝盖伸展动作
# 足部接触奖励:保持适当的足部接触力
# 总奖励 = 站立奖励 + 跳跃奖励 + 腿部运动奖励 + 膝盖伸展奖励 + 接触奖励

初始状态#

  • 重置部分关节角度到其允许范围内的随机值

  • 保持有限幅度关节默认状态

Episode 终止条件#

  • 机器人的状态观测值出现异常数值(NaN)


使用指南#

1. 环境预览#

uv run scripts/view.py --env dm-hopper-stand
uv run scripts/view.py --env dm-hopper-hop

2. 开始训练#

uv run scripts/train.py --env dm-hopper-stand
uv run scripts/train.py --env dm-hopper-hop

3. 查看训练进度#

uv run tensorboard --logdir runs/dm-hopper-hop

4. 测试训练结果#

uv run scripts/play.py --env dm-hopper-stand
uv run scripts/play.py --env dm-hopper-hop

预期训练结果#

站立任务 (dm-hopper-stand)#

  1. 保持机器人稳定站立

  2. 躯干高度保持在 0.6 米附近

跳跃任务 (dm-hopper-hop)#

  1. 机器人实现稳定的向前跳跃

  2. 跳跃运动达到 2.0 m/s 的目标速度

  3. 步态协调,无明显摔倒