chore(camera): 添加front相机
This commit is contained in:
@@ -8,5 +8,6 @@
|
|||||||
</body>
|
</body>
|
||||||
<camera name="top" pos="0.0 1.0 2.0" fovy="44" mode="targetbody" target="table"/>
|
<camera name="top" pos="0.0 1.0 2.0" fovy="44" mode="targetbody" target="table"/>
|
||||||
<camera name="angle" pos="0.0 0.0 2.0" fovy="37" mode="targetbody" target="table"/>
|
<camera name="angle" pos="0.0 0.0 2.0" fovy="37" mode="targetbody" target="table"/>
|
||||||
|
<camera name="front" pos="0 0 0.9" fovy="55" mode="fixed" quat="0.7071 0.7071 0 0"/>
|
||||||
</worldbody>
|
</worldbody>
|
||||||
</mujoco>
|
</mujoco>
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ class BiDianaMed(ArmBase):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__(
|
super().__init__(
|
||||||
name="Bidiana",
|
name="Bidiana",
|
||||||
urdf_path="./assets/models/manipulators/DianaMed/DualDianaMed.urdf",
|
urdf_path="roboimi/assets/models/manipulators/DianaMed/DualDianaMed.urdf",
|
||||||
xml_path="./assets/models/manipulators/DianaMed/bi_diana_transfer_ee.xml",
|
xml_path="roboimi/assets/models/manipulators/DianaMed/bi_diana_transfer_ee.xml",
|
||||||
gripper=None
|
gripper=None
|
||||||
)
|
)
|
||||||
self.left_arm = self.Arm(self, 'single', self.urdf_path)
|
self.left_arm = self.Arm(self, 'single', self.urdf_path)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ def main():
|
|||||||
render_cam_name = 'angle'
|
render_cam_name = 'angle'
|
||||||
|
|
||||||
episode_len = 700 #SIM_TASK_CONFIGS[task_name]['episode_len']
|
episode_len = 700 #SIM_TASK_CONFIGS[task_name]['episode_len']
|
||||||
camera_names = ['angle','r_vis', 'top'] #SIM_TASK_CONFIGS[task_name]['camera_names']
|
camera_names = ['angle','r_vis', 'top', 'front'] #SIM_TASK_CONFIGS[task_name]['camera_names']
|
||||||
if task_name == 'sim_transfer':
|
if task_name == 'sim_transfer':
|
||||||
policy = TestPickAndTransferPolicy(inject_noise)
|
policy = TestPickAndTransferPolicy(inject_noise)
|
||||||
print(task_name)
|
print(task_name)
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ class VLAEvaluator:
|
|||||||
self,
|
self,
|
||||||
agent: torch.nn.Module,
|
agent: torch.nn.Module,
|
||||||
device: str = 'cuda',
|
device: str = 'cuda',
|
||||||
camera_names: List[str] = ['r_vis', 'top'],
|
camera_names: List[str] = ['r_vis', 'top', 'front'],
|
||||||
num_queries: int = 1,
|
num_queries: int = 1,
|
||||||
obs_horizon: int = 2,
|
obs_horizon: int = 2,
|
||||||
pred_horizon: int = 16,
|
pred_horizon: int = 16,
|
||||||
@@ -351,7 +351,7 @@ def evaluate_policy(
|
|||||||
max_timesteps: int = 700,
|
max_timesteps: int = 700,
|
||||||
task_name: str = 'sim_transfer',
|
task_name: str = 'sim_transfer',
|
||||||
device: str = 'cuda',
|
device: str = 'cuda',
|
||||||
camera_names: List[str] = ['r_vis', 'top'],
|
camera_names: List[str] = ['r_vis', 'top', 'front'],
|
||||||
num_queries: int = 1,
|
num_queries: int = 1,
|
||||||
obs_horizon: int = 2,
|
obs_horizon: int = 2,
|
||||||
save_video: bool = True
|
save_video: bool = True
|
||||||
@@ -500,7 +500,7 @@ def main():
|
|||||||
help='Maximum timesteps per episode')
|
help='Maximum timesteps per episode')
|
||||||
parser.add_argument('--device', type=str, default='cuda',
|
parser.add_argument('--device', type=str, default='cuda',
|
||||||
help='Device for inference')
|
help='Device for inference')
|
||||||
parser.add_argument('--camera_names', nargs='+', default=['r_vis', 'top'],
|
parser.add_argument('--camera_names', nargs='+', default=['r_vis', 'top', 'front'],
|
||||||
help='Camera names to use')
|
help='Camera names to use')
|
||||||
parser.add_argument('--num_queries', type=int, default=16,
|
parser.add_argument('--num_queries', type=int, default=16,
|
||||||
help='Policy query frequency (timesteps)')
|
help='Policy query frequency (timesteps)')
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ class DualDianaMed(MujocoEnv):
|
|||||||
self.l_vis = None
|
self.l_vis = None
|
||||||
self.top = None
|
self.top = None
|
||||||
self.angle = None
|
self.angle = None
|
||||||
|
self.front = None
|
||||||
self.obs = None
|
self.obs = None
|
||||||
|
|
||||||
self.rew = None
|
self.rew = None
|
||||||
@@ -168,6 +169,7 @@ class DualDianaMed(MujocoEnv):
|
|||||||
obs['images']['angle'] = self.angle
|
obs['images']['angle'] = self.angle
|
||||||
obs['images']['r_vis'] = self.r_vis
|
obs['images']['r_vis'] = self.r_vis
|
||||||
obs['images']['l_vis'] = self.l_vis
|
obs['images']['l_vis'] = self.l_vis
|
||||||
|
obs['images']['front'] = self.front
|
||||||
return obs
|
return obs
|
||||||
|
|
||||||
def _get_image_obs(self):
|
def _get_image_obs(self):
|
||||||
@@ -177,6 +179,7 @@ class DualDianaMed(MujocoEnv):
|
|||||||
obs['images']['angle'] = self.angle
|
obs['images']['angle'] = self.angle
|
||||||
obs['images']['r_vis'] = self.r_vis
|
obs['images']['r_vis'] = self.r_vis
|
||||||
obs['images']['l_vis'] = self.l_vis
|
obs['images']['l_vis'] = self.l_vis
|
||||||
|
obs['images']['front'] = self.front
|
||||||
return obs
|
return obs
|
||||||
|
|
||||||
def _get_qpos_obs(self):
|
def _get_qpos_obs(self):
|
||||||
@@ -202,6 +205,8 @@ class DualDianaMed(MujocoEnv):
|
|||||||
return self.r_vis
|
return self.r_vis
|
||||||
elif self.cam == 'l_vis':
|
elif self.cam == 'l_vis':
|
||||||
return self.l_vis
|
return self.l_vis
|
||||||
|
elif self.cam == 'front':
|
||||||
|
return self.front
|
||||||
else:
|
else:
|
||||||
raise AttributeError("please input right name")
|
raise AttributeError("please input right name")
|
||||||
|
|
||||||
@@ -222,6 +227,9 @@ class DualDianaMed(MujocoEnv):
|
|||||||
img_renderer.update_scene(self.mj_data,camera="angle")
|
img_renderer.update_scene(self.mj_data,camera="angle")
|
||||||
self.angle = img_renderer.render()
|
self.angle = img_renderer.render()
|
||||||
self.angle = self.angle[:, :, ::-1]
|
self.angle = self.angle[:, :, ::-1]
|
||||||
|
img_renderer.update_scene(self.mj_data,camera="front")
|
||||||
|
self.front = img_renderer.render()
|
||||||
|
self.front = self.front[:, :, ::-1]
|
||||||
cv2.imshow('Cam view', self.cam_view)
|
cv2.imshow('Cam view', self.cam_view)
|
||||||
cv2.waitKey(1)
|
cv2.waitKey(1)
|
||||||
|
|
||||||
|
|||||||
@@ -77,7 +77,8 @@ class DualDianaMed_Pos_Ctrl(DualDianaMed):
|
|||||||
while self.cam_flage:
|
while self.cam_flage:
|
||||||
if(type(self.top)==type(None)
|
if(type(self.top)==type(None)
|
||||||
or type(self.angle)==type(None)
|
or type(self.angle)==type(None)
|
||||||
or type(self.r_vis)==type(None)):
|
or type(self.r_vis)==type(None)
|
||||||
|
or type(self.front)==type(None)):
|
||||||
time.sleep(0.001)
|
time.sleep(0.001)
|
||||||
t+=1
|
t+=1
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ SIM_TASK_CONFIGS = {
|
|||||||
'dataset_dir': DATASET_DIR + '/sim_transfer',
|
'dataset_dir': DATASET_DIR + '/sim_transfer',
|
||||||
'num_episodes': 20,
|
'num_episodes': 20,
|
||||||
'episode_len': 700,
|
'episode_len': 700,
|
||||||
'camera_names': ['top','r_vis'],
|
'camera_names': ['top','r_vis','front'],
|
||||||
'xml_dir': HOME_PATH + '/assets'
|
'xml_dir': HOME_PATH + '/assets'
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ obs_horizon: 2 # How many historical observations to use
|
|||||||
diffusion_steps: 100 # Number of diffusion timesteps for training
|
diffusion_steps: 100 # Number of diffusion timesteps for training
|
||||||
|
|
||||||
# Camera Configuration
|
# Camera Configuration
|
||||||
num_cams: 2 # Number of cameras (e.g., r_vis, top)
|
num_cams: 3 # Number of cameras (e.g., r_vis, top)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ defaults:
|
|||||||
- data: resnet_dataset
|
- data: resnet_dataset
|
||||||
|
|
||||||
train:
|
train:
|
||||||
batch_size: 32 # Batch size for training
|
batch_size: 16 # Batch size for training
|
||||||
lr: 1e-4 # Learning rate
|
lr: 1e-4 # Learning rate
|
||||||
max_steps: 20000 # Maximum training steps
|
max_steps: 20000 # Maximum training steps
|
||||||
log_freq: 100 # Log frequency (steps)
|
log_freq: 100 # Log frequency (steps)
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ action_horizon: 8 # Action execution horizon (used during evaluation)
|
|||||||
camera_names:
|
camera_names:
|
||||||
- r_vis
|
- r_vis
|
||||||
- top
|
- top
|
||||||
|
- front
|
||||||
|
|
||||||
# Normalization Type: 'gaussian' (mean/std) or 'min_max' ([-1, 1])
|
# Normalization Type: 'gaussian' (mean/std) or 'min_max' ([-1, 1])
|
||||||
normalization_type: gaussian
|
normalization_type: gaussian
|
||||||
|
|||||||
@@ -4,5 +4,5 @@ dataset_dir: "/home/d51/workspace/work/robo-imi-act/roboimi/demos/dataset/sim_tr
|
|||||||
pred_horizon: 16
|
pred_horizon: 16
|
||||||
obs_horizon: 1
|
obs_horizon: 1
|
||||||
action_horizon: 8
|
action_horizon: 8
|
||||||
camera_names: ['r_vis', 'top'] # ['angle', 'r_vis', 'top']
|
camera_names: ['r_vis', 'top', 'front'] # ['angle', 'r_vis', 'top']
|
||||||
normalization_type: 'gaussian' # 'min_max' or 'gaussian'
|
normalization_type: 'gaussian' # 'min_max' or 'gaussian'
|
||||||
@@ -13,7 +13,7 @@ class RobotDiffusionDataset(Dataset):
|
|||||||
pred_horizon=16,
|
pred_horizon=16,
|
||||||
obs_horizon=2,
|
obs_horizon=2,
|
||||||
action_horizon=8,
|
action_horizon=8,
|
||||||
camera_names=['r_vis', 'top'],
|
camera_names=['r_vis', 'top', 'front'],
|
||||||
normalization_type='gaussian'):
|
normalization_type='gaussian'):
|
||||||
"""
|
"""
|
||||||
Args:
|
Args:
|
||||||
|
|||||||
Reference in New Issue
Block a user