Update sim/base_sim.py
Browse files- sim/base_sim.py +7 -0
sim/base_sim.py
CHANGED
|
@@ -86,6 +86,8 @@ class DefaultEnv:
|
|
| 86 |
str(assets_root / self.config["ROBOT_SCENE"])
|
| 87 |
)
|
| 88 |
self.mj_data = mujoco.MjData(self.mj_model)
|
|
|
|
|
|
|
| 89 |
self.mj_model.opt.timestep = self.sim_dt
|
| 90 |
self.torso_index = mujoco.mj_name2id(self.mj_model, mujoco.mjtObj.mjOBJ_BODY, "torso_link")
|
| 91 |
self.root_body = "pelvis"
|
|
@@ -502,6 +504,11 @@ class DefaultEnv:
|
|
| 502 |
|
| 503 |
def reset(self):
|
| 504 |
mujoco.mj_resetData(self.mj_model, self.mj_data)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 505 |
|
| 506 |
|
| 507 |
class BaseSimulator:
|
|
|
|
| 86 |
str(assets_root / self.config["ROBOT_SCENE"])
|
| 87 |
)
|
| 88 |
self.mj_data = mujoco.MjData(self.mj_model)
|
| 89 |
+
# Set valid floating base quaternion (MjData initializes qpos to zeros)
|
| 90 |
+
self.mj_data.qpos[3:7] = [1.0, 0.0, 0.0, 0.0]
|
| 91 |
self.mj_model.opt.timestep = self.sim_dt
|
| 92 |
self.torso_index = mujoco.mj_name2id(self.mj_model, mujoco.mjtObj.mjOBJ_BODY, "torso_link")
|
| 93 |
self.root_body = "pelvis"
|
|
|
|
| 504 |
|
| 505 |
def reset(self):
|
| 506 |
mujoco.mj_resetData(self.mj_model, self.mj_data)
|
| 507 |
+
# Set valid floating base quaternion (identity: w=1, x=y=z=0)
|
| 508 |
+
# mj_resetData sets qpos to zeros, which gives invalid [0,0,0,0] quaternion
|
| 509 |
+
self.mj_data.qpos[3:7] = [1.0, 0.0, 0.0, 0.0]
|
| 510 |
+
# Propagate qpos to derived quantities (xquat, xpos, etc.)
|
| 511 |
+
mujoco.mj_forward(self.mj_model, self.mj_data)
|
| 512 |
|
| 513 |
|
| 514 |
class BaseSimulator:
|