本篇将会创建几个基本的仿真环境,包含了一些必要的功能函数,实现动态调整离地高度。能够与决策模型进行交互,为后续强化学习训练做准备
一、框架
按照强化学习的基本思路,我们需要构建仿真环境与代理进行交互的部分。每一个循环需要执行以下步骤:
- 初始化环境:包括导入相关模型,设置好动力学参数之类的
- 执行动作:根据agent产生的动作来使模型运动
- 返回状态和奖励:执行完动作之后,重新获取当前状态并计算奖励值,返回给agent
因此,我们的环境框架需要包含一下功能:
class Cheetah(object):
def __init__(self):
'''
初始化参数
'''
pass
def reset(self):
'''
环境复位
'''
pass
def step(self):
'''
执行动作
'''
pass
def get_observe(self):
'''
获取当前状态
'''
pass
def reward(self):
'''
计算奖励值
'''
pass
这里我们先不考虑强化学习部分,因此可以暂时忽略奖励函数部分
1、__init__
这里我们需要初始化以下内容:
- pybullet客户端:pybullet的使用标准
- motor_id:用于设置电机角度,需要区分各个关节类型,这里为了方便直接给出了对应的编号。
- 设置重力
- 设置参数:
addUserDebugParameter
这个api提供用户自定义的参数,我这里设置成 髋关节角度 - 设置视角:
resetDebugVisualizerCamera
这个api可以设置相机姿态,在我的pybulet实践文章中已经介绍过其使用
当我们的类初始化的时候需要调用一次reset()
函数来设置mini cheetah的姿态
def __init__(self):
# self.pybullet_client = self._pybullet_client = bc.BulletClient(connection_mode=pybullet.GUI)
self.pybullet_client = pybullet
self.<