55 lines
1.3 KiB
Python
Raw Normal View History

2025-07-28 12:35:44 +08:00
import argparse
import pickle
import time
import mujoco
import mujoco.viewer
parser = argparse.ArgumentParser()
parser.add_argument("-d", "--dataset", type=str, required=True)
args = parser.parse_args()
episodes = pickle.load(open(args.dataset, "rb"))
model = mujoco.MjModel.from_xml_path("../../mini_bdx/robots/bdx/scene.xml")
data = mujoco.MjData(model)
def key_callback(keycode):
pass
viewer = mujoco.viewer.launch_passive(model, data, key_callback=key_callback)
current_episode_id = 0
current_episode = episodes[current_episode_id]
prev = data.time
try:
while True:
for i in range(len(current_episode.acts)):
angles = current_episode.acts[i]
# obs = current_episode.obs[i]
# print(len(obs))
dt = data.time - prev
data.ctrl[:] = angles
prev = data.time
mujoco.mj_step(model, data)
viewer.sync()
time.sleep(model.opt.timestep / 2.5)
print("new episode")
current_episode_id += 1
if current_episode_id >= len(episodes):
print("saw all episodes, restarting")
current_episode_id = 0
current_episode = episodes[current_episode_id]
except KeyboardInterrupt:
viewer.close()
viewer.close()