Mujoco Humanoid环境介绍

Mujoco Humanoid环境介绍

用于记录自己学习的过程,仅供参考,如有错误还请批评指正

Description

该环境基于Tassa、Erez和Todorov在 “Synthesis and stabilization of complex behaviors through online trajectory optimization”中介绍的环境。3D两足机器人是为模拟人类而设计的。它有一个躯干(腹部)和一对腿,一对手臂。每条腿由两个链环组成,手臂也是如此(分别代表膝盖和肘部)。环境的目标是让机器人尽可能快地向前走且不摔倒。

Action Space

动作空间是一个 Box(-1,1,(17,),float32),动作表示施加在铰链连接处的力矩。
Box数据类型可参考:Python的Gym库中的Box类

Action

控制最小值

控制最大值

名称 (在相应XML文件中)

Joint

单位

0

在腹部y坐标系中施加在铰链上的扭矩

-0.4

0.4

hip_1 (front_left_leg)

hinge

torque (N m)

1

在腹部z坐标系中施加在铰链上的扭矩

-0.4

0.4

angle_1 (front_left_leg)

hinge

torque (N m)

2

在腹部x坐标系中施加在铰链上的扭矩

-0.4

0.4

hip_2 (front_right_leg)

hinge

torque (N m)

3

施加在躯干/腹部和右髋关节之间的转子上的扭矩(x坐标)

-0.4

0.4

right_hip_x (right_thigh)

hinge

torque (N m)

4

施加在躯干/腹部和右髋关节之间的转子上的扭矩(z坐标)

-0.4

0.4

right_hip_z (right_thigh)

hinge

torque (N m)

5

施加在躯干/腹部和右髋关节之间的转子上的扭矩(y坐标)

-0.4

0.4

right_hip_y (right_thigh)

hinge

torque (N m)

6

施加在右髋/大腿和右胫骨之间的转子上的扭矩

-0.4

0.4

right_knee

hinge

torque (N m)

7

施加在躯干/腹部和左髋关节之间的转子上的扭矩(x坐标)

-0.4

0.4

left_hip_x (left_thigh)

hinge

torque (N m)

8

施加在躯干/腹部和左髋关节之间的转子上的扭矩(z坐标)

-0.4

0.4

left_hip_z (left_thigh)

hinge

torque (N m)

9

施加在躯干/腹部和左髋关节之间的转子上的扭矩(y坐标)

-0.4

0.4

left_hip_y (left_thigh)

hinge

torque (N m)

10

施加在左髋/大腿和左胫骨之间的转子上的扭矩

-0.4

0.4

left_knee

hinge

torque (N m)

11

施加在躯干和右上臂之间的转子上的扭矩(坐标-1)

-0.4

0.4

right_shoulder1

hinge

torque (N m)

12

施加在躯干和右上臂之间的转子上的扭矩(坐标-2)

-0.4

0.4

right_shoulder2

hinge

torque (N m)

13

施加在右上臂和右下臂之间的转子上的扭矩

-0.4

0.4

right_elbow

hinge

torque (N m)

14

施加在躯干和左上臂之间的转子上的扭矩(坐标-1)

-0.4

0.4

left_shoulder1

hinge

torque (N m)

15

施加在躯干和左上臂之间的转子上的扭矩(坐标-2)

-0.4

0.4

left_shoulder2

hinge

torque (N m)

16

施加在左上臂和左下臂之间的转子上的扭矩

-0.4

0.4

left_elbow

hinge

torque (N m)

Observation Space

观测由机器人的不同身体部位的位置值组成,然后是这些单独部位的速度(其导数),所有位置排在所有速度之前。
默认情况下,观测不包括躯干的x坐标和y坐标。可通过exclude_current_positions_from_observation=False来得到。在这种情况下,观测空间将具有378个维度,其中前两个维度表示躯干的x坐标和y坐标。无论exclude_current_positions_from_observation设置为true还是false,x和y坐标都将分别以x_positiony_positioninfo中返回。
默认情况下,观测是具有形状(376,)的ndarray,其中元素对应于以下内容:

Observation

Min

Max

Name (in corresponding XML file)

Joint

Unit

0

躯干的z坐标(中心)

-Inf

Inf

root

free

position (m)

1

躯干的x坐标(中心)

-Inf

Inf

root

free

angle (rad)

2

躯干的y坐标(中心)

-Inf

Inf

root

free

angle (rad)

3

躯干的z方向(中心)

-Inf

Inf

root

free

angle (rad)

4

躯干的w方向(中心)

-Inf

Inf

root

free

angle (rad)

5

腹部的z角(在下腰部)

-Inf

Inf

abdomen_z

hinge

angle (rad)

6

腹部的y角(在下腰部)

-Inf

Inf

abdomen_y

hinge

angle (rad)

7

腹部x角(骨盆内)

-Inf

Inf

abdomen_x

hinge

angle (rad)

8

骨盆和右髋关节之间角度的x坐标(在右大腿)

-Inf

Inf

right_hip_x

hinge

angle (rad)

9

骨盆和右髋关节之间角度的z坐标(在右大腿)

-Inf

Inf

right_hip_z

hinge

angle (rad)

10

骨盆和右髋关节之间角度的y坐标(在右大腿)

-Inf

Inf

right_hip_y

hinge

angle (rad)

11

右髋和右胫骨之间的角度(右膝)

-Inf

Inf

right_knee

hinge

angle (rad)

12

骨盆和左髋关节之间角度的x坐标(在左大腿)

-Inf

Inf

left_hip_x

hinge

angle (rad)

13

骨盆和左髋关节之间角度的z坐标(在左大腿)

-Inf

Inf

left_hip_z

hinge

angle (rad)

14

骨盆和左髋关节之间角度的y坐标(在左大腿)

-Inf

Inf

left_hip_y

hinge

angle (rad)

15

左髋和左胫骨之间的角度(左膝)

-Inf

Inf

left_knee

hinge

angle (rad)

16

坐标-1(多轴)躯干和右臂之间的角度(右上臂)

-Inf

Inf

right_shoulder1

hinge

angle (rad)

17

坐标-2(多轴)躯干和右臂之间的角度(右上臂)

-Inf

Inf

right_shoulder2

hinge

angle (rad)

18

右上臂与右下臂夹角

-Inf

Inf

right_elbow

hinge

angle (rad)

19

坐标-1(多轴)躯干和右臂之间的角度(左上臂)

-Inf

Inf

left_shoulder1

hinge

angle (rad)

20

坐标-2(多轴)躯干和右臂之间的角度(左上臂)

-Inf

Inf

left_shoulder2

hinge

angle (rad)

21

左上臂与左下臂夹角

-Inf

Inf

left_elbow

hinge

angle (rad)

22

躯干的x坐标速度(中心)

-Inf

Inf

root

free

velocity (m/s)

23

躯干的y坐标速度(中心)

-Inf

Inf

root

free

velocity (m/s)

24

躯干的z坐标速度(中心)

-Inf

Inf

root

free

velocity (m/s)

25

躯干的x坐标角速度(中心)

-Inf

Inf

root

free

anglular velocity (rad/s)

26

躯干的y坐标角速度(中心)

-Inf

Inf

root

free

anglular velocity (rad/s)

27

躯干的z坐标角速度(中心)

-Inf

Inf

root

free

anglular velocity (rad/s)

28

腹部角速度的z坐标(在下腰部)

-Inf

Inf

abdomen_z

hinge

anglular velocity (rad/s)

29

腹部角速度的y坐标(在下腰部)

-Inf

Inf

abdomen_y

hinge

anglular velocity (rad/s)

30

腹部角速度的x坐标(在骨盆中)

-Inf

Inf

abdomen_x

hinge

aanglular velocity (rad/s)

31

骨盆和右髋关节之间夹角的角速度的x坐标(右大腿)

-Inf

Inf

right_hip_x

hinge

anglular velocity (rad/s)

32

骨盆和右髋关节之间夹角的角速度的z坐标(右大腿)

-Inf

Inf

right_hip_z

hinge

anglular velocity (rad/s)

33

骨盆和右髋关节之间夹角的角速度的y坐标(右大腿)

-Inf

Inf

right_hip_y

hinge

anglular velocity (rad/s)

34

右髋关节和右胫骨之间夹角的角速度(右膝)

-Inf

Inf

right_knee

hinge

anglular velocity (rad/s)

35

骨盆和左髋关节之间角度的角速度的x坐标(左大腿)

-Inf

Inf

left_hip_x

hinge

anglular velocity (rad/s)

36

骨盆和左髋关节之间角度的角速度的z坐标(左大腿)

-Inf

Inf

left_hip_z

hinge

anglular velocity (rad/s)

37

骨盆和左髋关节之间角度的角速度的y坐标(左大腿)

-Inf

Inf

left_hip_y

hinge

anglular velocity (rad/s)

38

左髋关节和左胫骨之间夹角的角速度(在左膝)

-Inf

Inf

left_knee

hinge

anglular velocity (rad/s)

39

躯干和右臂之间角度的角速度坐标-1(多轴)(在右上臂)

-Inf

Inf

right_shoulder1

hinge

anglular velocity (rad/s)

40

躯干和右臂之间角度的角速度坐标-2(多轴)(在右上臂)

-Inf

Inf

right_shoulder2

hinge

anglular velocity (rad/s)

41

右上臂与右下臂夹角的角速度

-Inf

Inf

right_elbow

hinge

anglular velocity (rad/s)

42

躯干和左臂之间角速度的坐标-1(多轴)(左上臂)

-Inf

Inf

left_shoulder1

hinge

anglular velocity (rad/s)

43

躯干和左臂之间角速度的坐标-1(多轴)(左上臂)

-Inf

Inf

left_shoulder2

hinge

anglular velocity (rad/s)

44

左上臂与左下臂夹角的角速度

-Inf

Inf

left_elbow

hinge

anglular velocity (rad/s)

此外,在表中所有基于位置和速度的值之后,还包含(按顺序):

cinert:单个刚体相对于质心的质量和惯性(这是过渡的中间结果)。它的形状为14*10(nbody * 10),因此在状态空间中增加了另外140个元素。

cvel:基于质心的速度。它的形状为14*6(nbody * 6),因此在状态空间中添加了另外84个元素。

qfrc_actuator:作为致动器力生成的约束力。这具有形状(23,)(nv * 1),因此将另外23个元素添加到状态空间。
cfrc_ext:这是物体上基于质心的外力。它的形状为14*6(nbody * 6),因此在状态空间中增加了另外84个元素。其中nbody代表机器人中躯干的数量,nv代表自由度数量(= dim(qvel))

(x,y,z)坐标是平移自由度,而方向是用四元数表示的旋转自由度。可以在Mujoco文档上阅读更多关于自由关节的信息。

注意:Humanoid-v4环境不再存在以下接触力问题。如果使用v4以前的Humanoid版本,则有报告称,使用Mujoco-Py版本>2.0会导致接触力始终为0。因此,如果您想报告接触力的结果,我们建议在使用Humanoid环境时使用Mujoco Py版本<2.0(如果在实验中未使用接触力,则可以使用版本>2.0)。

Reward

奖励由四部分组成:
healthy_reward:机器人的每一步(定义见“Episode Termination”),都会获得固定值的healthy_reward奖励。

forward_reward:向前行走的奖励,计算方式为forward_reward_weight * (动作前的平均质心-动作后的平均质心)/ dt 。dt是动作之间的时间,取决于frame_skip参数(默认值为5),其中帧时间为0.003,使默认值dt=5*0.003=0.015。如果机器人向前走(在正x方向上),这个奖励将是正的。质心的计算在Humanoid的.py文件中定义。

ctrl_cost:如果人形机器人的控制力太大,则对其进行惩罚的负面奖励。如果有nu个致动器/控制器,则控制器的形状为nu x 1。它的计算方法为为ctrl_cost_weight * sum(control²`)。

contact_cost:如果外部接触力太大,惩罚机器人的负面奖励。它是通过将contact_cost_weight * sum(外部接触力²)clip到contact_cost_range指定的间隔来计算的。

返回的总奖励为 rewrard = healthy_reward + forward_reward - ctrl_cost - contact_cost,此外,info还将包含个人奖励条款

Starting State

所有观测从状态(0.0、0.0、1.4、1.0、0.0 … 0.0)开始,将[-reset_noise_scale,reset_noise _scale]范围内的均匀噪声添加到位置和速度值(表中的值)中,以获得随机性。注意,初始z坐标被有意选择为高,从而表示出站立的人形。初始方向设计为使其面向前方。

Episode End

如果躯干的z位置不再包含在参数healthy_z_range指定的闭合区间中,那么机器人就被认为是unhealthy的。
如果在运行过程中terminate_hen_unhealthy=True(这是默认值),则当发生以下任何情况时,该事件结束:
1.Truncation:episode持续时间达到1000 timesteps
2.Termination:机器人unhealthy
如果terminate_hen_unhealthy=False,则只有当超过1000个时间步长时,该episode才会结束

参数

Parameter

Type

默认值

Description

xml_file

str

"humanoid.xml"

Path to a MuJoCo model

forward_reward_weight

float

1.25

Weight for forward_reward term (see section on reward)

ctrl_cost_weight

float

0.1

Weight for ctrl_cost term (see section on reward)

contact_cost_weight

float

5e-7

Weight for contact_cost term (see section on reward)

healthy_reward

float

5.0

Constant reward given if the humanoid is “healthy” after timestep

terminate_when_unhealthy

bool

True

If true, issue a done signal if the z-coordinate of the torso is no longer in the healthy_z_range

healthy_z_range

tuple

(1.0, 2.0)

The humanoid is considered healthy if the z-coordinate of the torso is in this range

reset_noise_scale

float

1e-2

Scale of random perturbations of initial position and velocity (see section on Starting State)

exclude_current_positions_from_observation

bool

True

Whether or not to omit the x- and y-coordinates from observations. Excluding the position can serve as an inductive bias to induce position-agnostic behavior in policies

参考链接: Gymlibrary

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: PPO(Proximal Policy Optimization)是一种用于训练强化学习智能体的算法,常被应用在人形机器人(humanoid环境下的实现。 在一个人形机器人环境下,PPO可以帮助智能体学习如何进行复杂的任务,比如行走、跑步、跳跃等动作。首先,智能体会通过观察环境,比如通过传感器收集关于身体姿势、位置和速度等信息。这个环境信息将会作为输入传递给神经网络。 接下来,神经网络会根据当前的环境信息,生成一个动作概率分布。这个动作概率分布表示了每个可能动作发生的概率大小。根据分布,智能体会选择一个动作来执行。在人形机器人环境下,动作可能包括走、跑、转身等。 执行动作后,智能体会观察环境的反馈,包括奖励信号、状态的变化等。这些反馈将会被用来更新神经网络,从而改进动作策略。PPO算法利用反馈信息来评估动作的效果,以便进行优化。 具体地说,PPO采用一种近端策略优化的方法,通过最大化目标函数来优化策略。该目标函数包括两部分:策略比率和 clipped surrogate目标。策略比率用于衡量新策略与旧策略的相对性能,而clipped surrogate目标用于防止更新幅度过大。这样做旨在保持稳定性,防止策略优化过程中的不稳定性。 通过迭代执行上述步骤,智能体可以逐渐学习到在人形机器人环境下执行复杂任务的最佳动作策略。在训练完成后,该策略可以帮助机器人在新的环境中执行任务,实现高效的行为和动作表现。 ### 回答2: PPO(Proximal Policy Optimization)是一种在人形机器人环境下实现的强化学习算法。在人形机器人环境中,我们需要利用强化学习算法来训练机器人执行各种任务,如行走、跑步、跳跃等。 PPO算法的实现首先需要构建一个仿真环境,该环境模拟了人形机器人的外观和物理特性,包括关节、肌肉、惯性等。机器人和环境之间通过传感器和执行器进行信息传递。传感器用于获取机器人当前的状态,如关节角度、身体姿态、速度等。执行器用于执行机器人的动作,如控制关节转动、施加力量等。 在PPO算法中,我们利用深度神经网络来建模机器人的动作策略。通过输入当前的状态,网络可以输出一个概率分布,表示机器人执行每个可能动作的概率。为了避免训练中的剧烈变化,PPO采用了两个策略网络,一个是旧的策略网络,另一个是新的策略网络。每次更新参数时,我们使用一种称为Proximal Policy Optimization的方法,通过最大化预期累积奖励来更新策略网络的参数。 为了优化PPO算法在人形机器人环境中的性能,我们需要设计合适的奖励函数和惩罚机制。奖励函数可以根据机器人的行为来判断其表现好坏,并给予相应的正向或负向奖励。同时,我们还需要设置一些约束机制,以避免机器人执行过于危险或不合理的动作。 通过对PPO算法进行不断的训练和优化,机器人可以逐渐学习到在人形环境中执行任务的有效策略。它可以根据当前的状态做出相应的动作,并不断调整策略以获得更好的表现。通过不断迭代和调整参数,最终机器人可以学会在人形机器人环境中完成各种复杂的任务。 ### 回答3: 在humanoid环境下,PPO(Proximal Policy Optimization,近端策略优化算法)可以用于机器人智能的实现。 PPO是一种强化学习算法,用于训练智能体在特定环境中学习和表现任务。在humanoid环境下,机器人智能体需要通过学习和优化自己的策略,以实现平衡、行走、跑动等动作。 在实现中,首先需要定义humanoid环境的状态空间、动作空间和奖励函数。状态空间可以包括机器人的位置、速度、关节角度等信息;动作空间可以包括机器人的关节力矩、步态期望等控制指令;奖励函数可以根据机器人特定的任务设定,例如跑步时的速度、稳定性等。 接下来使用PPO算法进行训练。PPO通过在环境中与机器人进行交互来收集数据,包括当前状态、采取的动作和获得的奖励。然后,使用这些数据来更新智能体的策略和参数。 具体来说,PPO采用策略梯度方法,通过最大化动作价值函数(例如奖励的累积值)来优化策略。与其他策略梯度方法不同的是,PPO对优化过程进行了改进和稳定,使用了一种近端优化算法,防止策略更新过大,保证优化的稳定性和收敛性。 在实现过程中,通常需要进行多次训练迭代,通过不断收集数据、更新策略,智能体可以逐渐提升自己的性能,学会在humanoid环境中完成复杂的任务。 总结来说,PPO在humanoid环境下的实现,涉及到定义环境的状态空间、动作空间和奖励函数,使用PPO算法进行训练和优化智能体的策略,以实现机器人在humanoid环境中的任务表现和智能行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值