55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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()
 |