gello_software/scripts/visualize_example.py

42 lines
1.4 KiB
Python
Raw Normal View History

import time
from pathlib import Path
import mujoco
import mujoco.viewer
def main():
_PROJECT_ROOT: Path = Path(__file__).parent.parent
_MENAGERIE_ROOT: Path = _PROJECT_ROOT / "third_party" / "mujoco_menagerie"
xml = _MENAGERIE_ROOT / "franka_emika_panda" / "panda.xml"
# xml = _MENAGERIE_ROOT / "universal_robots_ur5e" / "ur5e.xml"
m = mujoco.MjModel.from_xml_path(xml.as_posix())
d = mujoco.MjData(m)
with mujoco.viewer.launch_passive(m, d) as viewer:
# Close the viewer automatically after 30 wall-seconds.
while viewer.is_running():
step_start = time.time()
# mj_step can be replaced with code that also evaluates
# a policy and applies a control signal before stepping the physics.
mujoco.mj_step(m, d)
# Example modification of a viewer option: toggle contact points every two seconds.
with viewer.lock():
viewer.opt.flags[mujoco.mjtVisFlag.mjVIS_CONTACTPOINT] = int(d.time % 2)
# Pick up changes to the physics state, apply perturbations, update options from GUI.
viewer.sync()
# Rudimentary time keeping, will drift relative to wall clock.
time_until_next_step = m.opt.timestep - (time.time() - step_start)
if time_until_next_step > 0:
time.sleep(time_until_next_step)
if __name__ == "__main__":
main()