环境:
使用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)