环境:

使用h5py进行储存, 需要下载. 下载后位于datasets/v0.1/single_stage/kitchen_pnp/pnpcountertocab/2024-04-24/demo.hdf5

f = h5py.File(os.path.join(os.getcwd(), "datasets/v0.1/single_stage/kitchen_pnp/pnpcountertocab/2024-04-24/demo.hdf5"))
env_meta = json.loads(f["data"].attrs["env_args"])
states = dict(states=f["data/demo_1/states"][()][0])
states["model"] = f["data/demo_1"].attrs["model_file"]
ep_meta = f["data/demo_1"].attrs.get("ep_meta", None)
states["ep_meta"] = ep_meta
f.close()
env_kwargs = env_meta["env_kwargs"]
env_kwargs["env_name"] = env_meta["env_name"]
env_kwargs["has_renderer"] = False
env_kwargs["renderer"] = "mjviewer"
env_kwargs["has_offscreen_renderer"] = True
env_kwargs["use_camera_obs"] = False
 
# initial env
env = robosuite.make(**env_kwargs)
reset_to(env, state)

实际上, 调用的是RoboCasa的kitchen_pnp.py里面的PnPCounterToCab环境, 通过robosuite.environments.base的MujocoEnv创建

调用:

通过env.step(action)的方式执行单步动作.

对于Panda Mobile, action space为12-dim, 有: joint旋转, 底座水平移动, 躯干上下移动, gripper开关

steps = [[0.1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ...]
 
for step in steps:
	env.step(step)
 
	video_image = []
	for cam in ["robot0_agentview_center"]:
		im = env.sim.render(camera_name=cam, width=512, height=768)[::-1]
		video_image.append(im)
	video_image = np.concatenate(video_image, axis=1)
	video_writer.append_data(video_image)