赞
踩
在前几章机器人步态仿真系列中,我们详细介绍了如何通过PyBullet对机器人进行仿真,本章我们将搭建PyBullet环境并结合DI-engine运行SAC算法。
Pybullet运行效果:
一、PyBullet环境概述
PyBullet提供了一个物理仿真平台,广泛应用于游戏开发、视觉效果制作、机器人技术以及作为评估连续空间强化学习策略的标准测试工具。此平台包括多个不同的环境,总计有20种场景供使用者选择,包括各种运动和操纵任务,如单脚跳跃机器人(Hopper)、双足行走机器人(Walker2D)、半猎豹(Half Cheetah)、蚂蚁(Ant)、人形机器人(Humanoid)、操纵器(Manipulator)和摆(Pendulum)等。参见附图,展示了Hopper环境的实例。
安装方法
可以通过 pip 一键安装或结合 DI-engine 安装,只需安装 gym 和 pybullet-gym 两个库即可
Install pybullet-gympip install gymgit clone https://github.com/benelot/pybullet-gym.gitcd pybullet-gympip install -e .
PyBullet原始环境
在强化学习(RL)中,智能体(agent)通过与环境交互来学习行为策略,以最大化累积奖励。环境给予的每个状态、可执行的动作和相应的奖励定义了学习的基础。在使用PyBullet这样的物理仿真库进行RL训练时,变换前的原始环境中观察空间、动作空间和奖励空间是三个关键要素:
观察空间
观察空间由物理信息组成的向量定义,这些信息可能包括:
在Hopper环境中,观察空间的具体尺寸(N)由环境的复杂性和所模拟物体的自由度确定。例如,如果Hopper模型有三个可移动关节,观察向量可能包含每个关节的角度和速度,因此观察空间的维度可能是(N = 3)关节角度加上(3)关节速度,总共(6)个浮点数。
数据类型通常是float64。
动作空间
动作空间定义了智能体可以采取的所有可能动作。在连续控制任务中,这些动作通常涉及施加扭矩或力到机器人的关节上。比如在Hopper环境中,假设动作空间的维度(N)也是(3),表示可以对三个关节分别施加扭矩。
动作通常被限制在一定范围内,比如在([-1, 1])区间,智能体可以为每个关节施加从最大负扭矩到最大正扭矩的任何值。这个操作可以对应于实际物理系统的操作限制。
动作的数据类型是np.float32,因为在许多机器学习框架中,float32在精度和计算效率之间提供了良好的平衡。
奖励空间
奖励空间是根据智能体的性能给予的反馈。
举个栗子,在Hopper环境中,奖励可能会基于以下因素:
奖励一半来说是一个浮点数值,可以使智能体通过梯度下降类的算法来调整其行为策略。这个值非常重要,他确保智能体被鼓励学习到完成任务的最优策略,而不是只为了获取奖励而游戏系统。
关键事实
三、PyBullet RL环境
观察空间
基本无变换
动作空间
基本无变换,依然是大小为 N 的连续动作空间,取值范围[-1, 1],尺寸为(N, ),数据类型为np.float32
奖励空间
基本无变换
上述环境使用 gym 环境空间定义可表示为:
import gymobs_space = gym.spaces.Box(low=-np.inf, high=np.inf, shape=(11, ), dtype=np.float64)act_space = gym.spaces.Box(low=-1, high=1, shape=(3, ), dtype=np.float32)rew_space = gym.spaces.Box(low=-np.inf, high=np.inf, shape=(1, ), dtype=np.float32)
代码解释
这段代码使用了OpenAI Gym库来定义强化学习环境中的不同空间:观察空间、动作空间和奖励空间。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。