v0.1.13; add 2.5 rad trunctation; add LevelPipeline binary search maximum terrain levels
This commit is contained in:
@@ -45,3 +45,7 @@ class MujocoConfig(Config):
|
||||
ang_vel = 0.8 # [rad/s]
|
||||
joint_pos = 0.01 # [rad]
|
||||
joint_vel = 3.0 # [rad/s]
|
||||
|
||||
class truncation:
|
||||
enabled = True
|
||||
projected_gravity_rad = 2.5 # [rad], if gravity projection angle exceeds this value, truncate episode
|
||||
|
||||
@@ -20,6 +20,7 @@ from typing import Literal
|
||||
|
||||
from robogauge.utils.logger import logger
|
||||
from robogauge.utils.helpers import parse_path
|
||||
from robogauge.utils.math_utils import get_projected_gravity
|
||||
from robogauge.tasks.simulator.mujoco_config import MujocoConfig
|
||||
from robogauge.tasks.simulator.sim_data import (
|
||||
SimData,
|
||||
@@ -261,8 +262,15 @@ class MujocoSimulator:
|
||||
|
||||
self.n_step += 1
|
||||
self.sim_time = self.n_step * self.sim_dt
|
||||
self.check_truncation(sim_data)
|
||||
return sim_data
|
||||
|
||||
def check_truncation(self, sim_data: SimData):
|
||||
if self.cfg.truncation.enabled:
|
||||
projected_gravity = get_projected_gravity(sim_data.proprio.base.quat)
|
||||
if -projected_gravity[2] < np.cos(self.cfg.truncation.projected_gravity_rad):
|
||||
raise RuntimeError(f"Episode truncated due to excessive projected gravity, angle: {np.arccos(-projected_gravity[2]):.3f} rad, projected: {projected_gravity}")
|
||||
|
||||
def reset(self):
|
||||
""" Reset the simulator to initial state. """
|
||||
self.mj_physics.reset()
|
||||
|
||||
Reference in New Issue
Block a user