iit-DLSLab / gym-quadruped

0 stars 0 forks source link

Mujoco Gym Environments for quadupedal legged locomotion

Install Instructions

git clone https://github.com/iit-DLSLab/gym-quadruped.git
cd gym-quadruped
pip install -e .   # This will install the package in editable mode

Usage Instructions

from gym_quadruped.quadruped_env import QuadrupedEnv

robot_name = "mini_cheetah"   # "aliengo", "mini_cheetah", "go2", "hyqreal", ...
scene_name = "flat"
robot_feet_geom_names = dict(FL='FL', FR='FR', RL='RL', RR='RR')
robot_leg_joints = dict(FL=['FL_hip_joint', 'FL_thigh_joint', 'FL_calf_joint', ],  # TODO: Make configs per robot.
                        FR=['FR_hip_joint', 'FR_thigh_joint', 'FR_calf_joint', ],
                        RL=['RL_hip_joint', 'RL_thigh_joint', 'RL_calf_joint', ],
                        RR=['RR_hip_joint', 'RR_thigh_joint', 'RR_calf_joint', ])

state_observables_names = tuple(QuadrupedEnv.ALL_OBS)  # return all available state observables

env = QuadrupedEnv(robot='mini_cheetah',
                   hip_height=0.25,
                   legs_joint_names=robot_leg_joints,  # Joint names of the legs DoF
                   feet_geom_name=robot_feet_geom_names,  # Geom/Frame id of feet
                   scene=scene_name,
                   ref_base_lin_vel=0.5, # Constant magnitude of reference base linear velocity [m/s]
                   base_vel_command_type="forward",  # "forward", "random", "forward+rotate", "human"
                   state_obs_names=state_observables_names,  # Desired quantities in the 'state'
                   )
obs = env.reset()

env.render()
for _ in range(10000):
    action = env.action_space.sample() * 50  # Sample random action
    state, reward, is_terminated, is_truncated, info = env.step(action=action)

    if is_terminated:
        pass
        # Do some stuff
    env.render()
env.close()

Package-Name suggestions accepted

The end idea of this package is to be able to have a Mujoco Gym Environment to test model-based and learnign controllers for locomotion in controlled environments with shared metrics (e.g., energy efficiency, robustness, etc.)

The core principles should be:

At some point we should generate mujoco jax versions of the environments for simulation and data-collection in GPU.

Death to C++

Att: Giulio Turrisi