serialexperimentsleon commited on
Commit
7fe6607
·
verified ·
1 Parent(s): faced6f

Add files using upload-large-folder tool

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +30 -0
  2. 4eqzqa4m/.hydra/config.yaml +350 -0
  3. 4eqzqa4m/.hydra/hydra.yaml +169 -0
  4. 4eqzqa4m/.hydra/overrides.yaml +3 -0
  5. 4eqzqa4m/eval_robot.log +7 -0
  6. bjqhpdkd/.hydra/config.yaml +350 -0
  7. bjqhpdkd/.hydra/hydra.yaml +169 -0
  8. bjqhpdkd/.hydra/overrides.yaml +3 -0
  9. bjqhpdkd/eval_policy.log +15 -0
  10. config.yaml +546 -0
  11. gdvjvd8r/.hydra/config.yaml +350 -0
  12. gdvjvd8r/.hydra/hydra.yaml +169 -0
  13. gdvjvd8r/.hydra/overrides.yaml +3 -0
  14. gdvjvd8r/eval_policy.log +15 -0
  15. jrll14xh/.hydra/config.yaml +350 -0
  16. jrll14xh/.hydra/hydra.yaml +169 -0
  17. jrll14xh/.hydra/overrides.yaml +3 -0
  18. jrll14xh/eval_policy.log +7 -0
  19. jrmd8cpt/.hydra/config.yaml +350 -0
  20. jrmd8cpt/.hydra/hydra.yaml +169 -0
  21. jrmd8cpt/.hydra/overrides.yaml +3 -0
  22. jrmd8cpt/eval_policy.log +15 -0
  23. p96n5ha2/.hydra/config.yaml +350 -0
  24. p96n5ha2/.hydra/hydra.yaml +169 -0
  25. p96n5ha2/.hydra/overrides.yaml +3 -0
  26. p96n5ha2/episode_rosbags/aligned_depth_to_color_K.npy +3 -0
  27. p96n5ha2/episode_rosbags/cam_tf_world.npy +3 -0
  28. p96n5ha2/episode_rosbags/color_K.npy +3 -0
  29. p96n5ha2/episode_rosbags/depth_K.npy +3 -0
  30. p96n5ha2/eval_robot.log +12 -0
  31. p96n5ha2/eval_video/0_eval.mp4 +3 -0
  32. p96n5ha2/eval_video/1_eval.mp4 +3 -0
  33. p96n5ha2/eval_video/2_eval.mp4 +3 -0
  34. p96n5ha2/eval_video/3_eval.mp4 +3 -0
  35. p96n5ha2/eval_video/4_eval.mp4 +3 -0
  36. p96n5ha2/tb/events.out.tfevents.1735963111.leonmkim-ROG-Strix-G15CS-G15CS.1990442.0 +3 -0
  37. p96n5ha2/wandb/debug-internal.log +0 -0
  38. p96n5ha2/wandb/debug.log +31 -0
  39. p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/code/FISH/eval_robot.py +605 -0
  40. p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/config.yaml +895 -0
  41. p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/diff.patch +56 -0
  42. p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/table/eval/success_rate_ci_5_21a9f3410d4e4ea9386f.table.json +1 -0
  43. p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/table/eval/total_success_rate_ci_6_b44f9defe3679a919f05.table.json +1 -0
  44. p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/videos/eval/0_eval_0_5e4793e12534ec85ec65.mp4 +3 -0
  45. p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/videos/eval/1_eval_1_d3ea4408164b8a140674.mp4 +3 -0
  46. p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/videos/eval/2_eval_2_352b7f510e51bce38993.mp4 +3 -0
  47. p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/videos/eval/3_eval_3_0172777c44cdec6ec773.mp4 +3 -0
  48. p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/videos/eval/4_eval_4_6398d8b01df3925cc7cf.mp4 +3 -0
  49. p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/output.log +280 -0
  50. p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/requirements.txt +340 -0
.gitattributes CHANGED
@@ -33,3 +33,33 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/videos/eval/3_eval_3_0172777c44cdec6ec773.mp4 filter=lfs diff=lfs merge=lfs -text
37
+ p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/videos/eval/4_eval_4_6398d8b01df3925cc7cf.mp4 filter=lfs diff=lfs merge=lfs -text
38
+ p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/videos/eval/0_eval_0_5e4793e12534ec85ec65.mp4 filter=lfs diff=lfs merge=lfs -text
39
+ p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/videos/eval/1_eval_1_d3ea4408164b8a140674.mp4 filter=lfs diff=lfs merge=lfs -text
40
+ p96n5ha2/eval_video/3_eval.mp4 filter=lfs diff=lfs merge=lfs -text
41
+ p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/videos/eval/2_eval_2_352b7f510e51bce38993.mp4 filter=lfs diff=lfs merge=lfs -text
42
+ p96n5ha2/eval_video/1_eval.mp4 filter=lfs diff=lfs merge=lfs -text
43
+ p96n5ha2/eval_video/4_eval.mp4 filter=lfs diff=lfs merge=lfs -text
44
+ p96n5ha2/eval_video/0_eval.mp4 filter=lfs diff=lfs merge=lfs -text
45
+ p96n5ha2/eval_video/2_eval.mp4 filter=lfs diff=lfs merge=lfs -text
46
+ zc0axaef/wandb/run-20250104_212854-zc0axaef/files/media/videos/eval/0_eval_0_bca31b73a362a77729e6.mp4 filter=lfs diff=lfs merge=lfs -text
47
+ zc0axaef/wandb/run-20250104_212854-zc0axaef/files/media/videos/eval/4_eval_4_437a72942cf548c76012.mp4 filter=lfs diff=lfs merge=lfs -text
48
+ zc0axaef/wandb/run-20250104_212854-zc0axaef/files/media/videos/eval/1_eval_1_a8aad5392e5c3ede6b22.mp4 filter=lfs diff=lfs merge=lfs -text
49
+ zc0axaef/wandb/run-20250104_212854-zc0axaef/files/media/videos/eval/2_eval_2_1549db807633e3cb22e5.mp4 filter=lfs diff=lfs merge=lfs -text
50
+ zc0axaef/wandb/run-20250104_212854-zc0axaef/files/media/videos/eval/3_eval_3_adddad7f6c8f1225cb18.mp4 filter=lfs diff=lfs merge=lfs -text
51
+ zc0axaef/eval_video/3_eval.mp4 filter=lfs diff=lfs merge=lfs -text
52
+ zc0axaef/eval_video/4_eval.mp4 filter=lfs diff=lfs merge=lfs -text
53
+ zc0axaef/eval_video/1_eval.mp4 filter=lfs diff=lfs merge=lfs -text
54
+ zc0axaef/eval_video/2_eval.mp4 filter=lfs diff=lfs merge=lfs -text
55
+ zc0axaef/eval_video/0_eval.mp4 filter=lfs diff=lfs merge=lfs -text
56
+ y2m69p6z/episode_rosbags/episode_1_2025-01-04-20-44-19.bag filter=lfs diff=lfs merge=lfs -text
57
+ y2m69p6z/wandb/run-20250104_204257-y2m69p6z/files/media/videos/eval/1_eval_1_4fd84dcdc6f80f9d2f97.mp4 filter=lfs diff=lfs merge=lfs -text
58
+ y2m69p6z/wandb/run-20250104_204257-y2m69p6z/files/media/videos/eval/0_eval_0_4268b13f1b81246fc5ef.mp4 filter=lfs diff=lfs merge=lfs -text
59
+ y2m69p6z/wandb/run-20250104_204257-y2m69p6z/files/media/videos/eval/3_eval_3_306a5f59512b8e5f211d.mp4 filter=lfs diff=lfs merge=lfs -text
60
+ y2m69p6z/wandb/run-20250104_204257-y2m69p6z/files/media/videos/eval/2_eval_2_0084bdfe26b3780f6bfb.mp4 filter=lfs diff=lfs merge=lfs -text
61
+ y2m69p6z/wandb/run-20250104_204257-y2m69p6z/files/media/videos/eval/4_eval_4_b20e8a1be33290d88548.mp4 filter=lfs diff=lfs merge=lfs -text
62
+ y2m69p6z/eval_video/3_eval.mp4 filter=lfs diff=lfs merge=lfs -text
63
+ y2m69p6z/eval_video/4_eval.mp4 filter=lfs diff=lfs merge=lfs -text
64
+ y2m69p6z/eval_video/1_eval.mp4 filter=lfs diff=lfs merge=lfs -text
65
+ y2m69p6z/eval_video/2_eval.mp4 filter=lfs diff=lfs merge=lfs -text
4eqzqa4m/.hydra/config.yaml ADDED
@@ -0,0 +1,350 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ root_dir: /home/${oc.env:USER}/fish_leon
2
+ nstep: 3
3
+ seed: 41
4
+ dataset_shuffle_seed: ${seed}
5
+ device: cuda
6
+ save_video: true
7
+ save_buffer: true
8
+ use_tb: true
9
+ baseline: false
10
+ use_wandb: true
11
+ eval: true
12
+ process_contact_features: ${eval}
13
+ obs_type: pixels
14
+ use_color: true
15
+ use_depth: true
16
+ use_masks: false
17
+ mask_list:
18
+ - EE_obj_mask
19
+ mask_representation: channels
20
+ crop_hw:
21
+ - 144
22
+ - 144
23
+ crop_down_offset: 48
24
+ color_crop_type: null
25
+ depth_crop_type: null
26
+ segmask_crop_type: null
27
+ add_crop_binary_mask: false
28
+ add_coord_conv_map: false
29
+ use_context_color: false
30
+ use_context_depth: false
31
+ use_context_segmask: false
32
+ context_color_crop_type: null
33
+ context_depth_crop_type: null
34
+ context_segmask_crop_type: null
35
+ context_add_crop_binary_mask: false
36
+ context_add_coord_conv_map: false
37
+ use_contact_map: false
38
+ use_sdf_maps: false
39
+ use_normals_maps: false
40
+ which_objects: both
41
+ max_contact_prob: 0.1
42
+ max_depth: 2.0
43
+ grasped_dtc_max_value: 0.105
44
+ env_dtc_max_value: 0.425
45
+ grasped_normals_mask_max_dtc_value: 0.105
46
+ env_normals_mask_max_dtc_value: 0.425
47
+ clamp_dtc: true
48
+ dtc_adaptive_normalization: false
49
+ mask_normals_within_sdf: true
50
+ adaptive_normals_mask: true
51
+ learnable_contact_preprocess_params: false
52
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_ctxt_seed_183386_epoch_9
53
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
54
+ num_eval: 5
55
+ debug_timestamps: false
56
+ open_loop: false
57
+ action_trajectories: true
58
+ stop_after_action: false
59
+ interpolation_frequency: 25
60
+ policy_frequency: 5
61
+ wait_for_new_camera_frames: true
62
+ random_start: false
63
+ eval_starts: ${root_dir}/FISH/eval_starts/${suite.name}_${obs_type}/${task_name}
64
+ train_demo_idxs_list_or_num: null
65
+ num_valid_demos: null
66
+ val_num_groups: 3
67
+ name_of_expert_demo: 112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
68
+ expert_dataset_dirpath: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_expert_demo}
69
+ expert_dataset: ${expert_dataset_dirpath}/demos.zarr
70
+ action_key: ${oc.if_else:${action_trajectories}, 'action_trajectory_${interpolation_frequency}hz',
71
+ 'action'}
72
+ semantic_demo_grouping_name: semantic_demo_grouping.yaml
73
+ semantic_demo_grouping: ${expert_dataset_dirpath}/${semantic_demo_grouping_name}
74
+ expert_dataset_config: ${expert_dataset_dirpath}/demo_config.yaml
75
+ bc_regularize: false
76
+ bc_weight_type: qfilter
77
+ load_checkpoint: ${agent.load_checkpoint}
78
+ wandb_run_id: '1926_1'
79
+ true_action_history: false
80
+ wandb_notes: null
81
+ checkpoint_epoch: 12000
82
+ load_residual_weight: false
83
+ checkpoint_root_dir: /home/${oc.env:USER}/fish_leon/FISH
84
+ checkpoint_weight_dir: ${checkpoint_root_dir}/exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
85
+ residual_weight: ${root_dir}/FISH/weights/${suite.name}_${obs_type}/${task_name}/weight.pt
86
+ experiment_dir: ./exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
87
+ final_experiment_dir: ${experiment_dir}/${oc.generate_run_id:}
88
+ agent:
89
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
90
+ name: diffusion_policy
91
+ load_checkpoint: ${eval}
92
+ device: ${device}
93
+ n_obs_steps: ${.config.policy_cfg.n_obs_steps}
94
+ suite_name: ${suite.name}
95
+ obs_type: ${obs_type}
96
+ enable_arm: ${eval}
97
+ enable_camera: ${eval}
98
+ use_tb: ${use_tb}
99
+ desired_image_shape:
100
+ - 13
101
+ - 180
102
+ - 240
103
+ orig_cam_shape:
104
+ - 3
105
+ - 240
106
+ - 320
107
+ config:
108
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
109
+ compile: false
110
+ device: ${device}
111
+ cam_resize_shape: ${agent.desired_image_shape}
112
+ orig_cam_shape: ${agent.orig_cam_shape}
113
+ policy_frequency: ${policy_frequency}
114
+ interpolation_frequency: ${interpolation_frequency}
115
+ policy_cfg:
116
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
117
+ n_obs_steps: 1
118
+ horizon: 36
119
+ n_action_steps: ${agent.config.policy_cfg.horizon}
120
+ input_shapes:
121
+ observation.image: ${agent.config.cam_resize_shape}
122
+ context_observation.image: ${agent.config.cam_resize_shape}
123
+ observation.state:
124
+ - 8
125
+ observation.action_history:
126
+ - 7
127
+ output_shapes:
128
+ action:
129
+ - 7
130
+ input_normalization_modes:
131
+ observation.image: mean_std
132
+ observation.state: min_max
133
+ observation.action_history: min_max
134
+ output_normalization_modes:
135
+ action: min_max
136
+ vision_backbone: resnet18
137
+ pretrained_backbone_weights: null
138
+ transforms:
139
+ - _target_: torchaug.transforms.RandomAffine
140
+ degrees:
141
+ - -5
142
+ - 5
143
+ translate:
144
+ - 0.05
145
+ - 0.05
146
+ batch_transform: true
147
+ num_chunks: -1
148
+ batch_inplace: true
149
+ - _target_: torchaug.transforms.RandomColorJitter
150
+ brightness: 0.3
151
+ contrast: 0.4
152
+ saturation: 0.5
153
+ hue: 0.08
154
+ batch_transform: true
155
+ num_chunks: -1
156
+ batch_inplace: true
157
+ use_group_norm: true
158
+ spatial_softmax_num_keypoints: 32
159
+ action_history_encoder_config:
160
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
161
+ in_channels: 7
162
+ out_channels: 32
163
+ history_length: ${agent.config.policy_cfg.n_action_steps}
164
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
165
+ downsample_kernel_size: 3
166
+ downsample_stride: 2
167
+ downsample_padding: 1
168
+ down_dims:
169
+ - 256
170
+ - 512
171
+ - 1024
172
+ kernel_size: 5
173
+ n_groups: 8
174
+ diffusion_step_embed_dim: 128
175
+ use_film_scale_modulation: true
176
+ noise_scheduler_type: DDIM
177
+ beta_schedule: squaredcos_cap_v2
178
+ beta_start: 0.0001
179
+ beta_end: 0.02
180
+ prediction_type: epsilon
181
+ clip_sample: true
182
+ clip_sample_range: 1.0
183
+ num_train_timesteps: 50
184
+ num_inference_steps: 10
185
+ do_mask_loss_for_padding: false
186
+ train_cfg:
187
+ _target_: utils.TrainConfig
188
+ lr: 0.0001
189
+ lr_scheduler: cosine
190
+ lr_warmup_steps: 500
191
+ adam_betas:
192
+ - 0.95
193
+ - 0.999
194
+ adam_eps: 1.0e-08
195
+ adam_weight_decay: 1.0e-06
196
+ grad_clip_norm: 10
197
+ offline_steps: ${num_train_frames_diffusion}
198
+ use_amp: true
199
+ observation_cfg:
200
+ _target_: agent.encoder.VisualFeatureSet
201
+ use_depth: ${use_depth}
202
+ use_color: ${use_color}
203
+ mask_input_dict:
204
+ _target_: agent.encoder.MaskInputDict
205
+ enable: ${use_masks}
206
+ representation: ${mask_representation}
207
+ mask_list: ${mask_list}
208
+ crop_input_config:
209
+ _target_: agent.encoder.CropInputConfig
210
+ color_crop_type: ${color_crop_type}
211
+ depth_crop_type: ${depth_crop_type}
212
+ segmask_crop_type: ${segmask_crop_type}
213
+ crop_hw: ${crop_hw}
214
+ crop_down_offset: ${crop_down_offset}
215
+ add_crop_binary_mask: ${add_crop_binary_mask}
216
+ add_coord_conv_map: ${add_coord_conv_map}
217
+ context_input_config:
218
+ _target_: agent.encoder.ContextInputConfig
219
+ use_color: ${use_context_color}
220
+ use_depth: ${use_context_depth}
221
+ mask_input_dict:
222
+ _target_: agent.encoder.MaskInputDict
223
+ enable: ${use_context_segmask}
224
+ representation: ${mask_representation}
225
+ mask_list: ${mask_list}
226
+ crop_input_config:
227
+ _target_: agent.encoder.CropInputConfig
228
+ color_crop_type: ${context_color_crop_type}
229
+ depth_crop_type: ${context_depth_crop_type}
230
+ segmask_crop_type: ${context_segmask_crop_type}
231
+ crop_hw: ${crop_hw}
232
+ crop_down_offset: ${crop_down_offset}
233
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
234
+ add_coord_conv_map: ${context_add_coord_conv_map}
235
+ mask_soft_approx_scheduler_config:
236
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
237
+ num_steps: 40000
238
+ initial_value: 10.0
239
+ final_value: 1000.0
240
+ interpolation_scheme: constant
241
+ use_contact_map: ${use_contact_map}
242
+ use_sdf_maps: ${use_sdf_maps}
243
+ use_normals_maps: ${use_normals_maps}
244
+ which_objects: ${which_objects}
245
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
246
+ env_dtc_max_value: ${env_dtc_max_value}
247
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
248
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
249
+ clamp_dtc: ${clamp_dtc}
250
+ max_contact_prob: ${max_contact_prob}
251
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
252
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
253
+ adaptive_normals_mask: ${adaptive_normals_mask}
254
+ max_depth: ${max_depth}
255
+ image_shape: ${agent.desired_image_shape}
256
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
257
+ learning_rate: ${agent.config.train_cfg.lr}
258
+ weight_decay: 0.0
259
+ contact_model_name: ${contact_model_name}
260
+ zero_centered: false
261
+ suite:
262
+ suite: frankagym
263
+ name: frankagym
264
+ frame_stack: ${agent.n_obs_steps}
265
+ action_repeat: 1
266
+ discount: 0.99
267
+ hidden_dim: 1024
268
+ num_train_frames: 2010
269
+ num_seed_frames: 260
270
+ num_train_epochs: 5000
271
+ validate_every_epochs: 100
272
+ validate_diffusion_on_action_loss_every_epochs: 500
273
+ train_eval_diffusion_on_action_loss_every_epochs: 500
274
+ check_topk_every_epochs: 10
275
+ save_snapshot_every_epochs: 5000
276
+ eval_every_frames: 2000
277
+ num_eval_episodes: 5
278
+ save_snapshot: true
279
+ wait_for_user_to_start_episode: true
280
+ task_make_fn:
281
+ _target_: suite.frankagym.make
282
+ name: ${task_name}
283
+ height: 240
284
+ width: 320
285
+ frame_stack: ${suite.frame_stack}
286
+ action_repeat: ${suite.action_repeat}
287
+ seed: ${seed}
288
+ enable_arm: ${agent.enable_arm}
289
+ enable_gripper: ${enable_gripper}
290
+ start_with_gripper_open: ${start_with_gripper_open}
291
+ enable_camera: ${agent.enable_camera}
292
+ path_to_depth_extrinsics: ${path_to_depth_extrinsics}
293
+ contact_estimation_model_ckpt_path: ${contact_estimation_model_ckpt_path}
294
+ x_limit: ${x_limit}
295
+ y_limit: ${y_limit}
296
+ z_limit: ${z_limit}
297
+ device: ${device}
298
+ interpolation_frequency: ${interpolation_frequency}
299
+ policy_frequency: ${policy_frequency}
300
+ debug_timestamps: ${debug_timestamps}
301
+ stop_after_action: ${stop_after_action}
302
+ open_loop: ${open_loop}
303
+ wait_for_new_camera_frames: ${wait_for_new_camera_frames}
304
+ action_key: ${action_key}
305
+ action_trajectory_horizon: ${agent.config.policy_cfg.horizon}
306
+ action_trajectories: ${action_trajectories}
307
+ path_to_zarr_dataset: ${expert_dataset}
308
+ agent_policy_cfg: ???
309
+ true_action_history: ${true_action_history}
310
+ num_train_frames_bc: 50000
311
+ num_train_frames_drq: 1100000
312
+ stddev_schedule_drq: linear(1.0,0.1,100000)
313
+ task_name: FrankaInsertion-v1
314
+ num_train_frames_vinn: 25000
315
+ num_train_frames_diffusion: 1000000
316
+ num_train_epochs_bc: 5000
317
+ num_train_epochs_diffusion: 5000
318
+ validate_every_epochs_bc: 5
319
+ validate_every_epochs_diffusion: 25
320
+ validate_diffusion_on_action_loss_every_epochs: 50
321
+ train_eval_diffusion_on_action_loss_every_epochs: 500
322
+ check_topk_every_epochs: 5
323
+ check_topk_every_epochs_diffusion: ${validate_diffusion_on_action_loss_every_epochs}
324
+ save_snapshot_every_epochs_diffusion: 5000
325
+ x_limit:
326
+ - 0.2
327
+ - 0.7
328
+ y_limit:
329
+ - -0.4
330
+ - 0.4
331
+ z_limit:
332
+ - -0.05
333
+ - 0.55
334
+ home_displacement:
335
+ - 0.55
336
+ - 0.0
337
+ - 0.55
338
+ - 180.0
339
+ - 0.0
340
+ - 0.0
341
+ enable_gripper: true
342
+ start_with_gripper_open: true
343
+ offset_mask:
344
+ - 1
345
+ - 1
346
+ - 1
347
+ - 1
348
+ - 1
349
+ - 1
350
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
4eqzqa4m/.hydra/hydra.yaml ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ hydra:
2
+ run:
3
+ dir: ${final_experiment_dir}
4
+ sweep:
5
+ dir: ${final_experiment_dir}
6
+ subdir: ${hydra.job.num}
7
+ launcher:
8
+ submitit_folder: ${final_experiment_dir}/.slurm
9
+ timeout_min: 60
10
+ cpus_per_task: null
11
+ gpus_per_node: null
12
+ tasks_per_node: 1
13
+ mem_gb: null
14
+ nodes: 1
15
+ name: ${hydra.job.name}
16
+ stderr_to_stdout: false
17
+ _target_: hydra_plugins.hydra_submitit_launcher.submitit_launcher.LocalLauncher
18
+ sweeper:
19
+ _target_: hydra._internal.core_plugins.basic_sweeper.BasicSweeper
20
+ max_batch_size: null
21
+ params: null
22
+ help:
23
+ app_name: ${hydra.job.name}
24
+ header: '${hydra.help.app_name} is powered by Hydra.
25
+
26
+ '
27
+ footer: 'Powered by Hydra (https://hydra.cc)
28
+
29
+ Use --hydra-help to view Hydra specific help
30
+
31
+ '
32
+ template: '${hydra.help.header}
33
+
34
+ == Configuration groups ==
35
+
36
+ Compose your configuration from those groups (group=option)
37
+
38
+
39
+ $APP_CONFIG_GROUPS
40
+
41
+
42
+ == Config ==
43
+
44
+ Override anything in the config (foo.bar=value)
45
+
46
+
47
+ $CONFIG
48
+
49
+
50
+ ${hydra.help.footer}
51
+
52
+ '
53
+ hydra_help:
54
+ template: 'Hydra (${hydra.runtime.version})
55
+
56
+ See https://hydra.cc for more info.
57
+
58
+
59
+ == Flags ==
60
+
61
+ $FLAGS_HELP
62
+
63
+
64
+ == Configuration groups ==
65
+
66
+ Compose your configuration from those groups (For example, append hydra/job_logging=disabled
67
+ to command line)
68
+
69
+
70
+ $HYDRA_CONFIG_GROUPS
71
+
72
+
73
+ Use ''--cfg hydra'' to Show the Hydra config.
74
+
75
+ '
76
+ hydra_help: ???
77
+ hydra_logging:
78
+ version: 1
79
+ formatters:
80
+ simple:
81
+ format: '[%(asctime)s][HYDRA] %(message)s'
82
+ handlers:
83
+ console:
84
+ class: logging.StreamHandler
85
+ formatter: simple
86
+ stream: ext://sys.stdout
87
+ root:
88
+ level: INFO
89
+ handlers:
90
+ - console
91
+ loggers:
92
+ logging_example:
93
+ level: DEBUG
94
+ disable_existing_loggers: false
95
+ job_logging:
96
+ version: 1
97
+ formatters:
98
+ simple:
99
+ format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s'
100
+ handlers:
101
+ console:
102
+ class: logging.StreamHandler
103
+ formatter: simple
104
+ stream: ext://sys.stdout
105
+ file:
106
+ class: logging.FileHandler
107
+ formatter: simple
108
+ filename: ${hydra.runtime.output_dir}/${hydra.job.name}.log
109
+ root:
110
+ level: INFO
111
+ handlers:
112
+ - console
113
+ - file
114
+ disable_existing_loggers: false
115
+ env: {}
116
+ mode: RUN
117
+ searchpath: []
118
+ callbacks: {}
119
+ output_subdir: .hydra
120
+ overrides:
121
+ hydra:
122
+ - hydra.mode=RUN
123
+ task:
124
+ - agent=diffusion
125
+ - suite=frankagym
126
+ - suite/frankagym_task@_global_=insertion
127
+ job:
128
+ name: eval_robot
129
+ chdir: true
130
+ override_dirname: agent=diffusion,suite/frankagym_task@_global_=insertion,suite=frankagym
131
+ id: ???
132
+ num: ???
133
+ config_name: config_eval
134
+ env_set: {}
135
+ env_copy: []
136
+ config:
137
+ override_dirname:
138
+ kv_sep: '='
139
+ item_sep: ','
140
+ exclude_keys: []
141
+ runtime:
142
+ version: 1.3.2
143
+ version_base: '1.1'
144
+ cwd: /home/leonmkim/fish_leon/FISH
145
+ config_sources:
146
+ - path: hydra.conf
147
+ schema: pkg
148
+ provider: hydra
149
+ - path: /home/leonmkim/fish_leon/FISH/cfgs
150
+ schema: file
151
+ provider: main
152
+ - path: ''
153
+ schema: structured
154
+ provider: schema
155
+ output_dir: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/4eqzqa4m
156
+ choices:
157
+ suite: frankagym
158
+ suite/frankagym_task@_global_: insertion
159
+ agent: diffusion
160
+ hydra/env: default
161
+ hydra/callbacks: null
162
+ hydra/job_logging: default
163
+ hydra/hydra_logging: default
164
+ hydra/hydra_help: default
165
+ hydra/help: default
166
+ hydra/sweeper: basic
167
+ hydra/launcher: submitit_local
168
+ hydra/output: default
169
+ verbose: false
4eqzqa4m/.hydra/overrides.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ - agent=diffusion
2
+ - suite=frankagym
3
+ - suite/frankagym_task@_global_=insertion
4eqzqa4m/eval_robot.log ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ [2025-01-03 20:23:15,016][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_robot.py:596: UserWarning:
2
+ The version_base parameter is not specified.
3
+ Please specify a compatability version level, or None.
4
+ Will assume defaults for version 1.1
5
+ @hydra.main(config_path='cfgs', config_name='config_eval')
6
+
7
+ [2025-01-03 20:23:15,020][rospy.core][INFO] - signal_shutdown [atexit]
bjqhpdkd/.hydra/config.yaml ADDED
@@ -0,0 +1,350 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ root_dir: /home/${oc.env:USER}/fish_leon
2
+ nstep: 3
3
+ seed: 41
4
+ dataset_shuffle_seed: ${seed}
5
+ device: cuda
6
+ save_video: true
7
+ save_buffer: true
8
+ use_tb: true
9
+ baseline: false
10
+ use_wandb: true
11
+ eval: true
12
+ process_contact_features: ${eval}
13
+ obs_type: pixels
14
+ use_color: true
15
+ use_depth: true
16
+ use_masks: false
17
+ mask_list:
18
+ - EE_obj_mask
19
+ mask_representation: channels
20
+ crop_hw:
21
+ - 144
22
+ - 144
23
+ crop_down_offset: 48
24
+ color_crop_type: null
25
+ depth_crop_type: null
26
+ segmask_crop_type: null
27
+ add_crop_binary_mask: false
28
+ add_coord_conv_map: false
29
+ use_context_color: false
30
+ use_context_depth: false
31
+ use_context_segmask: false
32
+ context_color_crop_type: null
33
+ context_depth_crop_type: null
34
+ context_segmask_crop_type: null
35
+ context_add_crop_binary_mask: false
36
+ context_add_coord_conv_map: false
37
+ use_contact_map: false
38
+ use_sdf_maps: false
39
+ use_normals_maps: false
40
+ which_objects: both
41
+ max_contact_prob: 0.1
42
+ max_depth: 2.0
43
+ grasped_dtc_max_value: 0.105
44
+ env_dtc_max_value: 0.425
45
+ grasped_normals_mask_max_dtc_value: 0.105
46
+ env_normals_mask_max_dtc_value: 0.425
47
+ clamp_dtc: true
48
+ dtc_adaptive_normalization: false
49
+ mask_normals_within_sdf: true
50
+ adaptive_normals_mask: true
51
+ learnable_contact_preprocess_params: false
52
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_ctxt_seed_183386_epoch_9
53
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
54
+ num_eval: 5
55
+ debug_timestamps: false
56
+ open_loop: false
57
+ action_trajectories: true
58
+ stop_after_action: false
59
+ interpolation_frequency: 25
60
+ policy_frequency: 5
61
+ wait_for_new_camera_frames: true
62
+ random_start: false
63
+ eval_starts: ${root_dir}/FISH/eval_starts/${suite.name}_${obs_type}/${task_name}
64
+ train_demo_idxs_list_or_num: null
65
+ num_valid_demos: null
66
+ val_num_groups: 3
67
+ name_of_expert_demo: 112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
68
+ expert_dataset_dirpath: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_expert_demo}
69
+ expert_dataset: ${expert_dataset_dirpath}/demos.zarr
70
+ action_key: ${oc.if_else:${action_trajectories}, 'action_trajectory_${interpolation_frequency}hz',
71
+ 'action'}
72
+ semantic_demo_grouping_name: semantic_demo_grouping.yaml
73
+ semantic_demo_grouping: ${expert_dataset_dirpath}/${semantic_demo_grouping_name}
74
+ expert_dataset_config: ${expert_dataset_dirpath}/demo_config.yaml
75
+ bc_regularize: false
76
+ bc_weight_type: qfilter
77
+ load_checkpoint: ${agent.load_checkpoint}
78
+ wandb_run_id: '1926_1'
79
+ true_action_history: false
80
+ wandb_notes: null
81
+ checkpoint_epoch: 12000
82
+ load_residual_weight: false
83
+ checkpoint_root_dir: /home/${oc.env:USER}/fish_leon/FISH
84
+ checkpoint_weight_dir: ${checkpoint_root_dir}/exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
85
+ residual_weight: ${root_dir}/FISH/weights/${suite.name}_${obs_type}/${task_name}/weight.pt
86
+ experiment_dir: ./exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
87
+ final_experiment_dir: ${experiment_dir}/${oc.generate_run_id:}
88
+ agent:
89
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
90
+ name: diffusion_policy
91
+ load_checkpoint: ${eval}
92
+ device: ${device}
93
+ n_obs_steps: ${.config.policy_cfg.n_obs_steps}
94
+ suite_name: ${suite.name}
95
+ obs_type: ${obs_type}
96
+ enable_arm: ${eval}
97
+ enable_camera: ${eval}
98
+ use_tb: ${use_tb}
99
+ desired_image_shape:
100
+ - 13
101
+ - 180
102
+ - 240
103
+ orig_cam_shape:
104
+ - 3
105
+ - 240
106
+ - 320
107
+ config:
108
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
109
+ compile: false
110
+ device: ${device}
111
+ cam_resize_shape: ${agent.desired_image_shape}
112
+ orig_cam_shape: ${agent.orig_cam_shape}
113
+ policy_frequency: ${policy_frequency}
114
+ interpolation_frequency: ${interpolation_frequency}
115
+ policy_cfg:
116
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
117
+ n_obs_steps: 1
118
+ horizon: 36
119
+ n_action_steps: ${agent.config.policy_cfg.horizon}
120
+ input_shapes:
121
+ observation.image: ${agent.config.cam_resize_shape}
122
+ context_observation.image: ${agent.config.cam_resize_shape}
123
+ observation.state:
124
+ - 8
125
+ observation.action_history:
126
+ - 7
127
+ output_shapes:
128
+ action:
129
+ - 7
130
+ input_normalization_modes:
131
+ observation.image: mean_std
132
+ observation.state: min_max
133
+ observation.action_history: min_max
134
+ output_normalization_modes:
135
+ action: min_max
136
+ vision_backbone: resnet18
137
+ pretrained_backbone_weights: null
138
+ transforms:
139
+ - _target_: torchaug.transforms.RandomAffine
140
+ degrees:
141
+ - -5
142
+ - 5
143
+ translate:
144
+ - 0.05
145
+ - 0.05
146
+ batch_transform: true
147
+ num_chunks: -1
148
+ batch_inplace: true
149
+ - _target_: torchaug.transforms.RandomColorJitter
150
+ brightness: 0.3
151
+ contrast: 0.4
152
+ saturation: 0.5
153
+ hue: 0.08
154
+ batch_transform: true
155
+ num_chunks: -1
156
+ batch_inplace: true
157
+ use_group_norm: true
158
+ spatial_softmax_num_keypoints: 32
159
+ action_history_encoder_config:
160
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
161
+ in_channels: 7
162
+ out_channels: 32
163
+ history_length: ${agent.config.policy_cfg.n_action_steps}
164
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
165
+ downsample_kernel_size: 3
166
+ downsample_stride: 2
167
+ downsample_padding: 1
168
+ down_dims:
169
+ - 256
170
+ - 512
171
+ - 1024
172
+ kernel_size: 5
173
+ n_groups: 8
174
+ diffusion_step_embed_dim: 128
175
+ use_film_scale_modulation: true
176
+ noise_scheduler_type: DDIM
177
+ beta_schedule: squaredcos_cap_v2
178
+ beta_start: 0.0001
179
+ beta_end: 0.02
180
+ prediction_type: epsilon
181
+ clip_sample: true
182
+ clip_sample_range: 1.0
183
+ num_train_timesteps: 50
184
+ num_inference_steps: 10
185
+ do_mask_loss_for_padding: false
186
+ train_cfg:
187
+ _target_: utils.TrainConfig
188
+ lr: 0.0001
189
+ lr_scheduler: cosine
190
+ lr_warmup_steps: 500
191
+ adam_betas:
192
+ - 0.95
193
+ - 0.999
194
+ adam_eps: 1.0e-08
195
+ adam_weight_decay: 1.0e-06
196
+ grad_clip_norm: 10
197
+ offline_steps: ${num_train_frames_diffusion}
198
+ use_amp: true
199
+ observation_cfg:
200
+ _target_: agent.encoder.VisualFeatureSet
201
+ use_depth: ${use_depth}
202
+ use_color: ${use_color}
203
+ mask_input_dict:
204
+ _target_: agent.encoder.MaskInputDict
205
+ enable: ${use_masks}
206
+ representation: ${mask_representation}
207
+ mask_list: ${mask_list}
208
+ crop_input_config:
209
+ _target_: agent.encoder.CropInputConfig
210
+ color_crop_type: ${color_crop_type}
211
+ depth_crop_type: ${depth_crop_type}
212
+ segmask_crop_type: ${segmask_crop_type}
213
+ crop_hw: ${crop_hw}
214
+ crop_down_offset: ${crop_down_offset}
215
+ add_crop_binary_mask: ${add_crop_binary_mask}
216
+ add_coord_conv_map: ${add_coord_conv_map}
217
+ context_input_config:
218
+ _target_: agent.encoder.ContextInputConfig
219
+ use_color: ${use_context_color}
220
+ use_depth: ${use_context_depth}
221
+ mask_input_dict:
222
+ _target_: agent.encoder.MaskInputDict
223
+ enable: ${use_context_segmask}
224
+ representation: ${mask_representation}
225
+ mask_list: ${mask_list}
226
+ crop_input_config:
227
+ _target_: agent.encoder.CropInputConfig
228
+ color_crop_type: ${context_color_crop_type}
229
+ depth_crop_type: ${context_depth_crop_type}
230
+ segmask_crop_type: ${context_segmask_crop_type}
231
+ crop_hw: ${crop_hw}
232
+ crop_down_offset: ${crop_down_offset}
233
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
234
+ add_coord_conv_map: ${context_add_coord_conv_map}
235
+ mask_soft_approx_scheduler_config:
236
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
237
+ num_steps: 40000
238
+ initial_value: 10.0
239
+ final_value: 1000.0
240
+ interpolation_scheme: constant
241
+ use_contact_map: ${use_contact_map}
242
+ use_sdf_maps: ${use_sdf_maps}
243
+ use_normals_maps: ${use_normals_maps}
244
+ which_objects: ${which_objects}
245
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
246
+ env_dtc_max_value: ${env_dtc_max_value}
247
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
248
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
249
+ clamp_dtc: ${clamp_dtc}
250
+ max_contact_prob: ${max_contact_prob}
251
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
252
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
253
+ adaptive_normals_mask: ${adaptive_normals_mask}
254
+ max_depth: ${max_depth}
255
+ image_shape: ${agent.desired_image_shape}
256
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
257
+ learning_rate: ${agent.config.train_cfg.lr}
258
+ weight_decay: 0.0
259
+ contact_model_name: ${contact_model_name}
260
+ zero_centered: false
261
+ suite:
262
+ suite: frankagym
263
+ name: frankagym
264
+ frame_stack: ${agent.n_obs_steps}
265
+ action_repeat: 1
266
+ discount: 0.99
267
+ hidden_dim: 1024
268
+ num_train_frames: 2010
269
+ num_seed_frames: 260
270
+ num_train_epochs: 5000
271
+ validate_every_epochs: 100
272
+ validate_diffusion_on_action_loss_every_epochs: 500
273
+ train_eval_diffusion_on_action_loss_every_epochs: 500
274
+ check_topk_every_epochs: 10
275
+ save_snapshot_every_epochs: 5000
276
+ eval_every_frames: 2000
277
+ num_eval_episodes: 5
278
+ save_snapshot: true
279
+ wait_for_user_to_start_episode: true
280
+ task_make_fn:
281
+ _target_: suite.frankagym.make
282
+ name: ${task_name}
283
+ height: 240
284
+ width: 320
285
+ frame_stack: ${suite.frame_stack}
286
+ action_repeat: ${suite.action_repeat}
287
+ seed: ${seed}
288
+ enable_arm: ${agent.enable_arm}
289
+ enable_gripper: ${enable_gripper}
290
+ start_with_gripper_open: ${start_with_gripper_open}
291
+ enable_camera: ${agent.enable_camera}
292
+ path_to_depth_extrinsics: ${path_to_depth_extrinsics}
293
+ contact_estimation_model_ckpt_path: ${contact_estimation_model_ckpt_path}
294
+ x_limit: ${x_limit}
295
+ y_limit: ${y_limit}
296
+ z_limit: ${z_limit}
297
+ device: ${device}
298
+ interpolation_frequency: ${interpolation_frequency}
299
+ policy_frequency: ${policy_frequency}
300
+ debug_timestamps: ${debug_timestamps}
301
+ stop_after_action: ${stop_after_action}
302
+ open_loop: ${open_loop}
303
+ wait_for_new_camera_frames: ${wait_for_new_camera_frames}
304
+ action_key: ${action_key}
305
+ action_trajectory_horizon: ${agent.config.policy_cfg.horizon}
306
+ action_trajectories: ${action_trajectories}
307
+ path_to_zarr_dataset: ${expert_dataset}
308
+ agent_policy_cfg: ???
309
+ true_action_history: ${true_action_history}
310
+ num_train_frames_bc: 50000
311
+ num_train_frames_drq: 1100000
312
+ stddev_schedule_drq: linear(1.0,0.1,100000)
313
+ task_name: FrankaInsertion-v1
314
+ num_train_frames_vinn: 25000
315
+ num_train_frames_diffusion: 1000000
316
+ num_train_epochs_bc: 5000
317
+ num_train_epochs_diffusion: 5000
318
+ validate_every_epochs_bc: 5
319
+ validate_every_epochs_diffusion: 25
320
+ validate_diffusion_on_action_loss_every_epochs: 50
321
+ train_eval_diffusion_on_action_loss_every_epochs: 500
322
+ check_topk_every_epochs: 5
323
+ check_topk_every_epochs_diffusion: ${validate_diffusion_on_action_loss_every_epochs}
324
+ save_snapshot_every_epochs_diffusion: 5000
325
+ x_limit:
326
+ - 0.2
327
+ - 0.7
328
+ y_limit:
329
+ - -0.4
330
+ - 0.4
331
+ z_limit:
332
+ - -0.05
333
+ - 0.55
334
+ home_displacement:
335
+ - 0.55
336
+ - 0.0
337
+ - 0.55
338
+ - 180.0
339
+ - 0.0
340
+ - 0.0
341
+ enable_gripper: true
342
+ start_with_gripper_open: true
343
+ offset_mask:
344
+ - 1
345
+ - 1
346
+ - 1
347
+ - 1
348
+ - 1
349
+ - 1
350
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
bjqhpdkd/.hydra/hydra.yaml ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ hydra:
2
+ run:
3
+ dir: ${final_experiment_dir}
4
+ sweep:
5
+ dir: ${final_experiment_dir}
6
+ subdir: ${hydra.job.num}
7
+ launcher:
8
+ submitit_folder: ${final_experiment_dir}/.slurm
9
+ timeout_min: 60
10
+ cpus_per_task: null
11
+ gpus_per_node: null
12
+ tasks_per_node: 1
13
+ mem_gb: null
14
+ nodes: 1
15
+ name: ${hydra.job.name}
16
+ stderr_to_stdout: false
17
+ _target_: hydra_plugins.hydra_submitit_launcher.submitit_launcher.LocalLauncher
18
+ sweeper:
19
+ _target_: hydra._internal.core_plugins.basic_sweeper.BasicSweeper
20
+ max_batch_size: null
21
+ params: null
22
+ help:
23
+ app_name: ${hydra.job.name}
24
+ header: '${hydra.help.app_name} is powered by Hydra.
25
+
26
+ '
27
+ footer: 'Powered by Hydra (https://hydra.cc)
28
+
29
+ Use --hydra-help to view Hydra specific help
30
+
31
+ '
32
+ template: '${hydra.help.header}
33
+
34
+ == Configuration groups ==
35
+
36
+ Compose your configuration from those groups (group=option)
37
+
38
+
39
+ $APP_CONFIG_GROUPS
40
+
41
+
42
+ == Config ==
43
+
44
+ Override anything in the config (foo.bar=value)
45
+
46
+
47
+ $CONFIG
48
+
49
+
50
+ ${hydra.help.footer}
51
+
52
+ '
53
+ hydra_help:
54
+ template: 'Hydra (${hydra.runtime.version})
55
+
56
+ See https://hydra.cc for more info.
57
+
58
+
59
+ == Flags ==
60
+
61
+ $FLAGS_HELP
62
+
63
+
64
+ == Configuration groups ==
65
+
66
+ Compose your configuration from those groups (For example, append hydra/job_logging=disabled
67
+ to command line)
68
+
69
+
70
+ $HYDRA_CONFIG_GROUPS
71
+
72
+
73
+ Use ''--cfg hydra'' to Show the Hydra config.
74
+
75
+ '
76
+ hydra_help: ???
77
+ hydra_logging:
78
+ version: 1
79
+ formatters:
80
+ simple:
81
+ format: '[%(asctime)s][HYDRA] %(message)s'
82
+ handlers:
83
+ console:
84
+ class: logging.StreamHandler
85
+ formatter: simple
86
+ stream: ext://sys.stdout
87
+ root:
88
+ level: INFO
89
+ handlers:
90
+ - console
91
+ loggers:
92
+ logging_example:
93
+ level: DEBUG
94
+ disable_existing_loggers: false
95
+ job_logging:
96
+ version: 1
97
+ formatters:
98
+ simple:
99
+ format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s'
100
+ handlers:
101
+ console:
102
+ class: logging.StreamHandler
103
+ formatter: simple
104
+ stream: ext://sys.stdout
105
+ file:
106
+ class: logging.FileHandler
107
+ formatter: simple
108
+ filename: ${hydra.runtime.output_dir}/${hydra.job.name}.log
109
+ root:
110
+ level: INFO
111
+ handlers:
112
+ - console
113
+ - file
114
+ disable_existing_loggers: false
115
+ env: {}
116
+ mode: RUN
117
+ searchpath: []
118
+ callbacks: {}
119
+ output_subdir: .hydra
120
+ overrides:
121
+ hydra:
122
+ - hydra.mode=RUN
123
+ task:
124
+ - agent=diffusion
125
+ - suite=frankagym
126
+ - suite/frankagym_task@_global_=insertion
127
+ job:
128
+ name: eval_policy
129
+ chdir: true
130
+ override_dirname: agent=diffusion,suite/frankagym_task@_global_=insertion,suite=frankagym
131
+ id: ???
132
+ num: ???
133
+ config_name: config_eval
134
+ env_set: {}
135
+ env_copy: []
136
+ config:
137
+ override_dirname:
138
+ kv_sep: '='
139
+ item_sep: ','
140
+ exclude_keys: []
141
+ runtime:
142
+ version: 1.3.2
143
+ version_base: '1.1'
144
+ cwd: /home/leonmkim/fish_leon/FISH
145
+ config_sources:
146
+ - path: hydra.conf
147
+ schema: pkg
148
+ provider: hydra
149
+ - path: /home/leonmkim/fish_leon/FISH/cfgs
150
+ schema: file
151
+ provider: main
152
+ - path: ''
153
+ schema: structured
154
+ provider: schema
155
+ output_dir: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/bjqhpdkd
156
+ choices:
157
+ suite: frankagym
158
+ suite/frankagym_task@_global_: insertion
159
+ agent: diffusion
160
+ hydra/env: default
161
+ hydra/callbacks: null
162
+ hydra/job_logging: default
163
+ hydra/hydra_logging: default
164
+ hydra/hydra_help: default
165
+ hydra/help: default
166
+ hydra/sweeper: basic
167
+ hydra/launcher: submitit_local
168
+ hydra/output: default
169
+ verbose: false
bjqhpdkd/.hydra/overrides.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ - agent=diffusion
2
+ - suite=frankagym
3
+ - suite/frankagym_task@_global_=insertion
bjqhpdkd/eval_policy.log ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [2025-01-04 22:20:38,631][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:428: UserWarning:
2
+ The version_base parameter is not specified.
3
+ Please specify a compatability version level, or None.
4
+ Will assume defaults for version 1.1
5
+ @hydra.main(config_path='cfgs', config_name='config_eval')
6
+
7
+ [2025-01-04 22:20:38,634][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:365: UserWarning:
8
+ The version_base parameter is not specified.
9
+ Please specify a compatability version level, or None.
10
+ Will assume defaults for version 1.1
11
+ hydra.initialize(
12
+
13
+ [2025-01-04 22:20:42,488][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:414: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
14
+ payload = torch.load(f)
15
+
config.yaml ADDED
@@ -0,0 +1,546 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ root_dir: /mnt/kostas-graid/datasets/extrinsic_contact_data
2
+ replay_buffer_size: 150000
3
+ replay_buffer_num_workers: 2
4
+ nstep: 3
5
+ batch_size: 128
6
+ seed: 1
7
+ dataset_shuffle_seed: 0
8
+ device: cuda
9
+ save_video: true
10
+ save_train_video: true
11
+ use_tb: true
12
+ use_wandb: true
13
+ wandb_run_id: '1926_1'
14
+ wandb_notes: 1926_1_restarted_5
15
+ eval: false
16
+ true_action_history: false
17
+ train_pad_after: 4
18
+ process_contact_features: ${eval}
19
+ obs_type: pixels
20
+ use_color: true
21
+ use_depth: true
22
+ use_masks: true
23
+ mask_list:
24
+ - EE_obj_mask
25
+ mask_representation: channels
26
+ crop_hw:
27
+ - 144
28
+ - 144
29
+ crop_down_offset: 48
30
+ color_crop_type: null
31
+ depth_crop_type: null
32
+ segmask_crop_type: null
33
+ add_crop_binary_mask: false
34
+ add_coord_conv_map: false
35
+ use_context_color: false
36
+ use_context_depth: false
37
+ use_context_segmask: false
38
+ context_color_crop_type: null
39
+ context_depth_crop_type: null
40
+ context_segmask_crop_type: null
41
+ context_add_crop_binary_mask: false
42
+ context_add_coord_conv_map: false
43
+ use_contact_map: true
44
+ use_sdf_maps: true
45
+ use_normals_maps: true
46
+ which_objects: both
47
+ max_contact_prob: 0.1
48
+ max_depth: 2.0
49
+ grasped_dtc_max_value: 0.2
50
+ env_dtc_max_value: 0.4
51
+ grasped_normals_mask_max_dtc_value: 0.2
52
+ env_normals_mask_max_dtc_value: 0.4
53
+ clamp_dtc: true
54
+ dtc_adaptive_normalization: false
55
+ mask_normals_within_sdf: true
56
+ adaptive_normals_mask: true
57
+ learnable_contact_preprocess_params: true
58
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9
59
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
60
+ encoder_type: small
61
+ debug_timestamps: false
62
+ open_loop: false
63
+ action_trajectories: true
64
+ stop_after_action: false
65
+ interpolation_frequency: 25
66
+ policy_frequency: 5
67
+ wait_for_new_camera_frames: true
68
+ baseline: false
69
+ train_demo_idxs_list_or_num: -1
70
+ log_train_every_steps: 25
71
+ name_of_expert_demo: 120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
72
+ expert_dataset_dirpath: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_expert_demo}
73
+ store_dataset_in_memory: false
74
+ expert_dataset: ${expert_dataset_dirpath}/demos.zarr
75
+ action_key: ${oc.if_else:${action_trajectories}, 'action_trajectory_${interpolation_frequency}hz',
76
+ 'action'}
77
+ semantic_demo_grouping_name: semantic_demo_grouping.yaml
78
+ semantic_demo_grouping: ${expert_dataset_dirpath}/${semantic_demo_grouping_name}
79
+ include_groups_list: all
80
+ expert_dataset_config: ${expert_dataset_dirpath}/demo_config.yaml
81
+ name_of_valid_demo: 120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
82
+ valid_dataset_dir: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_valid_demo}/demos.zarr
83
+ valid_demo_idxs_list_or_num: null
84
+ val_num_groups: 7
85
+ load_bc: ${agent.load_checkpoint}
86
+ checkpoint_epoch_list:
87
+ - 99
88
+ - 199
89
+ - 299
90
+ - 399
91
+ - 499
92
+ - 599
93
+ - 699
94
+ - 799
95
+ - 899
96
+ - 999
97
+ - 1249
98
+ - 1499
99
+ - 1749
100
+ - 1999
101
+ - 2999
102
+ - 3999
103
+ - 4999
104
+ - 5999
105
+ - 6999
106
+ - 7999
107
+ - 8999
108
+ - 9999
109
+ snapshot_root_dir: /mnt/grasp_high_usage/leonmkim/contact_estimation/FISH
110
+ save_snapshot: true
111
+ save_last_snapshot: true
112
+ save_snapshot_when_done: true
113
+ top_k_checkpoints: 5
114
+ save_snapshot_link_to_weights_dir: deprecated
115
+ bc_regularize: false
116
+ bc_weight_type: qfilter
117
+ experiment_dir: ./exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
118
+ agent:
119
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
120
+ name: diffusion_policy
121
+ load_checkpoint: ${eval}
122
+ device: ${device}
123
+ n_obs_steps: ${.config.policy_cfg.n_obs_steps}
124
+ suite_name: ${suite.name}
125
+ obs_type: ${obs_type}
126
+ enable_arm: ${eval}
127
+ enable_camera: ${eval}
128
+ use_tb: ${use_tb}
129
+ desired_image_shape:
130
+ - 13
131
+ - 180
132
+ - 240
133
+ orig_cam_shape:
134
+ - 3
135
+ - 240
136
+ - 320
137
+ config:
138
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
139
+ compile: false
140
+ device: ${device}
141
+ cam_resize_shape: ${agent.desired_image_shape}
142
+ orig_cam_shape: ${agent.orig_cam_shape}
143
+ policy_frequency: ${policy_frequency}
144
+ interpolation_frequency: ${interpolation_frequency}
145
+ policy_cfg:
146
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
147
+ n_obs_steps: 1
148
+ horizon: 36
149
+ n_action_steps: ${agent.config.policy_cfg.horizon}
150
+ output_shapes:
151
+ action:
152
+ - 7
153
+ input_normalization_modes:
154
+ observation.image: mean_std
155
+ observation.state: min_max
156
+ observation.action_history: min_max
157
+ output_normalization_modes:
158
+ action: min_max
159
+ vision_backbone: resnet18
160
+ pretrained_backbone_weights: null
161
+ transforms:
162
+ - _target_: torchaug.transforms.RandomAffine
163
+ degrees:
164
+ - -5
165
+ - 5
166
+ translate:
167
+ - 0.05
168
+ - 0.05
169
+ batch_transform: true
170
+ num_chunks: -1
171
+ batch_inplace: true
172
+ - _target_: torchaug.transforms.RandomColorJitter
173
+ brightness: 0.3
174
+ contrast: 0.4
175
+ saturation: 0.5
176
+ hue: 0.08
177
+ batch_transform: true
178
+ num_chunks: -1
179
+ batch_inplace: true
180
+ use_group_norm: true
181
+ spatial_softmax_num_keypoints: 32
182
+ action_history_encoder_config:
183
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
184
+ in_channels: 7
185
+ out_channels: 32
186
+ history_length: 6
187
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
188
+ downsample_kernel_size: 3
189
+ downsample_stride: 2
190
+ downsample_padding: 1
191
+ down_dims:
192
+ - 256
193
+ - 512
194
+ - 1024
195
+ kernel_size: 5
196
+ n_groups: 8
197
+ diffusion_step_embed_dim: 128
198
+ use_film_scale_modulation: true
199
+ noise_scheduler_type: DDIM
200
+ beta_schedule: squaredcos_cap_v2
201
+ beta_start: 0.0001
202
+ beta_end: 0.02
203
+ prediction_type: epsilon
204
+ clip_sample: true
205
+ clip_sample_range: 1.0
206
+ num_train_timesteps: 50
207
+ num_inference_steps: 10
208
+ do_mask_loss_for_padding: false
209
+ input_shapes:
210
+ observation.image:
211
+ - 13
212
+ - 180
213
+ - 240
214
+ context_observation.image:
215
+ - 13
216
+ - 180
217
+ - 240
218
+ observation.state:
219
+ - 8
220
+ observation.action_history:
221
+ - 7
222
+ train_cfg:
223
+ _target_: utils.TrainConfig
224
+ lr: 0.0001
225
+ lr_scheduler: cosine
226
+ lr_warmup_steps: 500
227
+ adam_betas:
228
+ - 0.95
229
+ - 0.999
230
+ adam_eps: 1.0e-08
231
+ adam_weight_decay: 1.0e-06
232
+ grad_clip_norm: 10
233
+ offline_steps: ${num_train_frames_diffusion}
234
+ use_amp: true
235
+ observation_cfg:
236
+ _target_: agent.encoder.VisualFeatureSet
237
+ use_depth: ${use_depth}
238
+ use_color: ${use_color}
239
+ mask_input_dict:
240
+ _target_: agent.encoder.MaskInputDict
241
+ enable: ${use_masks}
242
+ representation: ${mask_representation}
243
+ mask_list: ${mask_list}
244
+ crop_input_config:
245
+ _target_: agent.encoder.CropInputConfig
246
+ color_crop_type: ${color_crop_type}
247
+ depth_crop_type: ${depth_crop_type}
248
+ segmask_crop_type: ${segmask_crop_type}
249
+ crop_hw: ${crop_hw}
250
+ crop_down_offset: ${crop_down_offset}
251
+ add_crop_binary_mask: ${add_crop_binary_mask}
252
+ add_coord_conv_map: ${add_coord_conv_map}
253
+ context_input_config:
254
+ _target_: agent.encoder.ContextInputConfig
255
+ use_color: ${use_context_color}
256
+ use_depth: ${use_context_depth}
257
+ mask_input_dict:
258
+ _target_: agent.encoder.MaskInputDict
259
+ enable: ${use_context_segmask}
260
+ representation: ${mask_representation}
261
+ mask_list: ${mask_list}
262
+ crop_input_config:
263
+ _target_: agent.encoder.CropInputConfig
264
+ color_crop_type: ${context_color_crop_type}
265
+ depth_crop_type: ${context_depth_crop_type}
266
+ segmask_crop_type: ${context_segmask_crop_type}
267
+ crop_hw: ${crop_hw}
268
+ crop_down_offset: ${crop_down_offset}
269
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
270
+ add_coord_conv_map: ${context_add_coord_conv_map}
271
+ mask_soft_approx_scheduler_config:
272
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
273
+ num_steps: 40000
274
+ initial_value: 10.0
275
+ final_value: 1000.0
276
+ interpolation_scheme: cosine
277
+ use_contact_map: ${use_contact_map}
278
+ use_sdf_maps: ${use_sdf_maps}
279
+ use_normals_maps: ${use_normals_maps}
280
+ which_objects: ${which_objects}
281
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
282
+ env_dtc_max_value: ${env_dtc_max_value}
283
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
284
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
285
+ clamp_dtc: ${clamp_dtc}
286
+ max_contact_prob: ${max_contact_prob}
287
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
288
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
289
+ adaptive_normals_mask: ${adaptive_normals_mask}
290
+ max_depth: ${max_depth}
291
+ image_shape: ${agent.desired_image_shape}
292
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
293
+ learning_rate: 0.0001
294
+ weight_decay: 0.0
295
+ contact_model_name: ${contact_model_name}
296
+ zero_centered: false
297
+ suite:
298
+ suite: frankagym
299
+ name: frankagym
300
+ frame_stack: ${agent.n_obs_steps}
301
+ action_repeat: 1
302
+ discount: 0.99
303
+ hidden_dim: 1024
304
+ num_train_frames: 1000000
305
+ num_seed_frames: 0
306
+ num_train_epochs: 15000
307
+ validate_every_epochs: 250
308
+ validate_diffusion_on_action_loss_every_epochs: 250
309
+ train_eval_diffusion_on_action_loss_every_epochs: 250
310
+ check_topk_every_epochs: 250
311
+ save_snapshot_every_epochs: 1500
312
+ eval_every_frames: 2000
313
+ num_eval_episodes: 5
314
+ save_snapshot: true
315
+ wait_for_user_to_start_episode: true
316
+ task_make_fn:
317
+ _target_: suite.frankagym.make
318
+ name: ${task_name}
319
+ height: 240
320
+ width: 320
321
+ frame_stack: ${suite.frame_stack}
322
+ action_repeat: ${suite.action_repeat}
323
+ seed: ${seed}
324
+ enable_arm: ${agent.enable_arm}
325
+ enable_gripper: ${enable_gripper}
326
+ start_with_gripper_open: ${start_with_gripper_open}
327
+ enable_camera: ${agent.enable_camera}
328
+ path_to_depth_extrinsics: ${path_to_depth_extrinsics}
329
+ contact_estimation_model_ckpt_path: ${contact_estimation_model_ckpt_path}
330
+ x_limit: ${x_limit}
331
+ y_limit: ${y_limit}
332
+ z_limit: ${z_limit}
333
+ device: ${device}
334
+ interpolation_frequency: ${interpolation_frequency}
335
+ policy_frequency: ${policy_frequency}
336
+ debug_timestamps: ${debug_timestamps}
337
+ stop_after_action: ${stop_after_action}
338
+ open_loop: ${open_loop}
339
+ wait_for_new_camera_frames: ${wait_for_new_camera_frames}
340
+ action_key: ${action_key}
341
+ action_trajectory_horizon: ${agent.config.policy_cfg.horizon}
342
+ action_trajectories: ${action_trajectories}
343
+ path_to_zarr_dataset: ${expert_dataset}
344
+ agent_policy_cfg:
345
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
346
+ compile: false
347
+ device: ${device}
348
+ cam_resize_shape: ${agent.desired_image_shape}
349
+ orig_cam_shape: ${agent.orig_cam_shape}
350
+ policy_frequency: ${policy_frequency}
351
+ interpolation_frequency: ${interpolation_frequency}
352
+ policy_cfg:
353
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
354
+ n_obs_steps: 1
355
+ horizon: 36
356
+ n_action_steps: ${agent.config.policy_cfg.horizon}
357
+ output_shapes:
358
+ action:
359
+ - 7
360
+ input_normalization_modes:
361
+ observation.image: mean_std
362
+ observation.state: min_max
363
+ observation.action_history: min_max
364
+ output_normalization_modes:
365
+ action: min_max
366
+ vision_backbone: resnet18
367
+ pretrained_backbone_weights: null
368
+ transforms:
369
+ - _target_: torchaug.transforms.RandomAffine
370
+ degrees:
371
+ - -5
372
+ - 5
373
+ translate:
374
+ - 0.05
375
+ - 0.05
376
+ batch_transform: true
377
+ num_chunks: -1
378
+ batch_inplace: true
379
+ - _target_: torchaug.transforms.RandomColorJitter
380
+ brightness: 0.3
381
+ contrast: 0.4
382
+ saturation: 0.5
383
+ hue: 0.08
384
+ batch_transform: true
385
+ num_chunks: -1
386
+ batch_inplace: true
387
+ use_group_norm: true
388
+ spatial_softmax_num_keypoints: 32
389
+ action_history_encoder_config:
390
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
391
+ in_channels: 7
392
+ out_channels: 32
393
+ history_length: 6
394
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
395
+ downsample_kernel_size: 3
396
+ downsample_stride: 2
397
+ downsample_padding: 1
398
+ down_dims:
399
+ - 256
400
+ - 512
401
+ - 1024
402
+ kernel_size: 5
403
+ n_groups: 8
404
+ diffusion_step_embed_dim: 128
405
+ use_film_scale_modulation: true
406
+ noise_scheduler_type: DDIM
407
+ beta_schedule: squaredcos_cap_v2
408
+ beta_start: 0.0001
409
+ beta_end: 0.02
410
+ prediction_type: epsilon
411
+ clip_sample: true
412
+ clip_sample_range: 1.0
413
+ num_train_timesteps: 50
414
+ num_inference_steps: 10
415
+ do_mask_loss_for_padding: false
416
+ input_shapes:
417
+ observation.image:
418
+ - 13
419
+ - 180
420
+ - 240
421
+ context_observation.image:
422
+ - 13
423
+ - 180
424
+ - 240
425
+ observation.state:
426
+ - 8
427
+ observation.action_history:
428
+ - 7
429
+ train_cfg:
430
+ _target_: utils.TrainConfig
431
+ lr: 0.0001
432
+ lr_scheduler: cosine
433
+ lr_warmup_steps: 500
434
+ adam_betas:
435
+ - 0.95
436
+ - 0.999
437
+ adam_eps: 1.0e-08
438
+ adam_weight_decay: 1.0e-06
439
+ grad_clip_norm: 10
440
+ offline_steps: ${num_train_frames_diffusion}
441
+ use_amp: true
442
+ observation_cfg:
443
+ _target_: agent.encoder.VisualFeatureSet
444
+ use_depth: ${use_depth}
445
+ use_color: ${use_color}
446
+ mask_input_dict:
447
+ _target_: agent.encoder.MaskInputDict
448
+ enable: ${use_masks}
449
+ representation: ${mask_representation}
450
+ mask_list: ${mask_list}
451
+ crop_input_config:
452
+ _target_: agent.encoder.CropInputConfig
453
+ color_crop_type: ${color_crop_type}
454
+ depth_crop_type: ${depth_crop_type}
455
+ segmask_crop_type: ${segmask_crop_type}
456
+ crop_hw: ${crop_hw}
457
+ crop_down_offset: ${crop_down_offset}
458
+ add_crop_binary_mask: ${add_crop_binary_mask}
459
+ add_coord_conv_map: ${add_coord_conv_map}
460
+ context_input_config:
461
+ _target_: agent.encoder.ContextInputConfig
462
+ use_color: ${use_context_color}
463
+ use_depth: ${use_context_depth}
464
+ mask_input_dict:
465
+ _target_: agent.encoder.MaskInputDict
466
+ enable: ${use_context_segmask}
467
+ representation: ${mask_representation}
468
+ mask_list: ${mask_list}
469
+ crop_input_config:
470
+ _target_: agent.encoder.CropInputConfig
471
+ color_crop_type: ${context_color_crop_type}
472
+ depth_crop_type: ${context_depth_crop_type}
473
+ segmask_crop_type: ${context_segmask_crop_type}
474
+ crop_hw: ${crop_hw}
475
+ crop_down_offset: ${crop_down_offset}
476
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
477
+ add_coord_conv_map: ${context_add_coord_conv_map}
478
+ mask_soft_approx_scheduler_config:
479
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
480
+ num_steps: 40000
481
+ initial_value: 10.0
482
+ final_value: 1000.0
483
+ interpolation_scheme: cosine
484
+ use_contact_map: ${use_contact_map}
485
+ use_sdf_maps: ${use_sdf_maps}
486
+ use_normals_maps: ${use_normals_maps}
487
+ which_objects: ${which_objects}
488
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
489
+ env_dtc_max_value: ${env_dtc_max_value}
490
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
491
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
492
+ clamp_dtc: ${clamp_dtc}
493
+ max_contact_prob: ${max_contact_prob}
494
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
495
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
496
+ adaptive_normals_mask: ${adaptive_normals_mask}
497
+ max_depth: ${max_depth}
498
+ image_shape: ${agent.desired_image_shape}
499
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
500
+ learning_rate: 0.0001
501
+ weight_decay: 0.0
502
+ contact_model_name: ${contact_model_name}
503
+ zero_centered: false
504
+ true_action_history: ${true_action_history}
505
+ num_train_frames_bc: 50000
506
+ num_train_frames_drq: 1100000
507
+ stddev_schedule_drq: linear(1.0,0.1,100000)
508
+ task_name: FrankaInsertion-v1
509
+ num_train_frames_vinn: 25000
510
+ num_train_frames_diffusion: 1000000
511
+ num_train_epochs_bc: 5000
512
+ num_train_epochs_diffusion: 15000
513
+ validate_every_epochs_bc: 5
514
+ validate_every_epochs_diffusion: 250
515
+ validate_diffusion_on_action_loss_every_epochs: 250
516
+ train_eval_diffusion_on_action_loss_every_epochs: 250
517
+ check_topk_every_epochs: 5
518
+ check_topk_every_epochs_diffusion: 250
519
+ save_snapshot_every_epochs_diffusion: 1500
520
+ x_limit:
521
+ - 0.2
522
+ - 0.7
523
+ y_limit:
524
+ - -0.4
525
+ - 0.4
526
+ z_limit:
527
+ - -0.05
528
+ - 0.55
529
+ home_displacement:
530
+ - 0.55
531
+ - 0.0
532
+ - 0.55
533
+ - 180.0
534
+ - 0.0
535
+ - 0.0
536
+ enable_gripper: true
537
+ start_with_gripper_open: true
538
+ offset_mask:
539
+ - 1
540
+ - 1
541
+ - 1
542
+ - 1
543
+ - 1
544
+ - 1
545
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
546
+ feature_type: 180x240_1_RGB_D_2.0_msk_channels_EE_obj_mask_cntct_0.1_DTC_clmpd_lrnbl_nrmls_DTCmask_adpt_lrnbl_both_lr_0.0001_wd_0.0_local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9_acthst_hst6_out32_dwnkrnl3_dwnstrd2_dwnpd1
gdvjvd8r/.hydra/config.yaml ADDED
@@ -0,0 +1,350 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ root_dir: /home/${oc.env:USER}/fish_leon
2
+ nstep: 3
3
+ seed: 41
4
+ dataset_shuffle_seed: ${seed}
5
+ device: cuda
6
+ save_video: true
7
+ save_buffer: true
8
+ use_tb: true
9
+ baseline: false
10
+ use_wandb: true
11
+ eval: true
12
+ process_contact_features: ${eval}
13
+ obs_type: pixels
14
+ use_color: true
15
+ use_depth: true
16
+ use_masks: false
17
+ mask_list:
18
+ - EE_obj_mask
19
+ mask_representation: channels
20
+ crop_hw:
21
+ - 144
22
+ - 144
23
+ crop_down_offset: 48
24
+ color_crop_type: null
25
+ depth_crop_type: null
26
+ segmask_crop_type: null
27
+ add_crop_binary_mask: false
28
+ add_coord_conv_map: false
29
+ use_context_color: false
30
+ use_context_depth: false
31
+ use_context_segmask: false
32
+ context_color_crop_type: null
33
+ context_depth_crop_type: null
34
+ context_segmask_crop_type: null
35
+ context_add_crop_binary_mask: false
36
+ context_add_coord_conv_map: false
37
+ use_contact_map: false
38
+ use_sdf_maps: false
39
+ use_normals_maps: false
40
+ which_objects: both
41
+ max_contact_prob: 0.1
42
+ max_depth: 2.0
43
+ grasped_dtc_max_value: 0.105
44
+ env_dtc_max_value: 0.425
45
+ grasped_normals_mask_max_dtc_value: 0.105
46
+ env_normals_mask_max_dtc_value: 0.425
47
+ clamp_dtc: true
48
+ dtc_adaptive_normalization: false
49
+ mask_normals_within_sdf: true
50
+ adaptive_normals_mask: true
51
+ learnable_contact_preprocess_params: false
52
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_ctxt_seed_183386_epoch_9
53
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
54
+ num_eval: 5
55
+ debug_timestamps: false
56
+ open_loop: false
57
+ action_trajectories: true
58
+ stop_after_action: false
59
+ interpolation_frequency: 25
60
+ policy_frequency: 5
61
+ wait_for_new_camera_frames: true
62
+ random_start: false
63
+ eval_starts: ${root_dir}/FISH/eval_starts/${suite.name}_${obs_type}/${task_name}
64
+ train_demo_idxs_list_or_num: null
65
+ num_valid_demos: null
66
+ val_num_groups: 3
67
+ name_of_expert_demo: 112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
68
+ expert_dataset_dirpath: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_expert_demo}
69
+ expert_dataset: ${expert_dataset_dirpath}/demos.zarr
70
+ action_key: ${oc.if_else:${action_trajectories}, 'action_trajectory_${interpolation_frequency}hz',
71
+ 'action'}
72
+ semantic_demo_grouping_name: semantic_demo_grouping.yaml
73
+ semantic_demo_grouping: ${expert_dataset_dirpath}/${semantic_demo_grouping_name}
74
+ expert_dataset_config: ${expert_dataset_dirpath}/demo_config.yaml
75
+ bc_regularize: false
76
+ bc_weight_type: qfilter
77
+ load_checkpoint: ${agent.load_checkpoint}
78
+ wandb_run_id: '1926_1'
79
+ true_action_history: false
80
+ wandb_notes: null
81
+ checkpoint_epoch: 12000
82
+ load_residual_weight: false
83
+ checkpoint_root_dir: /home/${oc.env:USER}/fish_leon/FISH
84
+ checkpoint_weight_dir: ${checkpoint_root_dir}/exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
85
+ residual_weight: ${root_dir}/FISH/weights/${suite.name}_${obs_type}/${task_name}/weight.pt
86
+ experiment_dir: ./exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
87
+ final_experiment_dir: ${experiment_dir}/${oc.generate_run_id:}
88
+ agent:
89
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
90
+ name: diffusion_policy
91
+ load_checkpoint: ${eval}
92
+ device: ${device}
93
+ n_obs_steps: ${.config.policy_cfg.n_obs_steps}
94
+ suite_name: ${suite.name}
95
+ obs_type: ${obs_type}
96
+ enable_arm: ${eval}
97
+ enable_camera: ${eval}
98
+ use_tb: ${use_tb}
99
+ desired_image_shape:
100
+ - 13
101
+ - 180
102
+ - 240
103
+ orig_cam_shape:
104
+ - 3
105
+ - 240
106
+ - 320
107
+ config:
108
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
109
+ compile: false
110
+ device: ${device}
111
+ cam_resize_shape: ${agent.desired_image_shape}
112
+ orig_cam_shape: ${agent.orig_cam_shape}
113
+ policy_frequency: ${policy_frequency}
114
+ interpolation_frequency: ${interpolation_frequency}
115
+ policy_cfg:
116
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
117
+ n_obs_steps: 1
118
+ horizon: 36
119
+ n_action_steps: ${agent.config.policy_cfg.horizon}
120
+ input_shapes:
121
+ observation.image: ${agent.config.cam_resize_shape}
122
+ context_observation.image: ${agent.config.cam_resize_shape}
123
+ observation.state:
124
+ - 8
125
+ observation.action_history:
126
+ - 7
127
+ output_shapes:
128
+ action:
129
+ - 7
130
+ input_normalization_modes:
131
+ observation.image: mean_std
132
+ observation.state: min_max
133
+ observation.action_history: min_max
134
+ output_normalization_modes:
135
+ action: min_max
136
+ vision_backbone: resnet18
137
+ pretrained_backbone_weights: null
138
+ transforms:
139
+ - _target_: torchaug.transforms.RandomAffine
140
+ degrees:
141
+ - -5
142
+ - 5
143
+ translate:
144
+ - 0.05
145
+ - 0.05
146
+ batch_transform: true
147
+ num_chunks: -1
148
+ batch_inplace: true
149
+ - _target_: torchaug.transforms.RandomColorJitter
150
+ brightness: 0.3
151
+ contrast: 0.4
152
+ saturation: 0.5
153
+ hue: 0.08
154
+ batch_transform: true
155
+ num_chunks: -1
156
+ batch_inplace: true
157
+ use_group_norm: true
158
+ spatial_softmax_num_keypoints: 32
159
+ action_history_encoder_config:
160
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
161
+ in_channels: 7
162
+ out_channels: 32
163
+ history_length: ${agent.config.policy_cfg.n_action_steps}
164
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
165
+ downsample_kernel_size: 3
166
+ downsample_stride: 2
167
+ downsample_padding: 1
168
+ down_dims:
169
+ - 256
170
+ - 512
171
+ - 1024
172
+ kernel_size: 5
173
+ n_groups: 8
174
+ diffusion_step_embed_dim: 128
175
+ use_film_scale_modulation: true
176
+ noise_scheduler_type: DDIM
177
+ beta_schedule: squaredcos_cap_v2
178
+ beta_start: 0.0001
179
+ beta_end: 0.02
180
+ prediction_type: epsilon
181
+ clip_sample: true
182
+ clip_sample_range: 1.0
183
+ num_train_timesteps: 50
184
+ num_inference_steps: 10
185
+ do_mask_loss_for_padding: false
186
+ train_cfg:
187
+ _target_: utils.TrainConfig
188
+ lr: 0.0001
189
+ lr_scheduler: cosine
190
+ lr_warmup_steps: 500
191
+ adam_betas:
192
+ - 0.95
193
+ - 0.999
194
+ adam_eps: 1.0e-08
195
+ adam_weight_decay: 1.0e-06
196
+ grad_clip_norm: 10
197
+ offline_steps: ${num_train_frames_diffusion}
198
+ use_amp: true
199
+ observation_cfg:
200
+ _target_: agent.encoder.VisualFeatureSet
201
+ use_depth: ${use_depth}
202
+ use_color: ${use_color}
203
+ mask_input_dict:
204
+ _target_: agent.encoder.MaskInputDict
205
+ enable: ${use_masks}
206
+ representation: ${mask_representation}
207
+ mask_list: ${mask_list}
208
+ crop_input_config:
209
+ _target_: agent.encoder.CropInputConfig
210
+ color_crop_type: ${color_crop_type}
211
+ depth_crop_type: ${depth_crop_type}
212
+ segmask_crop_type: ${segmask_crop_type}
213
+ crop_hw: ${crop_hw}
214
+ crop_down_offset: ${crop_down_offset}
215
+ add_crop_binary_mask: ${add_crop_binary_mask}
216
+ add_coord_conv_map: ${add_coord_conv_map}
217
+ context_input_config:
218
+ _target_: agent.encoder.ContextInputConfig
219
+ use_color: ${use_context_color}
220
+ use_depth: ${use_context_depth}
221
+ mask_input_dict:
222
+ _target_: agent.encoder.MaskInputDict
223
+ enable: ${use_context_segmask}
224
+ representation: ${mask_representation}
225
+ mask_list: ${mask_list}
226
+ crop_input_config:
227
+ _target_: agent.encoder.CropInputConfig
228
+ color_crop_type: ${context_color_crop_type}
229
+ depth_crop_type: ${context_depth_crop_type}
230
+ segmask_crop_type: ${context_segmask_crop_type}
231
+ crop_hw: ${crop_hw}
232
+ crop_down_offset: ${crop_down_offset}
233
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
234
+ add_coord_conv_map: ${context_add_coord_conv_map}
235
+ mask_soft_approx_scheduler_config:
236
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
237
+ num_steps: 40000
238
+ initial_value: 10.0
239
+ final_value: 1000.0
240
+ interpolation_scheme: constant
241
+ use_contact_map: ${use_contact_map}
242
+ use_sdf_maps: ${use_sdf_maps}
243
+ use_normals_maps: ${use_normals_maps}
244
+ which_objects: ${which_objects}
245
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
246
+ env_dtc_max_value: ${env_dtc_max_value}
247
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
248
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
249
+ clamp_dtc: ${clamp_dtc}
250
+ max_contact_prob: ${max_contact_prob}
251
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
252
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
253
+ adaptive_normals_mask: ${adaptive_normals_mask}
254
+ max_depth: ${max_depth}
255
+ image_shape: ${agent.desired_image_shape}
256
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
257
+ learning_rate: ${agent.config.train_cfg.lr}
258
+ weight_decay: 0.0
259
+ contact_model_name: ${contact_model_name}
260
+ zero_centered: false
261
+ suite:
262
+ suite: frankagym
263
+ name: frankagym
264
+ frame_stack: ${agent.n_obs_steps}
265
+ action_repeat: 1
266
+ discount: 0.99
267
+ hidden_dim: 1024
268
+ num_train_frames: 2010
269
+ num_seed_frames: 260
270
+ num_train_epochs: 5000
271
+ validate_every_epochs: 100
272
+ validate_diffusion_on_action_loss_every_epochs: 500
273
+ train_eval_diffusion_on_action_loss_every_epochs: 500
274
+ check_topk_every_epochs: 10
275
+ save_snapshot_every_epochs: 5000
276
+ eval_every_frames: 2000
277
+ num_eval_episodes: 5
278
+ save_snapshot: true
279
+ wait_for_user_to_start_episode: true
280
+ task_make_fn:
281
+ _target_: suite.frankagym.make
282
+ name: ${task_name}
283
+ height: 240
284
+ width: 320
285
+ frame_stack: ${suite.frame_stack}
286
+ action_repeat: ${suite.action_repeat}
287
+ seed: ${seed}
288
+ enable_arm: ${agent.enable_arm}
289
+ enable_gripper: ${enable_gripper}
290
+ start_with_gripper_open: ${start_with_gripper_open}
291
+ enable_camera: ${agent.enable_camera}
292
+ path_to_depth_extrinsics: ${path_to_depth_extrinsics}
293
+ contact_estimation_model_ckpt_path: ${contact_estimation_model_ckpt_path}
294
+ x_limit: ${x_limit}
295
+ y_limit: ${y_limit}
296
+ z_limit: ${z_limit}
297
+ device: ${device}
298
+ interpolation_frequency: ${interpolation_frequency}
299
+ policy_frequency: ${policy_frequency}
300
+ debug_timestamps: ${debug_timestamps}
301
+ stop_after_action: ${stop_after_action}
302
+ open_loop: ${open_loop}
303
+ wait_for_new_camera_frames: ${wait_for_new_camera_frames}
304
+ action_key: ${action_key}
305
+ action_trajectory_horizon: ${agent.config.policy_cfg.horizon}
306
+ action_trajectories: ${action_trajectories}
307
+ path_to_zarr_dataset: ${expert_dataset}
308
+ agent_policy_cfg: ???
309
+ true_action_history: ${true_action_history}
310
+ num_train_frames_bc: 50000
311
+ num_train_frames_drq: 1100000
312
+ stddev_schedule_drq: linear(1.0,0.1,100000)
313
+ task_name: FrankaInsertion-v1
314
+ num_train_frames_vinn: 25000
315
+ num_train_frames_diffusion: 1000000
316
+ num_train_epochs_bc: 5000
317
+ num_train_epochs_diffusion: 5000
318
+ validate_every_epochs_bc: 5
319
+ validate_every_epochs_diffusion: 25
320
+ validate_diffusion_on_action_loss_every_epochs: 50
321
+ train_eval_diffusion_on_action_loss_every_epochs: 500
322
+ check_topk_every_epochs: 5
323
+ check_topk_every_epochs_diffusion: ${validate_diffusion_on_action_loss_every_epochs}
324
+ save_snapshot_every_epochs_diffusion: 5000
325
+ x_limit:
326
+ - 0.2
327
+ - 0.7
328
+ y_limit:
329
+ - -0.4
330
+ - 0.4
331
+ z_limit:
332
+ - -0.05
333
+ - 0.55
334
+ home_displacement:
335
+ - 0.55
336
+ - 0.0
337
+ - 0.55
338
+ - 180.0
339
+ - 0.0
340
+ - 0.0
341
+ enable_gripper: true
342
+ start_with_gripper_open: true
343
+ offset_mask:
344
+ - 1
345
+ - 1
346
+ - 1
347
+ - 1
348
+ - 1
349
+ - 1
350
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
gdvjvd8r/.hydra/hydra.yaml ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ hydra:
2
+ run:
3
+ dir: ${final_experiment_dir}
4
+ sweep:
5
+ dir: ${final_experiment_dir}
6
+ subdir: ${hydra.job.num}
7
+ launcher:
8
+ submitit_folder: ${final_experiment_dir}/.slurm
9
+ timeout_min: 60
10
+ cpus_per_task: null
11
+ gpus_per_node: null
12
+ tasks_per_node: 1
13
+ mem_gb: null
14
+ nodes: 1
15
+ name: ${hydra.job.name}
16
+ stderr_to_stdout: false
17
+ _target_: hydra_plugins.hydra_submitit_launcher.submitit_launcher.LocalLauncher
18
+ sweeper:
19
+ _target_: hydra._internal.core_plugins.basic_sweeper.BasicSweeper
20
+ max_batch_size: null
21
+ params: null
22
+ help:
23
+ app_name: ${hydra.job.name}
24
+ header: '${hydra.help.app_name} is powered by Hydra.
25
+
26
+ '
27
+ footer: 'Powered by Hydra (https://hydra.cc)
28
+
29
+ Use --hydra-help to view Hydra specific help
30
+
31
+ '
32
+ template: '${hydra.help.header}
33
+
34
+ == Configuration groups ==
35
+
36
+ Compose your configuration from those groups (group=option)
37
+
38
+
39
+ $APP_CONFIG_GROUPS
40
+
41
+
42
+ == Config ==
43
+
44
+ Override anything in the config (foo.bar=value)
45
+
46
+
47
+ $CONFIG
48
+
49
+
50
+ ${hydra.help.footer}
51
+
52
+ '
53
+ hydra_help:
54
+ template: 'Hydra (${hydra.runtime.version})
55
+
56
+ See https://hydra.cc for more info.
57
+
58
+
59
+ == Flags ==
60
+
61
+ $FLAGS_HELP
62
+
63
+
64
+ == Configuration groups ==
65
+
66
+ Compose your configuration from those groups (For example, append hydra/job_logging=disabled
67
+ to command line)
68
+
69
+
70
+ $HYDRA_CONFIG_GROUPS
71
+
72
+
73
+ Use ''--cfg hydra'' to Show the Hydra config.
74
+
75
+ '
76
+ hydra_help: ???
77
+ hydra_logging:
78
+ version: 1
79
+ formatters:
80
+ simple:
81
+ format: '[%(asctime)s][HYDRA] %(message)s'
82
+ handlers:
83
+ console:
84
+ class: logging.StreamHandler
85
+ formatter: simple
86
+ stream: ext://sys.stdout
87
+ root:
88
+ level: INFO
89
+ handlers:
90
+ - console
91
+ loggers:
92
+ logging_example:
93
+ level: DEBUG
94
+ disable_existing_loggers: false
95
+ job_logging:
96
+ version: 1
97
+ formatters:
98
+ simple:
99
+ format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s'
100
+ handlers:
101
+ console:
102
+ class: logging.StreamHandler
103
+ formatter: simple
104
+ stream: ext://sys.stdout
105
+ file:
106
+ class: logging.FileHandler
107
+ formatter: simple
108
+ filename: ${hydra.runtime.output_dir}/${hydra.job.name}.log
109
+ root:
110
+ level: INFO
111
+ handlers:
112
+ - console
113
+ - file
114
+ disable_existing_loggers: false
115
+ env: {}
116
+ mode: RUN
117
+ searchpath: []
118
+ callbacks: {}
119
+ output_subdir: .hydra
120
+ overrides:
121
+ hydra:
122
+ - hydra.mode=RUN
123
+ task:
124
+ - agent=diffusion
125
+ - suite=frankagym
126
+ - suite/frankagym_task@_global_=insertion
127
+ job:
128
+ name: eval_policy
129
+ chdir: true
130
+ override_dirname: agent=diffusion,suite/frankagym_task@_global_=insertion,suite=frankagym
131
+ id: ???
132
+ num: ???
133
+ config_name: config_eval
134
+ env_set: {}
135
+ env_copy: []
136
+ config:
137
+ override_dirname:
138
+ kv_sep: '='
139
+ item_sep: ','
140
+ exclude_keys: []
141
+ runtime:
142
+ version: 1.3.2
143
+ version_base: '1.1'
144
+ cwd: /home/leonmkim/fish_leon/FISH
145
+ config_sources:
146
+ - path: hydra.conf
147
+ schema: pkg
148
+ provider: hydra
149
+ - path: /home/leonmkim/fish_leon/FISH/cfgs
150
+ schema: file
151
+ provider: main
152
+ - path: ''
153
+ schema: structured
154
+ provider: schema
155
+ output_dir: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/gdvjvd8r
156
+ choices:
157
+ suite: frankagym
158
+ suite/frankagym_task@_global_: insertion
159
+ agent: diffusion
160
+ hydra/env: default
161
+ hydra/callbacks: null
162
+ hydra/job_logging: default
163
+ hydra/hydra_logging: default
164
+ hydra/hydra_help: default
165
+ hydra/help: default
166
+ hydra/sweeper: basic
167
+ hydra/launcher: submitit_local
168
+ hydra/output: default
169
+ verbose: false
gdvjvd8r/.hydra/overrides.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ - agent=diffusion
2
+ - suite=frankagym
3
+ - suite/frankagym_task@_global_=insertion
gdvjvd8r/eval_policy.log ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [2025-01-04 21:28:45,472][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:428: UserWarning:
2
+ The version_base parameter is not specified.
3
+ Please specify a compatability version level, or None.
4
+ Will assume defaults for version 1.1
5
+ @hydra.main(config_path='cfgs', config_name='config_eval')
6
+
7
+ [2025-01-04 21:28:45,475][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:365: UserWarning:
8
+ The version_base parameter is not specified.
9
+ Please specify a compatability version level, or None.
10
+ Will assume defaults for version 1.1
11
+ hydra.initialize(
12
+
13
+ [2025-01-04 21:28:49,550][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:414: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
14
+ payload = torch.load(f)
15
+
jrll14xh/.hydra/config.yaml ADDED
@@ -0,0 +1,350 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ root_dir: /home/${oc.env:USER}/fish_leon
2
+ nstep: 3
3
+ seed: 41
4
+ dataset_shuffle_seed: ${seed}
5
+ device: cuda
6
+ save_video: true
7
+ save_buffer: true
8
+ use_tb: true
9
+ baseline: false
10
+ use_wandb: true
11
+ eval: true
12
+ process_contact_features: ${eval}
13
+ obs_type: pixels
14
+ use_color: true
15
+ use_depth: true
16
+ use_masks: false
17
+ mask_list:
18
+ - EE_obj_mask
19
+ mask_representation: channels
20
+ crop_hw:
21
+ - 144
22
+ - 144
23
+ crop_down_offset: 48
24
+ color_crop_type: null
25
+ depth_crop_type: null
26
+ segmask_crop_type: null
27
+ add_crop_binary_mask: false
28
+ add_coord_conv_map: false
29
+ use_context_color: false
30
+ use_context_depth: false
31
+ use_context_segmask: false
32
+ context_color_crop_type: null
33
+ context_depth_crop_type: null
34
+ context_segmask_crop_type: null
35
+ context_add_crop_binary_mask: false
36
+ context_add_coord_conv_map: false
37
+ use_contact_map: false
38
+ use_sdf_maps: false
39
+ use_normals_maps: false
40
+ which_objects: both
41
+ max_contact_prob: 0.1
42
+ max_depth: 2.0
43
+ grasped_dtc_max_value: 0.105
44
+ env_dtc_max_value: 0.425
45
+ grasped_normals_mask_max_dtc_value: 0.105
46
+ env_normals_mask_max_dtc_value: 0.425
47
+ clamp_dtc: true
48
+ dtc_adaptive_normalization: false
49
+ mask_normals_within_sdf: true
50
+ adaptive_normals_mask: true
51
+ learnable_contact_preprocess_params: false
52
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_ctxt_seed_183386_epoch_9
53
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
54
+ num_eval: 5
55
+ debug_timestamps: false
56
+ open_loop: false
57
+ action_trajectories: true
58
+ stop_after_action: false
59
+ interpolation_frequency: 25
60
+ policy_frequency: 5
61
+ wait_for_new_camera_frames: true
62
+ random_start: false
63
+ eval_starts: ${root_dir}/FISH/eval_starts/${suite.name}_${obs_type}/${task_name}
64
+ train_demo_idxs_list_or_num: null
65
+ num_valid_demos: null
66
+ val_num_groups: 3
67
+ name_of_expert_demo: 112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
68
+ expert_dataset_dirpath: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_expert_demo}
69
+ expert_dataset: ${expert_dataset_dirpath}/demos.zarr
70
+ action_key: ${oc.if_else:${action_trajectories}, 'action_trajectory_${interpolation_frequency}hz',
71
+ 'action'}
72
+ semantic_demo_grouping_name: semantic_demo_grouping.yaml
73
+ semantic_demo_grouping: ${expert_dataset_dirpath}/${semantic_demo_grouping_name}
74
+ expert_dataset_config: ${expert_dataset_dirpath}/demo_config.yaml
75
+ bc_regularize: false
76
+ bc_weight_type: qfilter
77
+ load_checkpoint: ${agent.load_checkpoint}
78
+ wandb_run_id: '1926_1'
79
+ true_action_history: false
80
+ wandb_notes: null
81
+ checkpoint_epoch: 12000
82
+ load_residual_weight: false
83
+ checkpoint_root_dir: /home/${oc.env:USER}/fish_leon/FISH
84
+ checkpoint_weight_dir: ${checkpoint_root_dir}/exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
85
+ residual_weight: ${root_dir}/FISH/weights/${suite.name}_${obs_type}/${task_name}/weight.pt
86
+ experiment_dir: ./exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
87
+ final_experiment_dir: ${experiment_dir}/${oc.generate_run_id:}
88
+ agent:
89
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
90
+ name: diffusion_policy
91
+ load_checkpoint: ${eval}
92
+ device: ${device}
93
+ n_obs_steps: ${.config.policy_cfg.n_obs_steps}
94
+ suite_name: ${suite.name}
95
+ obs_type: ${obs_type}
96
+ enable_arm: ${eval}
97
+ enable_camera: ${eval}
98
+ use_tb: ${use_tb}
99
+ desired_image_shape:
100
+ - 13
101
+ - 180
102
+ - 240
103
+ orig_cam_shape:
104
+ - 3
105
+ - 240
106
+ - 320
107
+ config:
108
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
109
+ compile: false
110
+ device: ${device}
111
+ cam_resize_shape: ${agent.desired_image_shape}
112
+ orig_cam_shape: ${agent.orig_cam_shape}
113
+ policy_frequency: ${policy_frequency}
114
+ interpolation_frequency: ${interpolation_frequency}
115
+ policy_cfg:
116
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
117
+ n_obs_steps: 1
118
+ horizon: 36
119
+ n_action_steps: ${agent.config.policy_cfg.horizon}
120
+ input_shapes:
121
+ observation.image: ${agent.config.cam_resize_shape}
122
+ context_observation.image: ${agent.config.cam_resize_shape}
123
+ observation.state:
124
+ - 8
125
+ observation.action_history:
126
+ - 7
127
+ output_shapes:
128
+ action:
129
+ - 7
130
+ input_normalization_modes:
131
+ observation.image: mean_std
132
+ observation.state: min_max
133
+ observation.action_history: min_max
134
+ output_normalization_modes:
135
+ action: min_max
136
+ vision_backbone: resnet18
137
+ pretrained_backbone_weights: null
138
+ transforms:
139
+ - _target_: torchaug.transforms.RandomAffine
140
+ degrees:
141
+ - -5
142
+ - 5
143
+ translate:
144
+ - 0.05
145
+ - 0.05
146
+ batch_transform: true
147
+ num_chunks: -1
148
+ batch_inplace: true
149
+ - _target_: torchaug.transforms.RandomColorJitter
150
+ brightness: 0.3
151
+ contrast: 0.4
152
+ saturation: 0.5
153
+ hue: 0.08
154
+ batch_transform: true
155
+ num_chunks: -1
156
+ batch_inplace: true
157
+ use_group_norm: true
158
+ spatial_softmax_num_keypoints: 32
159
+ action_history_encoder_config:
160
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
161
+ in_channels: 7
162
+ out_channels: 32
163
+ history_length: ${agent.config.policy_cfg.n_action_steps}
164
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
165
+ downsample_kernel_size: 3
166
+ downsample_stride: 2
167
+ downsample_padding: 1
168
+ down_dims:
169
+ - 256
170
+ - 512
171
+ - 1024
172
+ kernel_size: 5
173
+ n_groups: 8
174
+ diffusion_step_embed_dim: 128
175
+ use_film_scale_modulation: true
176
+ noise_scheduler_type: DDIM
177
+ beta_schedule: squaredcos_cap_v2
178
+ beta_start: 0.0001
179
+ beta_end: 0.02
180
+ prediction_type: epsilon
181
+ clip_sample: true
182
+ clip_sample_range: 1.0
183
+ num_train_timesteps: 50
184
+ num_inference_steps: 10
185
+ do_mask_loss_for_padding: false
186
+ train_cfg:
187
+ _target_: utils.TrainConfig
188
+ lr: 0.0001
189
+ lr_scheduler: cosine
190
+ lr_warmup_steps: 500
191
+ adam_betas:
192
+ - 0.95
193
+ - 0.999
194
+ adam_eps: 1.0e-08
195
+ adam_weight_decay: 1.0e-06
196
+ grad_clip_norm: 10
197
+ offline_steps: ${num_train_frames_diffusion}
198
+ use_amp: true
199
+ observation_cfg:
200
+ _target_: agent.encoder.VisualFeatureSet
201
+ use_depth: ${use_depth}
202
+ use_color: ${use_color}
203
+ mask_input_dict:
204
+ _target_: agent.encoder.MaskInputDict
205
+ enable: ${use_masks}
206
+ representation: ${mask_representation}
207
+ mask_list: ${mask_list}
208
+ crop_input_config:
209
+ _target_: agent.encoder.CropInputConfig
210
+ color_crop_type: ${color_crop_type}
211
+ depth_crop_type: ${depth_crop_type}
212
+ segmask_crop_type: ${segmask_crop_type}
213
+ crop_hw: ${crop_hw}
214
+ crop_down_offset: ${crop_down_offset}
215
+ add_crop_binary_mask: ${add_crop_binary_mask}
216
+ add_coord_conv_map: ${add_coord_conv_map}
217
+ context_input_config:
218
+ _target_: agent.encoder.ContextInputConfig
219
+ use_color: ${use_context_color}
220
+ use_depth: ${use_context_depth}
221
+ mask_input_dict:
222
+ _target_: agent.encoder.MaskInputDict
223
+ enable: ${use_context_segmask}
224
+ representation: ${mask_representation}
225
+ mask_list: ${mask_list}
226
+ crop_input_config:
227
+ _target_: agent.encoder.CropInputConfig
228
+ color_crop_type: ${context_color_crop_type}
229
+ depth_crop_type: ${context_depth_crop_type}
230
+ segmask_crop_type: ${context_segmask_crop_type}
231
+ crop_hw: ${crop_hw}
232
+ crop_down_offset: ${crop_down_offset}
233
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
234
+ add_coord_conv_map: ${context_add_coord_conv_map}
235
+ mask_soft_approx_scheduler_config:
236
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
237
+ num_steps: 40000
238
+ initial_value: 10.0
239
+ final_value: 1000.0
240
+ interpolation_scheme: constant
241
+ use_contact_map: ${use_contact_map}
242
+ use_sdf_maps: ${use_sdf_maps}
243
+ use_normals_maps: ${use_normals_maps}
244
+ which_objects: ${which_objects}
245
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
246
+ env_dtc_max_value: ${env_dtc_max_value}
247
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
248
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
249
+ clamp_dtc: ${clamp_dtc}
250
+ max_contact_prob: ${max_contact_prob}
251
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
252
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
253
+ adaptive_normals_mask: ${adaptive_normals_mask}
254
+ max_depth: ${max_depth}
255
+ image_shape: ${agent.desired_image_shape}
256
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
257
+ learning_rate: ${agent.config.train_cfg.lr}
258
+ weight_decay: 0.0
259
+ contact_model_name: ${contact_model_name}
260
+ zero_centered: false
261
+ suite:
262
+ suite: frankagym
263
+ name: frankagym
264
+ frame_stack: ${agent.n_obs_steps}
265
+ action_repeat: 1
266
+ discount: 0.99
267
+ hidden_dim: 1024
268
+ num_train_frames: 2010
269
+ num_seed_frames: 260
270
+ num_train_epochs: 5000
271
+ validate_every_epochs: 100
272
+ validate_diffusion_on_action_loss_every_epochs: 500
273
+ train_eval_diffusion_on_action_loss_every_epochs: 500
274
+ check_topk_every_epochs: 10
275
+ save_snapshot_every_epochs: 5000
276
+ eval_every_frames: 2000
277
+ num_eval_episodes: 5
278
+ save_snapshot: true
279
+ wait_for_user_to_start_episode: true
280
+ task_make_fn:
281
+ _target_: suite.frankagym.make
282
+ name: ${task_name}
283
+ height: 240
284
+ width: 320
285
+ frame_stack: ${suite.frame_stack}
286
+ action_repeat: ${suite.action_repeat}
287
+ seed: ${seed}
288
+ enable_arm: ${agent.enable_arm}
289
+ enable_gripper: ${enable_gripper}
290
+ start_with_gripper_open: ${start_with_gripper_open}
291
+ enable_camera: ${agent.enable_camera}
292
+ path_to_depth_extrinsics: ${path_to_depth_extrinsics}
293
+ contact_estimation_model_ckpt_path: ${contact_estimation_model_ckpt_path}
294
+ x_limit: ${x_limit}
295
+ y_limit: ${y_limit}
296
+ z_limit: ${z_limit}
297
+ device: ${device}
298
+ interpolation_frequency: ${interpolation_frequency}
299
+ policy_frequency: ${policy_frequency}
300
+ debug_timestamps: ${debug_timestamps}
301
+ stop_after_action: ${stop_after_action}
302
+ open_loop: ${open_loop}
303
+ wait_for_new_camera_frames: ${wait_for_new_camera_frames}
304
+ action_key: ${action_key}
305
+ action_trajectory_horizon: ${agent.config.policy_cfg.horizon}
306
+ action_trajectories: ${action_trajectories}
307
+ path_to_zarr_dataset: ${expert_dataset}
308
+ agent_policy_cfg: ???
309
+ true_action_history: ${true_action_history}
310
+ num_train_frames_bc: 50000
311
+ num_train_frames_drq: 1100000
312
+ stddev_schedule_drq: linear(1.0,0.1,100000)
313
+ task_name: FrankaInsertion-v1
314
+ num_train_frames_vinn: 25000
315
+ num_train_frames_diffusion: 1000000
316
+ num_train_epochs_bc: 5000
317
+ num_train_epochs_diffusion: 5000
318
+ validate_every_epochs_bc: 5
319
+ validate_every_epochs_diffusion: 25
320
+ validate_diffusion_on_action_loss_every_epochs: 50
321
+ train_eval_diffusion_on_action_loss_every_epochs: 500
322
+ check_topk_every_epochs: 5
323
+ check_topk_every_epochs_diffusion: ${validate_diffusion_on_action_loss_every_epochs}
324
+ save_snapshot_every_epochs_diffusion: 5000
325
+ x_limit:
326
+ - 0.2
327
+ - 0.7
328
+ y_limit:
329
+ - -0.4
330
+ - 0.4
331
+ z_limit:
332
+ - -0.05
333
+ - 0.55
334
+ home_displacement:
335
+ - 0.55
336
+ - 0.0
337
+ - 0.55
338
+ - 180.0
339
+ - 0.0
340
+ - 0.0
341
+ enable_gripper: true
342
+ start_with_gripper_open: true
343
+ offset_mask:
344
+ - 1
345
+ - 1
346
+ - 1
347
+ - 1
348
+ - 1
349
+ - 1
350
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
jrll14xh/.hydra/hydra.yaml ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ hydra:
2
+ run:
3
+ dir: ${final_experiment_dir}
4
+ sweep:
5
+ dir: ${final_experiment_dir}
6
+ subdir: ${hydra.job.num}
7
+ launcher:
8
+ submitit_folder: ${final_experiment_dir}/.slurm
9
+ timeout_min: 60
10
+ cpus_per_task: null
11
+ gpus_per_node: null
12
+ tasks_per_node: 1
13
+ mem_gb: null
14
+ nodes: 1
15
+ name: ${hydra.job.name}
16
+ stderr_to_stdout: false
17
+ _target_: hydra_plugins.hydra_submitit_launcher.submitit_launcher.LocalLauncher
18
+ sweeper:
19
+ _target_: hydra._internal.core_plugins.basic_sweeper.BasicSweeper
20
+ max_batch_size: null
21
+ params: null
22
+ help:
23
+ app_name: ${hydra.job.name}
24
+ header: '${hydra.help.app_name} is powered by Hydra.
25
+
26
+ '
27
+ footer: 'Powered by Hydra (https://hydra.cc)
28
+
29
+ Use --hydra-help to view Hydra specific help
30
+
31
+ '
32
+ template: '${hydra.help.header}
33
+
34
+ == Configuration groups ==
35
+
36
+ Compose your configuration from those groups (group=option)
37
+
38
+
39
+ $APP_CONFIG_GROUPS
40
+
41
+
42
+ == Config ==
43
+
44
+ Override anything in the config (foo.bar=value)
45
+
46
+
47
+ $CONFIG
48
+
49
+
50
+ ${hydra.help.footer}
51
+
52
+ '
53
+ hydra_help:
54
+ template: 'Hydra (${hydra.runtime.version})
55
+
56
+ See https://hydra.cc for more info.
57
+
58
+
59
+ == Flags ==
60
+
61
+ $FLAGS_HELP
62
+
63
+
64
+ == Configuration groups ==
65
+
66
+ Compose your configuration from those groups (For example, append hydra/job_logging=disabled
67
+ to command line)
68
+
69
+
70
+ $HYDRA_CONFIG_GROUPS
71
+
72
+
73
+ Use ''--cfg hydra'' to Show the Hydra config.
74
+
75
+ '
76
+ hydra_help: ???
77
+ hydra_logging:
78
+ version: 1
79
+ formatters:
80
+ simple:
81
+ format: '[%(asctime)s][HYDRA] %(message)s'
82
+ handlers:
83
+ console:
84
+ class: logging.StreamHandler
85
+ formatter: simple
86
+ stream: ext://sys.stdout
87
+ root:
88
+ level: INFO
89
+ handlers:
90
+ - console
91
+ loggers:
92
+ logging_example:
93
+ level: DEBUG
94
+ disable_existing_loggers: false
95
+ job_logging:
96
+ version: 1
97
+ formatters:
98
+ simple:
99
+ format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s'
100
+ handlers:
101
+ console:
102
+ class: logging.StreamHandler
103
+ formatter: simple
104
+ stream: ext://sys.stdout
105
+ file:
106
+ class: logging.FileHandler
107
+ formatter: simple
108
+ filename: ${hydra.runtime.output_dir}/${hydra.job.name}.log
109
+ root:
110
+ level: INFO
111
+ handlers:
112
+ - console
113
+ - file
114
+ disable_existing_loggers: false
115
+ env: {}
116
+ mode: RUN
117
+ searchpath: []
118
+ callbacks: {}
119
+ output_subdir: .hydra
120
+ overrides:
121
+ hydra:
122
+ - hydra.mode=RUN
123
+ task:
124
+ - agent=diffusion
125
+ - suite=frankagym
126
+ - suite/frankagym_task@_global_=insertion
127
+ job:
128
+ name: eval_policy
129
+ chdir: true
130
+ override_dirname: agent=diffusion,suite/frankagym_task@_global_=insertion,suite=frankagym
131
+ id: ???
132
+ num: ???
133
+ config_name: config_eval
134
+ env_set: {}
135
+ env_copy: []
136
+ config:
137
+ override_dirname:
138
+ kv_sep: '='
139
+ item_sep: ','
140
+ exclude_keys: []
141
+ runtime:
142
+ version: 1.3.2
143
+ version_base: '1.1'
144
+ cwd: /home/leonmkim/fish_leon/FISH
145
+ config_sources:
146
+ - path: hydra.conf
147
+ schema: pkg
148
+ provider: hydra
149
+ - path: /home/leonmkim/fish_leon/FISH/cfgs
150
+ schema: file
151
+ provider: main
152
+ - path: ''
153
+ schema: structured
154
+ provider: schema
155
+ output_dir: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/jrll14xh
156
+ choices:
157
+ suite: frankagym
158
+ suite/frankagym_task@_global_: insertion
159
+ agent: diffusion
160
+ hydra/env: default
161
+ hydra/callbacks: null
162
+ hydra/job_logging: default
163
+ hydra/hydra_logging: default
164
+ hydra/hydra_help: default
165
+ hydra/help: default
166
+ hydra/sweeper: basic
167
+ hydra/launcher: submitit_local
168
+ hydra/output: default
169
+ verbose: false
jrll14xh/.hydra/overrides.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ - agent=diffusion
2
+ - suite=frankagym
3
+ - suite/frankagym_task@_global_=insertion
jrll14xh/eval_policy.log ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ [2025-01-03 20:23:12,469][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:428: UserWarning:
2
+ The version_base parameter is not specified.
3
+ Please specify a compatability version level, or None.
4
+ Will assume defaults for version 1.1
5
+ @hydra.main(config_path='cfgs', config_name='config_eval')
6
+
7
+ [2025-01-03 20:23:12,474][rospy.core][INFO] - signal_shutdown [atexit]
jrmd8cpt/.hydra/config.yaml ADDED
@@ -0,0 +1,350 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ root_dir: /home/${oc.env:USER}/fish_leon
2
+ nstep: 3
3
+ seed: 41
4
+ dataset_shuffle_seed: ${seed}
5
+ device: cuda
6
+ save_video: true
7
+ save_buffer: true
8
+ use_tb: true
9
+ baseline: false
10
+ use_wandb: true
11
+ eval: true
12
+ process_contact_features: ${eval}
13
+ obs_type: pixels
14
+ use_color: true
15
+ use_depth: true
16
+ use_masks: false
17
+ mask_list:
18
+ - EE_obj_mask
19
+ mask_representation: channels
20
+ crop_hw:
21
+ - 144
22
+ - 144
23
+ crop_down_offset: 48
24
+ color_crop_type: null
25
+ depth_crop_type: null
26
+ segmask_crop_type: null
27
+ add_crop_binary_mask: false
28
+ add_coord_conv_map: false
29
+ use_context_color: false
30
+ use_context_depth: false
31
+ use_context_segmask: false
32
+ context_color_crop_type: null
33
+ context_depth_crop_type: null
34
+ context_segmask_crop_type: null
35
+ context_add_crop_binary_mask: false
36
+ context_add_coord_conv_map: false
37
+ use_contact_map: false
38
+ use_sdf_maps: false
39
+ use_normals_maps: false
40
+ which_objects: both
41
+ max_contact_prob: 0.1
42
+ max_depth: 2.0
43
+ grasped_dtc_max_value: 0.105
44
+ env_dtc_max_value: 0.425
45
+ grasped_normals_mask_max_dtc_value: 0.105
46
+ env_normals_mask_max_dtc_value: 0.425
47
+ clamp_dtc: true
48
+ dtc_adaptive_normalization: false
49
+ mask_normals_within_sdf: true
50
+ adaptive_normals_mask: true
51
+ learnable_contact_preprocess_params: false
52
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_ctxt_seed_183386_epoch_9
53
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
54
+ num_eval: 5
55
+ debug_timestamps: false
56
+ open_loop: false
57
+ action_trajectories: true
58
+ stop_after_action: false
59
+ interpolation_frequency: 25
60
+ policy_frequency: 5
61
+ wait_for_new_camera_frames: true
62
+ random_start: false
63
+ eval_starts: ${root_dir}/FISH/eval_starts/${suite.name}_${obs_type}/${task_name}
64
+ train_demo_idxs_list_or_num: null
65
+ num_valid_demos: null
66
+ val_num_groups: 3
67
+ name_of_expert_demo: 112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
68
+ expert_dataset_dirpath: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_expert_demo}
69
+ expert_dataset: ${expert_dataset_dirpath}/demos.zarr
70
+ action_key: ${oc.if_else:${action_trajectories}, 'action_trajectory_${interpolation_frequency}hz',
71
+ 'action'}
72
+ semantic_demo_grouping_name: semantic_demo_grouping.yaml
73
+ semantic_demo_grouping: ${expert_dataset_dirpath}/${semantic_demo_grouping_name}
74
+ expert_dataset_config: ${expert_dataset_dirpath}/demo_config.yaml
75
+ bc_regularize: false
76
+ bc_weight_type: qfilter
77
+ load_checkpoint: ${agent.load_checkpoint}
78
+ wandb_run_id: '1926_1'
79
+ true_action_history: false
80
+ wandb_notes: null
81
+ checkpoint_epoch: 12000
82
+ load_residual_weight: false
83
+ checkpoint_root_dir: /home/${oc.env:USER}/fish_leon/FISH
84
+ checkpoint_weight_dir: ${checkpoint_root_dir}/exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
85
+ residual_weight: ${root_dir}/FISH/weights/${suite.name}_${obs_type}/${task_name}/weight.pt
86
+ experiment_dir: ./exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
87
+ final_experiment_dir: ${experiment_dir}/${oc.generate_run_id:}
88
+ agent:
89
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
90
+ name: diffusion_policy
91
+ load_checkpoint: ${eval}
92
+ device: ${device}
93
+ n_obs_steps: ${.config.policy_cfg.n_obs_steps}
94
+ suite_name: ${suite.name}
95
+ obs_type: ${obs_type}
96
+ enable_arm: ${eval}
97
+ enable_camera: ${eval}
98
+ use_tb: ${use_tb}
99
+ desired_image_shape:
100
+ - 13
101
+ - 180
102
+ - 240
103
+ orig_cam_shape:
104
+ - 3
105
+ - 240
106
+ - 320
107
+ config:
108
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
109
+ compile: false
110
+ device: ${device}
111
+ cam_resize_shape: ${agent.desired_image_shape}
112
+ orig_cam_shape: ${agent.orig_cam_shape}
113
+ policy_frequency: ${policy_frequency}
114
+ interpolation_frequency: ${interpolation_frequency}
115
+ policy_cfg:
116
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
117
+ n_obs_steps: 1
118
+ horizon: 36
119
+ n_action_steps: ${agent.config.policy_cfg.horizon}
120
+ input_shapes:
121
+ observation.image: ${agent.config.cam_resize_shape}
122
+ context_observation.image: ${agent.config.cam_resize_shape}
123
+ observation.state:
124
+ - 8
125
+ observation.action_history:
126
+ - 7
127
+ output_shapes:
128
+ action:
129
+ - 7
130
+ input_normalization_modes:
131
+ observation.image: mean_std
132
+ observation.state: min_max
133
+ observation.action_history: min_max
134
+ output_normalization_modes:
135
+ action: min_max
136
+ vision_backbone: resnet18
137
+ pretrained_backbone_weights: null
138
+ transforms:
139
+ - _target_: torchaug.transforms.RandomAffine
140
+ degrees:
141
+ - -5
142
+ - 5
143
+ translate:
144
+ - 0.05
145
+ - 0.05
146
+ batch_transform: true
147
+ num_chunks: -1
148
+ batch_inplace: true
149
+ - _target_: torchaug.transforms.RandomColorJitter
150
+ brightness: 0.3
151
+ contrast: 0.4
152
+ saturation: 0.5
153
+ hue: 0.08
154
+ batch_transform: true
155
+ num_chunks: -1
156
+ batch_inplace: true
157
+ use_group_norm: true
158
+ spatial_softmax_num_keypoints: 32
159
+ action_history_encoder_config:
160
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
161
+ in_channels: 7
162
+ out_channels: 32
163
+ history_length: ${agent.config.policy_cfg.n_action_steps}
164
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
165
+ downsample_kernel_size: 3
166
+ downsample_stride: 2
167
+ downsample_padding: 1
168
+ down_dims:
169
+ - 256
170
+ - 512
171
+ - 1024
172
+ kernel_size: 5
173
+ n_groups: 8
174
+ diffusion_step_embed_dim: 128
175
+ use_film_scale_modulation: true
176
+ noise_scheduler_type: DDIM
177
+ beta_schedule: squaredcos_cap_v2
178
+ beta_start: 0.0001
179
+ beta_end: 0.02
180
+ prediction_type: epsilon
181
+ clip_sample: true
182
+ clip_sample_range: 1.0
183
+ num_train_timesteps: 50
184
+ num_inference_steps: 10
185
+ do_mask_loss_for_padding: false
186
+ train_cfg:
187
+ _target_: utils.TrainConfig
188
+ lr: 0.0001
189
+ lr_scheduler: cosine
190
+ lr_warmup_steps: 500
191
+ adam_betas:
192
+ - 0.95
193
+ - 0.999
194
+ adam_eps: 1.0e-08
195
+ adam_weight_decay: 1.0e-06
196
+ grad_clip_norm: 10
197
+ offline_steps: ${num_train_frames_diffusion}
198
+ use_amp: true
199
+ observation_cfg:
200
+ _target_: agent.encoder.VisualFeatureSet
201
+ use_depth: ${use_depth}
202
+ use_color: ${use_color}
203
+ mask_input_dict:
204
+ _target_: agent.encoder.MaskInputDict
205
+ enable: ${use_masks}
206
+ representation: ${mask_representation}
207
+ mask_list: ${mask_list}
208
+ crop_input_config:
209
+ _target_: agent.encoder.CropInputConfig
210
+ color_crop_type: ${color_crop_type}
211
+ depth_crop_type: ${depth_crop_type}
212
+ segmask_crop_type: ${segmask_crop_type}
213
+ crop_hw: ${crop_hw}
214
+ crop_down_offset: ${crop_down_offset}
215
+ add_crop_binary_mask: ${add_crop_binary_mask}
216
+ add_coord_conv_map: ${add_coord_conv_map}
217
+ context_input_config:
218
+ _target_: agent.encoder.ContextInputConfig
219
+ use_color: ${use_context_color}
220
+ use_depth: ${use_context_depth}
221
+ mask_input_dict:
222
+ _target_: agent.encoder.MaskInputDict
223
+ enable: ${use_context_segmask}
224
+ representation: ${mask_representation}
225
+ mask_list: ${mask_list}
226
+ crop_input_config:
227
+ _target_: agent.encoder.CropInputConfig
228
+ color_crop_type: ${context_color_crop_type}
229
+ depth_crop_type: ${context_depth_crop_type}
230
+ segmask_crop_type: ${context_segmask_crop_type}
231
+ crop_hw: ${crop_hw}
232
+ crop_down_offset: ${crop_down_offset}
233
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
234
+ add_coord_conv_map: ${context_add_coord_conv_map}
235
+ mask_soft_approx_scheduler_config:
236
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
237
+ num_steps: 40000
238
+ initial_value: 10.0
239
+ final_value: 1000.0
240
+ interpolation_scheme: constant
241
+ use_contact_map: ${use_contact_map}
242
+ use_sdf_maps: ${use_sdf_maps}
243
+ use_normals_maps: ${use_normals_maps}
244
+ which_objects: ${which_objects}
245
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
246
+ env_dtc_max_value: ${env_dtc_max_value}
247
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
248
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
249
+ clamp_dtc: ${clamp_dtc}
250
+ max_contact_prob: ${max_contact_prob}
251
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
252
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
253
+ adaptive_normals_mask: ${adaptive_normals_mask}
254
+ max_depth: ${max_depth}
255
+ image_shape: ${agent.desired_image_shape}
256
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
257
+ learning_rate: ${agent.config.train_cfg.lr}
258
+ weight_decay: 0.0
259
+ contact_model_name: ${contact_model_name}
260
+ zero_centered: false
261
+ suite:
262
+ suite: frankagym
263
+ name: frankagym
264
+ frame_stack: ${agent.n_obs_steps}
265
+ action_repeat: 1
266
+ discount: 0.99
267
+ hidden_dim: 1024
268
+ num_train_frames: 2010
269
+ num_seed_frames: 260
270
+ num_train_epochs: 5000
271
+ validate_every_epochs: 100
272
+ validate_diffusion_on_action_loss_every_epochs: 500
273
+ train_eval_diffusion_on_action_loss_every_epochs: 500
274
+ check_topk_every_epochs: 10
275
+ save_snapshot_every_epochs: 5000
276
+ eval_every_frames: 2000
277
+ num_eval_episodes: 5
278
+ save_snapshot: true
279
+ wait_for_user_to_start_episode: true
280
+ task_make_fn:
281
+ _target_: suite.frankagym.make
282
+ name: ${task_name}
283
+ height: 240
284
+ width: 320
285
+ frame_stack: ${suite.frame_stack}
286
+ action_repeat: ${suite.action_repeat}
287
+ seed: ${seed}
288
+ enable_arm: ${agent.enable_arm}
289
+ enable_gripper: ${enable_gripper}
290
+ start_with_gripper_open: ${start_with_gripper_open}
291
+ enable_camera: ${agent.enable_camera}
292
+ path_to_depth_extrinsics: ${path_to_depth_extrinsics}
293
+ contact_estimation_model_ckpt_path: ${contact_estimation_model_ckpt_path}
294
+ x_limit: ${x_limit}
295
+ y_limit: ${y_limit}
296
+ z_limit: ${z_limit}
297
+ device: ${device}
298
+ interpolation_frequency: ${interpolation_frequency}
299
+ policy_frequency: ${policy_frequency}
300
+ debug_timestamps: ${debug_timestamps}
301
+ stop_after_action: ${stop_after_action}
302
+ open_loop: ${open_loop}
303
+ wait_for_new_camera_frames: ${wait_for_new_camera_frames}
304
+ action_key: ${action_key}
305
+ action_trajectory_horizon: ${agent.config.policy_cfg.horizon}
306
+ action_trajectories: ${action_trajectories}
307
+ path_to_zarr_dataset: ${expert_dataset}
308
+ agent_policy_cfg: ???
309
+ true_action_history: ${true_action_history}
310
+ num_train_frames_bc: 50000
311
+ num_train_frames_drq: 1100000
312
+ stddev_schedule_drq: linear(1.0,0.1,100000)
313
+ task_name: FrankaInsertion-v1
314
+ num_train_frames_vinn: 25000
315
+ num_train_frames_diffusion: 1000000
316
+ num_train_epochs_bc: 5000
317
+ num_train_epochs_diffusion: 5000
318
+ validate_every_epochs_bc: 5
319
+ validate_every_epochs_diffusion: 25
320
+ validate_diffusion_on_action_loss_every_epochs: 50
321
+ train_eval_diffusion_on_action_loss_every_epochs: 500
322
+ check_topk_every_epochs: 5
323
+ check_topk_every_epochs_diffusion: ${validate_diffusion_on_action_loss_every_epochs}
324
+ save_snapshot_every_epochs_diffusion: 5000
325
+ x_limit:
326
+ - 0.2
327
+ - 0.7
328
+ y_limit:
329
+ - -0.4
330
+ - 0.4
331
+ z_limit:
332
+ - -0.05
333
+ - 0.55
334
+ home_displacement:
335
+ - 0.55
336
+ - 0.0
337
+ - 0.55
338
+ - 180.0
339
+ - 0.0
340
+ - 0.0
341
+ enable_gripper: true
342
+ start_with_gripper_open: true
343
+ offset_mask:
344
+ - 1
345
+ - 1
346
+ - 1
347
+ - 1
348
+ - 1
349
+ - 1
350
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
jrmd8cpt/.hydra/hydra.yaml ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ hydra:
2
+ run:
3
+ dir: ${final_experiment_dir}
4
+ sweep:
5
+ dir: ${final_experiment_dir}
6
+ subdir: ${hydra.job.num}
7
+ launcher:
8
+ submitit_folder: ${final_experiment_dir}/.slurm
9
+ timeout_min: 60
10
+ cpus_per_task: null
11
+ gpus_per_node: null
12
+ tasks_per_node: 1
13
+ mem_gb: null
14
+ nodes: 1
15
+ name: ${hydra.job.name}
16
+ stderr_to_stdout: false
17
+ _target_: hydra_plugins.hydra_submitit_launcher.submitit_launcher.LocalLauncher
18
+ sweeper:
19
+ _target_: hydra._internal.core_plugins.basic_sweeper.BasicSweeper
20
+ max_batch_size: null
21
+ params: null
22
+ help:
23
+ app_name: ${hydra.job.name}
24
+ header: '${hydra.help.app_name} is powered by Hydra.
25
+
26
+ '
27
+ footer: 'Powered by Hydra (https://hydra.cc)
28
+
29
+ Use --hydra-help to view Hydra specific help
30
+
31
+ '
32
+ template: '${hydra.help.header}
33
+
34
+ == Configuration groups ==
35
+
36
+ Compose your configuration from those groups (group=option)
37
+
38
+
39
+ $APP_CONFIG_GROUPS
40
+
41
+
42
+ == Config ==
43
+
44
+ Override anything in the config (foo.bar=value)
45
+
46
+
47
+ $CONFIG
48
+
49
+
50
+ ${hydra.help.footer}
51
+
52
+ '
53
+ hydra_help:
54
+ template: 'Hydra (${hydra.runtime.version})
55
+
56
+ See https://hydra.cc for more info.
57
+
58
+
59
+ == Flags ==
60
+
61
+ $FLAGS_HELP
62
+
63
+
64
+ == Configuration groups ==
65
+
66
+ Compose your configuration from those groups (For example, append hydra/job_logging=disabled
67
+ to command line)
68
+
69
+
70
+ $HYDRA_CONFIG_GROUPS
71
+
72
+
73
+ Use ''--cfg hydra'' to Show the Hydra config.
74
+
75
+ '
76
+ hydra_help: ???
77
+ hydra_logging:
78
+ version: 1
79
+ formatters:
80
+ simple:
81
+ format: '[%(asctime)s][HYDRA] %(message)s'
82
+ handlers:
83
+ console:
84
+ class: logging.StreamHandler
85
+ formatter: simple
86
+ stream: ext://sys.stdout
87
+ root:
88
+ level: INFO
89
+ handlers:
90
+ - console
91
+ loggers:
92
+ logging_example:
93
+ level: DEBUG
94
+ disable_existing_loggers: false
95
+ job_logging:
96
+ version: 1
97
+ formatters:
98
+ simple:
99
+ format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s'
100
+ handlers:
101
+ console:
102
+ class: logging.StreamHandler
103
+ formatter: simple
104
+ stream: ext://sys.stdout
105
+ file:
106
+ class: logging.FileHandler
107
+ formatter: simple
108
+ filename: ${hydra.runtime.output_dir}/${hydra.job.name}.log
109
+ root:
110
+ level: INFO
111
+ handlers:
112
+ - console
113
+ - file
114
+ disable_existing_loggers: false
115
+ env: {}
116
+ mode: RUN
117
+ searchpath: []
118
+ callbacks: {}
119
+ output_subdir: .hydra
120
+ overrides:
121
+ hydra:
122
+ - hydra.mode=RUN
123
+ task:
124
+ - agent=diffusion
125
+ - suite=frankagym
126
+ - suite/frankagym_task@_global_=insertion
127
+ job:
128
+ name: eval_policy
129
+ chdir: true
130
+ override_dirname: agent=diffusion,suite/frankagym_task@_global_=insertion,suite=frankagym
131
+ id: ???
132
+ num: ???
133
+ config_name: config_eval
134
+ env_set: {}
135
+ env_copy: []
136
+ config:
137
+ override_dirname:
138
+ kv_sep: '='
139
+ item_sep: ','
140
+ exclude_keys: []
141
+ runtime:
142
+ version: 1.3.2
143
+ version_base: '1.1'
144
+ cwd: /home/leonmkim/fish_leon/FISH
145
+ config_sources:
146
+ - path: hydra.conf
147
+ schema: pkg
148
+ provider: hydra
149
+ - path: /home/leonmkim/fish_leon/FISH/cfgs
150
+ schema: file
151
+ provider: main
152
+ - path: ''
153
+ schema: structured
154
+ provider: schema
155
+ output_dir: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/jrmd8cpt
156
+ choices:
157
+ suite: frankagym
158
+ suite/frankagym_task@_global_: insertion
159
+ agent: diffusion
160
+ hydra/env: default
161
+ hydra/callbacks: null
162
+ hydra/job_logging: default
163
+ hydra/hydra_logging: default
164
+ hydra/hydra_help: default
165
+ hydra/help: default
166
+ hydra/sweeper: basic
167
+ hydra/launcher: submitit_local
168
+ hydra/output: default
169
+ verbose: false
jrmd8cpt/.hydra/overrides.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ - agent=diffusion
2
+ - suite=frankagym
3
+ - suite/frankagym_task@_global_=insertion
jrmd8cpt/eval_policy.log ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [2025-01-03 21:12:58,368][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:428: UserWarning:
2
+ The version_base parameter is not specified.
3
+ Please specify a compatability version level, or None.
4
+ Will assume defaults for version 1.1
5
+ @hydra.main(config_path='cfgs', config_name='config_eval')
6
+
7
+ [2025-01-03 21:12:58,372][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:365: UserWarning:
8
+ The version_base parameter is not specified.
9
+ Please specify a compatability version level, or None.
10
+ Will assume defaults for version 1.1
11
+ hydra.initialize(
12
+
13
+ [2025-01-03 21:13:02,291][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_policy.py:414: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
14
+ payload = torch.load(f)
15
+
p96n5ha2/.hydra/config.yaml ADDED
@@ -0,0 +1,350 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ root_dir: /home/${oc.env:USER}/fish_leon
2
+ nstep: 3
3
+ seed: 41
4
+ dataset_shuffle_seed: ${seed}
5
+ device: cuda
6
+ save_video: true
7
+ save_buffer: true
8
+ use_tb: true
9
+ baseline: false
10
+ use_wandb: true
11
+ eval: true
12
+ process_contact_features: ${eval}
13
+ obs_type: pixels
14
+ use_color: true
15
+ use_depth: true
16
+ use_masks: false
17
+ mask_list:
18
+ - EE_obj_mask
19
+ mask_representation: channels
20
+ crop_hw:
21
+ - 144
22
+ - 144
23
+ crop_down_offset: 48
24
+ color_crop_type: null
25
+ depth_crop_type: null
26
+ segmask_crop_type: null
27
+ add_crop_binary_mask: false
28
+ add_coord_conv_map: false
29
+ use_context_color: false
30
+ use_context_depth: false
31
+ use_context_segmask: false
32
+ context_color_crop_type: null
33
+ context_depth_crop_type: null
34
+ context_segmask_crop_type: null
35
+ context_add_crop_binary_mask: false
36
+ context_add_coord_conv_map: false
37
+ use_contact_map: false
38
+ use_sdf_maps: false
39
+ use_normals_maps: false
40
+ which_objects: both
41
+ max_contact_prob: 0.1
42
+ max_depth: 2.0
43
+ grasped_dtc_max_value: 0.105
44
+ env_dtc_max_value: 0.425
45
+ grasped_normals_mask_max_dtc_value: 0.105
46
+ env_normals_mask_max_dtc_value: 0.425
47
+ clamp_dtc: true
48
+ dtc_adaptive_normalization: false
49
+ mask_normals_within_sdf: true
50
+ adaptive_normals_mask: true
51
+ learnable_contact_preprocess_params: false
52
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_ctxt_seed_183386_epoch_9
53
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
54
+ num_eval: 5
55
+ debug_timestamps: false
56
+ open_loop: false
57
+ action_trajectories: true
58
+ stop_after_action: false
59
+ interpolation_frequency: 25
60
+ policy_frequency: 5
61
+ wait_for_new_camera_frames: true
62
+ random_start: false
63
+ eval_starts: ${root_dir}/FISH/eval_starts/${suite.name}_${obs_type}/${task_name}
64
+ train_demo_idxs_list_or_num: null
65
+ num_valid_demos: null
66
+ val_num_groups: 3
67
+ name_of_expert_demo: 112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
68
+ expert_dataset_dirpath: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_expert_demo}
69
+ expert_dataset: ${expert_dataset_dirpath}/demos.zarr
70
+ action_key: ${oc.if_else:${action_trajectories}, 'action_trajectory_${interpolation_frequency}hz',
71
+ 'action'}
72
+ semantic_demo_grouping_name: semantic_demo_grouping.yaml
73
+ semantic_demo_grouping: ${expert_dataset_dirpath}/${semantic_demo_grouping_name}
74
+ expert_dataset_config: ${expert_dataset_dirpath}/demo_config.yaml
75
+ bc_regularize: false
76
+ bc_weight_type: qfilter
77
+ load_checkpoint: ${agent.load_checkpoint}
78
+ wandb_run_id: '1926_1'
79
+ true_action_history: false
80
+ wandb_notes: null
81
+ checkpoint_epoch: 12000
82
+ load_residual_weight: false
83
+ checkpoint_root_dir: /home/${oc.env:USER}/fish_leon/FISH
84
+ checkpoint_weight_dir: ${checkpoint_root_dir}/exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
85
+ residual_weight: ${root_dir}/FISH/weights/${suite.name}_${obs_type}/${task_name}/weight.pt
86
+ experiment_dir: ./exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
87
+ final_experiment_dir: ${experiment_dir}/${oc.generate_run_id:}
88
+ agent:
89
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
90
+ name: diffusion_policy
91
+ load_checkpoint: ${eval}
92
+ device: ${device}
93
+ n_obs_steps: ${.config.policy_cfg.n_obs_steps}
94
+ suite_name: ${suite.name}
95
+ obs_type: ${obs_type}
96
+ enable_arm: ${eval}
97
+ enable_camera: ${eval}
98
+ use_tb: ${use_tb}
99
+ desired_image_shape:
100
+ - 13
101
+ - 180
102
+ - 240
103
+ orig_cam_shape:
104
+ - 3
105
+ - 240
106
+ - 320
107
+ config:
108
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
109
+ compile: false
110
+ device: ${device}
111
+ cam_resize_shape: ${agent.desired_image_shape}
112
+ orig_cam_shape: ${agent.orig_cam_shape}
113
+ policy_frequency: ${policy_frequency}
114
+ interpolation_frequency: ${interpolation_frequency}
115
+ policy_cfg:
116
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
117
+ n_obs_steps: 1
118
+ horizon: 36
119
+ n_action_steps: ${agent.config.policy_cfg.horizon}
120
+ input_shapes:
121
+ observation.image: ${agent.config.cam_resize_shape}
122
+ context_observation.image: ${agent.config.cam_resize_shape}
123
+ observation.state:
124
+ - 8
125
+ observation.action_history:
126
+ - 7
127
+ output_shapes:
128
+ action:
129
+ - 7
130
+ input_normalization_modes:
131
+ observation.image: mean_std
132
+ observation.state: min_max
133
+ observation.action_history: min_max
134
+ output_normalization_modes:
135
+ action: min_max
136
+ vision_backbone: resnet18
137
+ pretrained_backbone_weights: null
138
+ transforms:
139
+ - _target_: torchaug.transforms.RandomAffine
140
+ degrees:
141
+ - -5
142
+ - 5
143
+ translate:
144
+ - 0.05
145
+ - 0.05
146
+ batch_transform: true
147
+ num_chunks: -1
148
+ batch_inplace: true
149
+ - _target_: torchaug.transforms.RandomColorJitter
150
+ brightness: 0.3
151
+ contrast: 0.4
152
+ saturation: 0.5
153
+ hue: 0.08
154
+ batch_transform: true
155
+ num_chunks: -1
156
+ batch_inplace: true
157
+ use_group_norm: true
158
+ spatial_softmax_num_keypoints: 32
159
+ action_history_encoder_config:
160
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
161
+ in_channels: 7
162
+ out_channels: 32
163
+ history_length: ${agent.config.policy_cfg.n_action_steps}
164
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
165
+ downsample_kernel_size: 3
166
+ downsample_stride: 2
167
+ downsample_padding: 1
168
+ down_dims:
169
+ - 256
170
+ - 512
171
+ - 1024
172
+ kernel_size: 5
173
+ n_groups: 8
174
+ diffusion_step_embed_dim: 128
175
+ use_film_scale_modulation: true
176
+ noise_scheduler_type: DDIM
177
+ beta_schedule: squaredcos_cap_v2
178
+ beta_start: 0.0001
179
+ beta_end: 0.02
180
+ prediction_type: epsilon
181
+ clip_sample: true
182
+ clip_sample_range: 1.0
183
+ num_train_timesteps: 50
184
+ num_inference_steps: 10
185
+ do_mask_loss_for_padding: false
186
+ train_cfg:
187
+ _target_: utils.TrainConfig
188
+ lr: 0.0001
189
+ lr_scheduler: cosine
190
+ lr_warmup_steps: 500
191
+ adam_betas:
192
+ - 0.95
193
+ - 0.999
194
+ adam_eps: 1.0e-08
195
+ adam_weight_decay: 1.0e-06
196
+ grad_clip_norm: 10
197
+ offline_steps: ${num_train_frames_diffusion}
198
+ use_amp: true
199
+ observation_cfg:
200
+ _target_: agent.encoder.VisualFeatureSet
201
+ use_depth: ${use_depth}
202
+ use_color: ${use_color}
203
+ mask_input_dict:
204
+ _target_: agent.encoder.MaskInputDict
205
+ enable: ${use_masks}
206
+ representation: ${mask_representation}
207
+ mask_list: ${mask_list}
208
+ crop_input_config:
209
+ _target_: agent.encoder.CropInputConfig
210
+ color_crop_type: ${color_crop_type}
211
+ depth_crop_type: ${depth_crop_type}
212
+ segmask_crop_type: ${segmask_crop_type}
213
+ crop_hw: ${crop_hw}
214
+ crop_down_offset: ${crop_down_offset}
215
+ add_crop_binary_mask: ${add_crop_binary_mask}
216
+ add_coord_conv_map: ${add_coord_conv_map}
217
+ context_input_config:
218
+ _target_: agent.encoder.ContextInputConfig
219
+ use_color: ${use_context_color}
220
+ use_depth: ${use_context_depth}
221
+ mask_input_dict:
222
+ _target_: agent.encoder.MaskInputDict
223
+ enable: ${use_context_segmask}
224
+ representation: ${mask_representation}
225
+ mask_list: ${mask_list}
226
+ crop_input_config:
227
+ _target_: agent.encoder.CropInputConfig
228
+ color_crop_type: ${context_color_crop_type}
229
+ depth_crop_type: ${context_depth_crop_type}
230
+ segmask_crop_type: ${context_segmask_crop_type}
231
+ crop_hw: ${crop_hw}
232
+ crop_down_offset: ${crop_down_offset}
233
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
234
+ add_coord_conv_map: ${context_add_coord_conv_map}
235
+ mask_soft_approx_scheduler_config:
236
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
237
+ num_steps: 40000
238
+ initial_value: 10.0
239
+ final_value: 1000.0
240
+ interpolation_scheme: constant
241
+ use_contact_map: ${use_contact_map}
242
+ use_sdf_maps: ${use_sdf_maps}
243
+ use_normals_maps: ${use_normals_maps}
244
+ which_objects: ${which_objects}
245
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
246
+ env_dtc_max_value: ${env_dtc_max_value}
247
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
248
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
249
+ clamp_dtc: ${clamp_dtc}
250
+ max_contact_prob: ${max_contact_prob}
251
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
252
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
253
+ adaptive_normals_mask: ${adaptive_normals_mask}
254
+ max_depth: ${max_depth}
255
+ image_shape: ${agent.desired_image_shape}
256
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
257
+ learning_rate: ${agent.config.train_cfg.lr}
258
+ weight_decay: 0.0
259
+ contact_model_name: ${contact_model_name}
260
+ zero_centered: false
261
+ suite:
262
+ suite: frankagym
263
+ name: frankagym
264
+ frame_stack: ${agent.n_obs_steps}
265
+ action_repeat: 1
266
+ discount: 0.99
267
+ hidden_dim: 1024
268
+ num_train_frames: 2010
269
+ num_seed_frames: 260
270
+ num_train_epochs: 5000
271
+ validate_every_epochs: 100
272
+ validate_diffusion_on_action_loss_every_epochs: 500
273
+ train_eval_diffusion_on_action_loss_every_epochs: 500
274
+ check_topk_every_epochs: 10
275
+ save_snapshot_every_epochs: 5000
276
+ eval_every_frames: 2000
277
+ num_eval_episodes: 5
278
+ save_snapshot: true
279
+ wait_for_user_to_start_episode: true
280
+ task_make_fn:
281
+ _target_: suite.frankagym.make
282
+ name: ${task_name}
283
+ height: 240
284
+ width: 320
285
+ frame_stack: ${suite.frame_stack}
286
+ action_repeat: ${suite.action_repeat}
287
+ seed: ${seed}
288
+ enable_arm: ${agent.enable_arm}
289
+ enable_gripper: ${enable_gripper}
290
+ start_with_gripper_open: ${start_with_gripper_open}
291
+ enable_camera: ${agent.enable_camera}
292
+ path_to_depth_extrinsics: ${path_to_depth_extrinsics}
293
+ contact_estimation_model_ckpt_path: ${contact_estimation_model_ckpt_path}
294
+ x_limit: ${x_limit}
295
+ y_limit: ${y_limit}
296
+ z_limit: ${z_limit}
297
+ device: ${device}
298
+ interpolation_frequency: ${interpolation_frequency}
299
+ policy_frequency: ${policy_frequency}
300
+ debug_timestamps: ${debug_timestamps}
301
+ stop_after_action: ${stop_after_action}
302
+ open_loop: ${open_loop}
303
+ wait_for_new_camera_frames: ${wait_for_new_camera_frames}
304
+ action_key: ${action_key}
305
+ action_trajectory_horizon: ${agent.config.policy_cfg.horizon}
306
+ action_trajectories: ${action_trajectories}
307
+ path_to_zarr_dataset: ${expert_dataset}
308
+ agent_policy_cfg: ???
309
+ true_action_history: ${true_action_history}
310
+ num_train_frames_bc: 50000
311
+ num_train_frames_drq: 1100000
312
+ stddev_schedule_drq: linear(1.0,0.1,100000)
313
+ task_name: FrankaInsertion-v1
314
+ num_train_frames_vinn: 25000
315
+ num_train_frames_diffusion: 1000000
316
+ num_train_epochs_bc: 5000
317
+ num_train_epochs_diffusion: 5000
318
+ validate_every_epochs_bc: 5
319
+ validate_every_epochs_diffusion: 25
320
+ validate_diffusion_on_action_loss_every_epochs: 50
321
+ train_eval_diffusion_on_action_loss_every_epochs: 500
322
+ check_topk_every_epochs: 5
323
+ check_topk_every_epochs_diffusion: ${validate_diffusion_on_action_loss_every_epochs}
324
+ save_snapshot_every_epochs_diffusion: 5000
325
+ x_limit:
326
+ - 0.2
327
+ - 0.7
328
+ y_limit:
329
+ - -0.4
330
+ - 0.4
331
+ z_limit:
332
+ - -0.05
333
+ - 0.55
334
+ home_displacement:
335
+ - 0.55
336
+ - 0.0
337
+ - 0.55
338
+ - 180.0
339
+ - 0.0
340
+ - 0.0
341
+ enable_gripper: true
342
+ start_with_gripper_open: true
343
+ offset_mask:
344
+ - 1
345
+ - 1
346
+ - 1
347
+ - 1
348
+ - 1
349
+ - 1
350
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
p96n5ha2/.hydra/hydra.yaml ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ hydra:
2
+ run:
3
+ dir: ${final_experiment_dir}
4
+ sweep:
5
+ dir: ${final_experiment_dir}
6
+ subdir: ${hydra.job.num}
7
+ launcher:
8
+ submitit_folder: ${final_experiment_dir}/.slurm
9
+ timeout_min: 60
10
+ cpus_per_task: null
11
+ gpus_per_node: null
12
+ tasks_per_node: 1
13
+ mem_gb: null
14
+ nodes: 1
15
+ name: ${hydra.job.name}
16
+ stderr_to_stdout: false
17
+ _target_: hydra_plugins.hydra_submitit_launcher.submitit_launcher.LocalLauncher
18
+ sweeper:
19
+ _target_: hydra._internal.core_plugins.basic_sweeper.BasicSweeper
20
+ max_batch_size: null
21
+ params: null
22
+ help:
23
+ app_name: ${hydra.job.name}
24
+ header: '${hydra.help.app_name} is powered by Hydra.
25
+
26
+ '
27
+ footer: 'Powered by Hydra (https://hydra.cc)
28
+
29
+ Use --hydra-help to view Hydra specific help
30
+
31
+ '
32
+ template: '${hydra.help.header}
33
+
34
+ == Configuration groups ==
35
+
36
+ Compose your configuration from those groups (group=option)
37
+
38
+
39
+ $APP_CONFIG_GROUPS
40
+
41
+
42
+ == Config ==
43
+
44
+ Override anything in the config (foo.bar=value)
45
+
46
+
47
+ $CONFIG
48
+
49
+
50
+ ${hydra.help.footer}
51
+
52
+ '
53
+ hydra_help:
54
+ template: 'Hydra (${hydra.runtime.version})
55
+
56
+ See https://hydra.cc for more info.
57
+
58
+
59
+ == Flags ==
60
+
61
+ $FLAGS_HELP
62
+
63
+
64
+ == Configuration groups ==
65
+
66
+ Compose your configuration from those groups (For example, append hydra/job_logging=disabled
67
+ to command line)
68
+
69
+
70
+ $HYDRA_CONFIG_GROUPS
71
+
72
+
73
+ Use ''--cfg hydra'' to Show the Hydra config.
74
+
75
+ '
76
+ hydra_help: ???
77
+ hydra_logging:
78
+ version: 1
79
+ formatters:
80
+ simple:
81
+ format: '[%(asctime)s][HYDRA] %(message)s'
82
+ handlers:
83
+ console:
84
+ class: logging.StreamHandler
85
+ formatter: simple
86
+ stream: ext://sys.stdout
87
+ root:
88
+ level: INFO
89
+ handlers:
90
+ - console
91
+ loggers:
92
+ logging_example:
93
+ level: DEBUG
94
+ disable_existing_loggers: false
95
+ job_logging:
96
+ version: 1
97
+ formatters:
98
+ simple:
99
+ format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s'
100
+ handlers:
101
+ console:
102
+ class: logging.StreamHandler
103
+ formatter: simple
104
+ stream: ext://sys.stdout
105
+ file:
106
+ class: logging.FileHandler
107
+ formatter: simple
108
+ filename: ${hydra.runtime.output_dir}/${hydra.job.name}.log
109
+ root:
110
+ level: INFO
111
+ handlers:
112
+ - console
113
+ - file
114
+ disable_existing_loggers: false
115
+ env: {}
116
+ mode: RUN
117
+ searchpath: []
118
+ callbacks: {}
119
+ output_subdir: .hydra
120
+ overrides:
121
+ hydra:
122
+ - hydra.mode=RUN
123
+ task:
124
+ - agent=diffusion
125
+ - suite=frankagym
126
+ - suite/frankagym_task@_global_=insertion
127
+ job:
128
+ name: eval_robot
129
+ chdir: true
130
+ override_dirname: agent=diffusion,suite/frankagym_task@_global_=insertion,suite=frankagym
131
+ id: ???
132
+ num: ???
133
+ config_name: config_eval
134
+ env_set: {}
135
+ env_copy: []
136
+ config:
137
+ override_dirname:
138
+ kv_sep: '='
139
+ item_sep: ','
140
+ exclude_keys: []
141
+ runtime:
142
+ version: 1.3.2
143
+ version_base: '1.1'
144
+ cwd: /home/leonmkim/fish_leon/FISH
145
+ config_sources:
146
+ - path: hydra.conf
147
+ schema: pkg
148
+ provider: hydra
149
+ - path: /home/leonmkim/fish_leon/FISH/cfgs
150
+ schema: file
151
+ provider: main
152
+ - path: ''
153
+ schema: structured
154
+ provider: schema
155
+ output_dir: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/p96n5ha2
156
+ choices:
157
+ suite: frankagym
158
+ suite/frankagym_task@_global_: insertion
159
+ agent: diffusion
160
+ hydra/env: default
161
+ hydra/callbacks: null
162
+ hydra/job_logging: default
163
+ hydra/hydra_logging: default
164
+ hydra/hydra_help: default
165
+ hydra/help: default
166
+ hydra/sweeper: basic
167
+ hydra/launcher: submitit_local
168
+ hydra/output: default
169
+ verbose: false
p96n5ha2/.hydra/overrides.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ - agent=diffusion
2
+ - suite=frankagym
3
+ - suite/frankagym_task@_global_=insertion
p96n5ha2/episode_rosbags/aligned_depth_to_color_K.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4a962c703d20da282f5e009d432dff51df4ebd22f3386699b6754ea9cfc06a55
3
+ size 200
p96n5ha2/episode_rosbags/cam_tf_world.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:29313ba240dd65ebbc79056d5582a97c9586cf2a1d4a1e0db13b87b49152cc9e
3
+ size 256
p96n5ha2/episode_rosbags/color_K.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4a962c703d20da282f5e009d432dff51df4ebd22f3386699b6754ea9cfc06a55
3
+ size 200
p96n5ha2/episode_rosbags/depth_K.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cc601d2fecd31c5513c76a88b5d4d8059adc1f92dad682e2d755d89a66d8fdf7
3
+ size 200
p96n5ha2/eval_robot.log ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [2025-01-03 22:58:25,259][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_robot.py:596: UserWarning:
2
+ The version_base parameter is not specified.
3
+ Please specify a compatability version level, or None.
4
+ Will assume defaults for version 1.1
5
+ @hydra.main(config_path='cfgs', config_name='config_eval')
6
+
7
+ [2025-01-03 22:58:25,262][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_robot.py:532: UserWarning:
8
+ The version_base parameter is not specified.
9
+ Please specify a compatability version level, or None.
10
+ Will assume defaults for version 1.1
11
+ hydra.initialize(
12
+
p96n5ha2/eval_video/0_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5e4793e12534ec85ec6520ee2458c3039cb75c9463629819749011340205e24a
3
+ size 1584649
p96n5ha2/eval_video/1_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d3ea4408164b8a140674496ba6629b16413df452969c28f8b7fb74e7b7c1f263
3
+ size 1507254
p96n5ha2/eval_video/2_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:352b7f510e51bce389935d029bf3e54435b606213e8f5e38be4dba2eeb3cf22f
3
+ size 1556281
p96n5ha2/eval_video/3_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0172777c44cdec6ec773e208a913b0c9360554e00d010ab67a9ec13f40c91643
3
+ size 1571685
p96n5ha2/eval_video/4_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6398d8b01df3925cc7cf3af337da5a7b49b62f423550339e0e3f74e019f1b7cf
3
+ size 1568166
p96n5ha2/tb/events.out.tfevents.1735963111.leonmkim-ROG-Strix-G15CS-G15CS.1990442.0 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:62d59f3ecc23b44d281560039f9cfca9e8350e8ecf3d4b04285936840195a442
3
+ size 6539
p96n5ha2/wandb/debug-internal.log ADDED
The diff for this file is too large to render. See raw diff
 
p96n5ha2/wandb/debug.log ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 2025-01-03 22:58:30,986 INFO MainThread:1990442 [wandb_setup.py:_flush():76] Current SDK version is 0.17.5
2
+ 2025-01-03 22:58:30,986 INFO MainThread:1990442 [wandb_setup.py:_flush():76] Configure stats pid to 1990442
3
+ 2025-01-03 22:58:30,986 INFO MainThread:1990442 [wandb_setup.py:_flush():76] Loading settings from /home/leonmkim/.config/wandb/settings
4
+ 2025-01-03 22:58:30,986 INFO MainThread:1990442 [wandb_setup.py:_flush():76] Loading settings from /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/p96n5ha2/wandb/settings
5
+ 2025-01-03 22:58:30,986 INFO MainThread:1990442 [wandb_setup.py:_flush():76] Loading settings from environment variables: {}
6
+ 2025-01-03 22:58:30,986 INFO MainThread:1990442 [wandb_setup.py:_flush():76] Applying setup settings: {'_disable_service': False}
7
+ 2025-01-03 22:58:30,986 INFO MainThread:1990442 [wandb_setup.py:_flush():76] Inferring run settings from compute environment: {'program_relpath': 'FISH/eval_robot.py', 'program_abspath': '/home/leonmkim/fish_leon/FISH/eval_robot.py', 'program': '/home/leonmkim/fish_leon/FISH/eval_robot.py'}
8
+ 2025-01-03 22:58:30,986 INFO MainThread:1990442 [wandb_setup.py:_flush():76] Applying login settings: {}
9
+ 2025-01-03 22:58:30,986 INFO MainThread:1990442 [wandb_init.py:_log_setup():529] Logging user logs to /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/p96n5ha2/wandb/run-20250103_225830-p96n5ha2/logs/debug.log
10
+ 2025-01-03 22:58:30,987 INFO MainThread:1990442 [wandb_init.py:_log_setup():530] Logging internal logs to /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/p96n5ha2/wandb/run-20250103_225830-p96n5ha2/logs/debug-internal.log
11
+ 2025-01-03 22:58:30,987 INFO MainThread:1990442 [wandb_init.py:init():569] calling init triggers
12
+ 2025-01-03 22:58:30,987 INFO MainThread:1990442 [wandb_init.py:init():576] wandb.init called with sweep_config: {}
13
+ config: {'root_dir': '/home/leonmkim/fish_leon', 'replay_buffer_size': 150000, 'replay_buffer_num_workers': 2, 'nstep': 3, 'batch_size': 128, 'seed': 1, 'dataset_shuffle_seed': 0, 'device': 'cuda', 'save_video': True, 'save_train_video': True, 'use_tb': True, 'use_wandb': True, 'wandb_run_id': '1926_1', 'wandb_notes': '1926_1_restarted_5', 'eval': True, 'true_action_history': False, 'train_pad_after': 4, 'process_contact_features': True, 'obs_type': 'pixels', 'use_color': True, 'use_depth': True, 'use_masks': True, 'mask_list': ['EE_obj_mask'], 'mask_representation': 'channels', 'crop_hw': [144, 144], 'crop_down_offset': 48, 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'add_crop_binary_mask': False, 'add_coord_conv_map': False, 'use_context_color': False, 'use_context_depth': False, 'use_context_segmask': False, 'context_color_crop_type': None, 'context_depth_crop_type': None, 'context_segmask_crop_type': None, 'context_add_crop_binary_mask': False, 'context_add_coord_conv_map': False, 'use_contact_map': True, 'use_sdf_maps': True, 'use_normals_maps': True, 'which_objects': 'both', 'max_contact_prob': 0.1, 'max_depth': 2.0, 'grasped_dtc_max_value': 0.2, 'env_dtc_max_value': 0.4, 'grasped_normals_mask_max_dtc_value': 0.2, 'env_normals_mask_max_dtc_value': 0.4, 'clamp_dtc': True, 'dtc_adaptive_normalization': False, 'mask_normals_within_sdf': True, 'adaptive_normals_mask': True, 'learnable_contact_preprocess_params': True, 'contact_model_name': 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9', 'contact_estimation_model_ckpt_path': '~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt', 'encoder_type': 'small', 'debug_timestamps': False, 'open_loop': False, 'action_trajectories': True, 'stop_after_action': False, 'interpolation_frequency': 25, 'policy_frequency': 5, 'wait_for_new_camera_frames': True, 'baseline': False, 'train_demo_idxs_list_or_num': -1, 'log_train_every_steps': 25, 'name_of_expert_demo': '120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'expert_dataset_dirpath': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'store_dataset_in_memory': False, 'expert_dataset': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'action_key': 'action_trajectory_25hz', 'semantic_demo_grouping_name': 'semantic_demo_grouping.yaml', 'semantic_demo_grouping': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/semantic_demo_grouping.yaml', 'include_groups_list': 'all', 'expert_dataset_config': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demo_config.yaml', 'name_of_valid_demo': '120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'valid_dataset_dir': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'valid_demo_idxs_list_or_num': None, 'val_num_groups': 7, 'load_bc': True, 'checkpoint_epoch_list': [99, 199, 299, 399, 499, 599, 699, 799, 899, 999, 1249, 1499, 1749, 1999, 2999, 3999, 4999, 5999, 6999, 7999, 8999, 9999], 'snapshot_root_dir': '/mnt/grasp_high_usage/leonmkim/contact_estimation/FISH', 'save_snapshot': True, 'save_last_snapshot': True, 'save_snapshot_when_done': True, 'top_k_checkpoints': 5, 'save_snapshot_link_to_weights_dir': 'deprecated', 'bc_regularize': False, 'bc_weight_type': 'qfilter', 'experiment_dir': './exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1', 'agent': {'_target_': 'agent.diffusion_policy.DiffusionPolicyAgent', 'name': 'diffusion_policy', 'load_checkpoint': True, 'device': 'cuda', 'n_obs_steps': 1, 'suite_name': 'frankagym', 'obs_type': 'pixels', 'enable_arm': True, 'enable_camera': True, 'use_tb': True, 'desired_image_shape': [13, 180, 240], 'orig_cam_shape': [3, 240, 320], 'config': {'_target_': 'agent.diffusion_policy.DiffusionPolicyAgentConfig', 'compile': False, 'device': 'cuda', 'cam_resize_shape': [13, 180, 240], 'orig_cam_shape': [3, 240, 320], 'policy_frequency': 5, 'interpolation_frequency': 25, 'policy_cfg': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig', 'n_obs_steps': 1, 'horizon': 36, 'n_action_steps': 36, 'output_shapes': {'action': [7]}, 'input_normalization_modes': {'observation.image': 'mean_std', 'observation.state': 'min_max', 'observation.action_history': 'min_max'}, 'output_normalization_modes': {'action': 'min_max'}, 'vision_backbone': 'resnet18', 'pretrained_backbone_weights': None, 'transforms': [{'_target_': 'torchaug.transforms.RandomAffine', 'degrees': [-5, 5], 'translate': [0.05, 0.05], 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}, {'_target_': 'torchaug.transforms.RandomColorJitter', 'brightness': 0.3, 'contrast': 0.4, 'saturation': 0.5, 'hue': 0.08, 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}], 'use_group_norm': True, 'spatial_softmax_num_keypoints': 32, 'action_history_encoder_config': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig', 'in_channels': 7, 'out_channels': 32, 'history_length': 6, 'kernel_size': 5, 'downsample_kernel_size': 3, 'downsample_stride': 2, 'downsample_padding': 1}, 'down_dims': [256, 512, 1024], 'kernel_size': 5, 'n_groups': 8, 'diffusion_step_embed_dim': 128, 'use_film_scale_modulation': True, 'noise_scheduler_type': 'DDIM', 'beta_schedule': 'squaredcos_cap_v2', 'beta_start': 0.0001, 'beta_end': 0.02, 'prediction_type': 'epsilon', 'clip_sample': True, 'clip_sample_range': 1.0, 'num_train_timesteps': 50, 'num_inference_steps': 10, 'do_mask_loss_for_padding': False, 'input_shapes': {'observation.image': [13, 180, 240], 'context_observation.image': [13, 180, 240], 'observation.state': [8], 'observation.action_history': [7]}}, 'train_cfg': {'_target_': 'utils.TrainConfig', 'lr': 0.0001, 'lr_scheduler': 'cosine', 'lr_warmup_steps': 500, 'adam_betas': [0.95, 0.999], 'adam_eps': 1e-08, 'adam_weight_decay': 1e-06, 'grad_clip_norm': 10, 'offline_steps': 1000000, 'use_amp': True}, 'observation_cfg': {'_target_': 'agent.encoder.VisualFeatureSet', 'use_depth': True, 'use_color': True, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': True, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}, 'context_input_config': {'_target_': 'agent.encoder.ContextInputConfig', 'use_color': False, 'use_depth': False, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': False, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}}, 'mask_soft_approx_scheduler_config': {'_target_': 'agent.encoder.MaskSoftApproxSchedulerConfig', 'num_steps': 40000, 'initial_value': 10.0, 'final_value': 1000.0, 'interpolation_scheme': 'cosine'}, 'use_contact_map': True, 'use_sdf_maps': True, 'use_normals_maps': True, 'which_objects': 'both', 'grasped_dtc_max_value': 0.2, 'env_dtc_max_value': 0.4, 'grasped_normals_mask_max_dtc_value': 0.2, 'env_normals_mask_max_dtc_value': 0.4, 'clamp_dtc': True, 'max_contact_prob': 0.1, 'mask_normals_within_sdf': True, 'dtc_adaptive_normalization': False, 'adaptive_normals_mask': True, 'max_depth': 2.0, 'image_shape': [13, 180, 240], 'learnable_contact_preprocess_params': True, 'learning_rate': 0.0001, 'weight_decay': 0.0, 'contact_model_name': 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9', 'zero_centered': False}}}, 'suite': {'suite': 'frankagym', 'name': 'frankagym', 'frame_stack': 1, 'action_repeat': 1, 'discount': 0.99, 'hidden_dim': 1024, 'num_train_frames': 2010, 'num_seed_frames': 260, 'num_train_epochs': 5000, 'validate_every_epochs': 100, 'validate_diffusion_on_action_loss_every_epochs': 500, 'train_eval_diffusion_on_action_loss_every_epochs': 500, 'check_topk_every_epochs': 10, 'save_snapshot_every_epochs': 5000, 'eval_every_frames': 2000, 'num_eval_episodes': 5, 'save_snapshot': True, 'wait_for_user_to_start_episode': True, 'task_make_fn': {'_target_': 'suite.frankagym.make', 'name': 'FrankaInsertion-v1', 'height': 240, 'width': 320, 'frame_stack': 1, 'action_repeat': 1, 'seed': 1, 'enable_arm': True, 'enable_gripper': True, 'start_with_gripper_open': True, 'enable_camera': True, 'path_to_depth_extrinsics': '~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy', 'contact_estimation_model_ckpt_path': '~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt', 'x_limit': [0.2, 0.7], 'y_limit': [-0.4, 0.4], 'z_limit': [-0.05, 0.55], 'device': 'cuda', 'interpolation_frequency': 25, 'policy_frequency': 5, 'debug_timestamps': False, 'stop_after_action': False, 'open_loop': False, 'wait_for_new_camera_frames': True, 'action_key': 'action_trajectory_25hz', 'action_trajectory_horizon': 36, 'action_trajectories': True, 'path_to_zarr_dataset': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'agent_policy_cfg': {'_target_': 'agent.diffusion_policy.DiffusionPolicyAgentConfig', 'compile': False, 'device': 'cuda', 'cam_resize_shape': [13, 180, 240], 'orig_cam_shape': [3, 240, 320], 'policy_frequency': 5, 'interpolation_frequency': 25, 'policy_cfg': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig', 'n_obs_steps': 1, 'horizon': 36, 'n_action_steps': 36, 'output_shapes': {'action': [7]}, 'input_normalization_modes': {'observation.image': 'mean_std', 'observation.state': 'min_max', 'observation.action_history': 'min_max'}, 'output_normalization_modes': {'action': 'min_max'}, 'vision_backbone': 'resnet18', 'pretrained_backbone_weights': None, 'transforms': [{'_target_': 'torchaug.transforms.RandomAffine', 'degrees': [-5, 5], 'translate': [0.05, 0.05], 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}, {'_target_': 'torchaug.transforms.RandomColorJitter', 'brightness': 0.3, 'contrast': 0.4, 'saturation': 0.5, 'hue': 0.08, 'batch_transform': True, 'num_chunks': -1, 'batch_inplace': True}], 'use_group_norm': True, 'spatial_softmax_num_keypoints': 32, 'action_history_encoder_config': {'_target_': 'lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig', 'in_channels': 7, 'out_channels': 32, 'history_length': 6, 'kernel_size': 5, 'downsample_kernel_size': 3, 'downsample_stride': 2, 'downsample_padding': 1}, 'down_dims': [256, 512, 1024], 'kernel_size': 5, 'n_groups': 8, 'diffusion_step_embed_dim': 128, 'use_film_scale_modulation': True, 'noise_scheduler_type': 'DDIM', 'beta_schedule': 'squaredcos_cap_v2', 'beta_start': 0.0001, 'beta_end': 0.02, 'prediction_type': 'epsilon', 'clip_sample': True, 'clip_sample_range': 1.0, 'num_train_timesteps': 50, 'num_inference_steps': 10, 'do_mask_loss_for_padding': False, 'input_shapes': {'observation.image': [13, 180, 240], 'context_observation.image': [13, 180, 240], 'observation.state': [8], 'observation.action_history': [7]}}, 'train_cfg': {'_target_': 'utils.TrainConfig', 'lr': 0.0001, 'lr_scheduler': 'cosine', 'lr_warmup_steps': 500, 'adam_betas': [0.95, 0.999], 'adam_eps': 1e-08, 'adam_weight_decay': 1e-06, 'grad_clip_norm': 10, 'offline_steps': 1000000, 'use_amp': True}, 'observation_cfg': {'_target_': 'agent.encoder.VisualFeatureSet', 'use_depth': True, 'use_color': True, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': True, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}, 'context_input_config': {'_target_': 'agent.encoder.ContextInputConfig', 'use_color': False, 'use_depth': False, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': False, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}}, 'mask_soft_approx_scheduler_config': {'_target_': 'agent.encoder.MaskSoftApproxSchedulerConfig', 'num_steps': 40000, 'initial_value': 10.0, 'final_value': 1000.0, 'interpolation_scheme': 'cosine'}, 'use_contact_map': True, 'use_sdf_maps': True, 'use_normals_maps': True, 'which_objects': 'both', 'grasped_dtc_max_value': 0.2, 'env_dtc_max_value': 0.4, 'grasped_normals_mask_max_dtc_value': 0.2, 'env_normals_mask_max_dtc_value': 0.4, 'clamp_dtc': True, 'max_contact_prob': 0.1, 'mask_normals_within_sdf': True, 'dtc_adaptive_normalization': False, 'adaptive_normals_mask': True, 'max_depth': 2.0, 'image_shape': [13, 180, 240], 'learnable_contact_preprocess_params': True, 'learning_rate': 0.0001, 'weight_decay': 0.0, 'contact_model_name': 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9', 'zero_centered': False}}, 'true_action_history': False}}, 'num_train_frames_bc': 50000, 'num_train_frames_drq': 1100000, 'stddev_schedule_drq': 'linear(1.0,0.1,100000)', 'task_name': 'FrankaInsertion-v1', 'num_train_frames_vinn': 25000, 'num_train_frames_diffusion': 1000000, 'num_train_epochs_bc': 5000, 'num_train_epochs_diffusion': 15000, 'validate_every_epochs_bc': 5, 'validate_every_epochs_diffusion': 250, 'validate_diffusion_on_action_loss_every_epochs': 250, 'train_eval_diffusion_on_action_loss_every_epochs': 250, 'check_topk_every_epochs': 5, 'check_topk_every_epochs_diffusion': 250, 'save_snapshot_every_epochs_diffusion': 1500, 'x_limit': [0.2, 0.7], 'y_limit': [-0.4, 0.4], 'z_limit': [-0.05, 0.55], 'home_displacement': [0.55, 0.0, 0.55, 180.0, 0.0, 0.0], 'enable_gripper': True, 'start_with_gripper_open': True, 'offset_mask': [1, 1, 1, 1, 1, 1], 'path_to_depth_extrinsics': '~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy', 'feature_type': '180x240_1_RGB_D_2.0_msk_channels_EE_obj_mask_cntct_0.1_DTC_clmpd_lrnbl_nrmls_DTCmask_adpt_lrnbl_both_lr_0.0001_wd_0.0_local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9_acthst_hst6_out32_dwnkrnl3_dwnstrd2_dwnpd1', 'save_buffer': True, 'num_eval': 5, 'random_start': False, 'eval_starts': '/home/leonmkim/fish_leon/FISH/eval_starts/frankagym_pixels/FrankaInsertion-v1', 'num_valid_demos': None, 'load_checkpoint': True, 'checkpoint_epoch': 12000, 'load_residual_weight': False, 'checkpoint_root_dir': '/home/leonmkim/fish_leon/FISH', 'checkpoint_weight_dir': '/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1', 'residual_weight': '/home/leonmkim/fish_leon/FISH/weights/frankagym_pixels/FrankaInsertion-v1/weight.pt', 'final_experiment_dir': './exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/p96n5ha2'}
14
+ 2025-01-03 22:58:30,988 INFO MainThread:1990442 [wandb_init.py:init():619] starting backend
15
+ 2025-01-03 22:58:30,988 INFO MainThread:1990442 [wandb_init.py:init():623] setting up manager
16
+ 2025-01-03 22:58:30,992 INFO MainThread:1990442 [backend.py:_multiprocessing_setup():105] multiprocessing start_methods=fork,spawn,forkserver, using: spawn
17
+ 2025-01-03 22:58:30,993 INFO MainThread:1990442 [wandb_init.py:init():631] backend started and connected
18
+ 2025-01-03 22:58:31,005 INFO MainThread:1990442 [wandb_init.py:init():720] updated telemetry
19
+ 2025-01-03 22:58:31,012 INFO MainThread:1990442 [wandb_init.py:init():753] communicating run to backend with 90.0 second timeout
20
+ 2025-01-03 22:58:31,263 INFO MainThread:1990442 [wandb_run.py:_on_init():2435] communicating current version
21
+ 2025-01-03 22:58:31,303 INFO MainThread:1990442 [wandb_run.py:_on_init():2444] got version response upgrade_message: "wandb version 0.19.1 is available! To upgrade, please run:\n $ pip install wandb --upgrade"
22
+
23
+ 2025-01-03 22:58:31,303 INFO MainThread:1990442 [wandb_init.py:init():804] starting run threads in backend
24
+ 2025-01-03 22:58:31,636 INFO MainThread:1990442 [wandb_run.py:_console_start():2413] atexit reg
25
+ 2025-01-03 22:58:31,636 INFO MainThread:1990442 [wandb_run.py:_redirect():2255] redirect: wrap_raw
26
+ 2025-01-03 22:58:31,636 INFO MainThread:1990442 [wandb_run.py:_redirect():2320] Wrapping output streams.
27
+ 2025-01-03 22:58:31,636 INFO MainThread:1990442 [wandb_run.py:_redirect():2345] Redirects installed.
28
+ 2025-01-03 22:58:31,637 INFO MainThread:1990442 [wandb_init.py:init():847] run started, returning control to user process
29
+ 2025-01-03 22:58:31,638 INFO MainThread:1990442 [wandb_run.py:_tensorboard_callback():1544] tensorboard callback: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/p96n5ha2/tb, True
30
+ 2025-01-03 22:58:36,604 INFO MainThread:1990442 [wandb_run.py:_config_callback():1382] config_cb None None {'grasped_obj_name': 'lady', 'left_book_slot': 'twodim'}
31
+ 2025-01-03 23:04:20,129 WARNING MsgRouterThr:1990442 [router.py:message_loop():77] message_loop has been closed
p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/code/FISH/eval_robot.py ADDED
@@ -0,0 +1,605 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #%%
2
+ import warnings
3
+ import os
4
+
5
+ os.environ['MKL_SERVICE_FORCE_INTEL'] = '1'
6
+ os.environ['MUJOCO_GL'] = 'egl'
7
+ from pathlib import Path
8
+ #%%
9
+ import hydra
10
+ import numpy as np
11
+ import torch
12
+
13
+ import utils
14
+ from utils import get_feature_dirname_from_configs
15
+
16
+ from video import VideoRecorder
17
+ import pickle
18
+ import time
19
+ import threading
20
+ import shutil
21
+ from logger import Logger
22
+
23
+ import wandb
24
+ from omegaconf import OmegaConf, open_dict
25
+
26
+ from replay_buffer_robot import RosbagEvalReplayBufferStorage
27
+ from lerobot.common.utils.utils import _relative_path_between
28
+
29
+ torch.backends.cudnn.benchmark = True
30
+ warnings.filterwarnings('ignore', category=DeprecationWarning)
31
+
32
+ # import specs for replay buffer
33
+ from dm_env import specs
34
+
35
+ import sys, signal
36
+ import yaml
37
+
38
+ import binomial_cis as bc
39
+
40
+ # get path of current file
41
+ current_path = os.path.dirname(os.path.realpath(__file__))
42
+ sys.path.append(os.path.join(current_path, os.pardir))
43
+ # from contact_estimation.src.utils.viz_utils import normalized_surface_normal_to_rgb, depth_map_to_im, grasped_env_dtc_map_to_im, contact_prob_map_to_im, desaturate_color_image, masked_overlay_im_list
44
+
45
+ def make_agent(obs_spec, action_spec, cfg):
46
+ cfg.obs_shape = obs_spec['pixels'].shape
47
+ dataset_statistics = None # this will be loaded from the checkpoint
48
+ try:
49
+ cfg.action_shape = action_spec.shape
50
+ except:
51
+ pass
52
+ return hydra.utils.instantiate(cfg, dataset_statistics)
53
+
54
+ class Workspace:
55
+ def __init__(self, cfg):
56
+ self.work_dir = Path.cwd()
57
+ print(f'workspace: {self.work_dir}')
58
+
59
+ signal.signal(signal.SIGINT, self.signal_handler)
60
+
61
+ self.cfg = cfg
62
+ self.loading_uncompiled_checkpoint_with_compile = False
63
+ self.loading_compiled_checkpoint_with_no_compile = False
64
+
65
+ snapshot_path = Path(self.cfg.checkpoint_weight_dir) / f'snapshot_{self.cfg.checkpoint_epoch}.pt'
66
+ self.load_checkpoint_conf(snapshot_path=snapshot_path)
67
+
68
+ # load config for action trajectories
69
+ utils.set_seed_everywhere(self.cfg.seed)
70
+ self.device = torch.device(self.cfg.device)
71
+ self.setup()
72
+
73
+ # self.agent = make_agent(self.eval_env.observation_spec(),
74
+ # self.eval_env.action_spec(), self.cfg.agent)
75
+ self.timer = utils.Timer()
76
+ # self._global_step = 0
77
+ self._global_episode = 0
78
+ self._global_epoch = 0
79
+ self.num_episode_successes = 0
80
+
81
+ self.alpha_range = [.01, .025, .05, .1]
82
+
83
+ # Need to convert hydra config to primitive container for wandb https://docs.wandb.ai/guides/integrations/hydra
84
+ with open_dict(self.cfg):
85
+ self.cfg.feature_type = get_feature_dirname_from_configs(
86
+ hydra.utils.instantiate(self.cfg.agent.config.observation_cfg),
87
+ self.cfg.agent.config.policy_cfg.input_shapes,
88
+ hydra.utils.instantiate(self.cfg.agent.config.policy_cfg.action_history_encoder_config) if 'observation.action_history' in self.cfg.agent.config.policy_cfg.input_shapes else None,
89
+ )
90
+
91
+ wandb_config = OmegaConf.to_container(
92
+ self.cfg, resolve=True, throw_on_missing=True
93
+ )
94
+ # must be called before any tf summary writer is created
95
+ if self.cfg.use_wandb:
96
+ # get the run id from the final_experiment_dir directory
97
+ run_id = os.path.basename(os.path.normpath(self.cfg.final_experiment_dir))
98
+ wandb.init(project='extrinsic_contact_downstream', entity='serialexperimentsleon', job_type='eval', sync_tensorboard=self.cfg.use_tb, config=wandb_config, id=run_id)
99
+
100
+ self.logger = Logger(self.work_dir, use_tb=self.cfg.use_tb, use_wandb=self.cfg.use_wandb)
101
+
102
+ # if not self.loading_uncompiled_checkpoint_with_compile and self.cfg.agent.config.compile:
103
+ # self.agent.compile_modules()
104
+
105
+ # self.load_checkpoint(snapshot_path=snapshot_path)
106
+
107
+ # if self.loading_uncompiled_checkpoint_with_compile: # need to call compile after loading the checkpoint
108
+ # self.agent.compile_modules()
109
+
110
+ print(f"loaded agent with feature_type: {self.cfg.feature_type}")
111
+
112
+ def check_for_key_press(self):
113
+ while self.continue_keypress_thread:
114
+ inp = input("Press 'r' to restart current episode, 'n' to stop current episode and skip to next, 'q' to break entire eval\n")
115
+ if inp == 'n':
116
+ self.preempt_episode = True
117
+ print("preempting episode")
118
+ elif inp in ['', '0', '1']: # enter key
119
+ if inp in ['0', '1']:
120
+ self.num_episode_successes += int(inp)
121
+ self.proceed_after_env_reset_event.set()
122
+ print("proceeding to start episode!")
123
+ elif inp == 'q':
124
+ self.proceed_after_env_reset_event.set()
125
+ self.preempt_episode = True
126
+ self.exit_eval = True
127
+ self.continue_keypress_thread = False # will stop the keypress thread
128
+ print("quitting eval")
129
+ break
130
+ elif inp == 'r':
131
+ print('restarting episode')
132
+ self.preempt_episode = True
133
+ self.restart_episode = True
134
+ else:
135
+ print("Invalid key press, try again")
136
+
137
+ # self.keypress_input_thread.join() # wait for the keypress thread to finish
138
+
139
+ def signal_handler(self, signal, frame):
140
+ print("\nprogram exiting gracefully")
141
+ self.proceed_after_env_reset_event.set()
142
+ self.preempt_episode = True
143
+ self.exit_eval = True
144
+ self.continue_keypress_thread = False # will stop the keypress thread
145
+ self.keypress_input_thread.join() # wait for the keypress thread to finish
146
+ video_filepath = self.video_recorder.save()
147
+ # get the video file and convert to video tensor to log
148
+ self.logger.log_video('eval/video', video_filepath, self.global_step)
149
+ wandb.finish()
150
+ sys.exit(0)
151
+
152
+ def setup(self):
153
+ # create envs
154
+ self.eval_env = hydra.utils.call(self.cfg.suite.task_make_fn)
155
+ # expert_demo_config_path = os.path.join(os.path.dirname(self.cfg.expert_dataset), 'demo_config.yaml')
156
+ # self.expert_demo_config = yaml.load(open(expert_demo_config_path, 'r'), Loader=yaml.FullLoader)
157
+ # self.eval_env._env.action_trans_norm = expert_demo_config['max_translation_action_norm']
158
+ # self.eval_env._env.action_rot_norm = expert_demo_config['max_rotation_action_norm']
159
+ # self.eval_env._env.action_period = expert_demo_config['sample_period']
160
+ # print(f"setting max_translation_action_norm to {expert_demo_config['max_translation_action_norm']} and sample_period to {expert_demo_config['sample_period']}")
161
+ # print(f"setting max_rotation_action_norm to {expert_demo_config['max_rotation_action_norm']}")
162
+
163
+ # self.eval_env.set_demo_params(self.cfg.expert_dataset)
164
+
165
+ # Turn off random start
166
+ self.eval_env.random_start = False
167
+
168
+ # create replay buffer
169
+ # data_specs = [
170
+ # {
171
+ # 'observation': self.eval_env.observation_spec(),
172
+ # },
173
+ # # self.eval_env.observation_spec()['features'],
174
+ # self.eval_env.action_spec(),
175
+ # specs.Array(self.eval_env.action_spec().shape, self.eval_env.action_spec().dtype, 'vinn_action'),
176
+ # specs.Array((1, ), np.float32, 'reward'),
177
+ # specs.Array((1, ), np.float32, 'discount'),
178
+ # ]
179
+
180
+ # self.eval_replay_storage = ZarrEvalReplayBufferStorage(data_specs, self.work_dir / 'eval_buffer', debug_timestamps=self.cfg.debug_timestamps, save_buffer=self.cfg.save_buffer, debug_info_data_specs=self.eval_env.debug_info_data_specs, camera_info_dict=self.eval_env.get_camera_info_dict())
181
+ self.eval_replay_storage = RosbagEvalReplayBufferStorage(self.work_dir)
182
+
183
+ self.video_recorder = VideoRecorder(
184
+ self.work_dir if self.cfg.save_video else None,
185
+ ros_enabled=True,
186
+ fps=self.cfg.agent.config.policy_frequency,
187
+ )
188
+
189
+ print('workspace setup complete')
190
+
191
+ @property
192
+ def global_step(self):
193
+ # return self._global_step
194
+ return self.eval_env.get_global_step()
195
+
196
+ @property
197
+ def global_episode(self):
198
+ return self._global_episode
199
+
200
+ @property
201
+ def global_frame(self):
202
+ return self.global_step * self.cfg.action_repeat
203
+
204
+ @property
205
+ def global_epoch(self):
206
+ return self._global_epoch
207
+
208
+ def reset(self, eval_idx):
209
+ if not self.eval_env.enable_arm:
210
+ return np.array([0,0,0], dtype=np.float32)
211
+ self.eval_env.arm_refresh(reset=False)
212
+ # Set start position
213
+ try:
214
+ self.eval_env.set_position(self.start_pos[eval_idx])
215
+ except:
216
+ self.eval_env.arm.set_position(self.start_pos[eval_idx])
217
+ if self.eval_env.arm.keep_gripper_closed:
218
+ self.eval_env.arm.close_gripper_fully()
219
+ else:
220
+ self.eval_env.arm.open_gripper_fully()
221
+ time.sleep(0.1)
222
+ time_step = self.eval_env.step(np.zeros(self.eval_env.action_spec().shape[0], dtype=np.float32),
223
+ np.zeros(self.eval_env.action_spec().shape[0], dtype=np.float32))
224
+ return time_step
225
+
226
+ def eval(self):
227
+ # before evals start, prompt user for name of grasped object and the left book of the slot location
228
+ grasped_obj_name = input("Enter the name of the grasped object: ")
229
+ left_book_slot = input("Enter the left book slot location: ")
230
+ # update wandb config
231
+ if self.cfg.use_wandb:
232
+ wandb.config.update({'grasped_obj_name': grasped_obj_name, 'left_book_slot': left_book_slot})
233
+
234
+ self.preempt_episode = False
235
+ self.exit_eval = False
236
+ self.restart_episode = False
237
+
238
+ self.continue_keypress_thread = True
239
+ self.proceed_after_env_reset_event = threading.Event()
240
+ self.keypress_input_thread = threading.Thread(target=self.check_for_key_press)
241
+ self.keypress_input_thread.start()
242
+
243
+ # # Set model to eval mode
244
+ # self.agent.train(False)
245
+
246
+ eval_until_episode = utils.Until(self.cfg.num_eval)
247
+
248
+ self.use_action_history = False
249
+ # if "dp" in repr(self.agent) and "observation.action_history" in self.cfg.agent.config.policy_cfg.input_shapes:
250
+ if "observation.action_history" in self.cfg.agent.config.policy_cfg.input_shapes:
251
+ self.use_action_history = True
252
+
253
+ # self.eval_replay_storage._new_eval_step(0)
254
+
255
+ # if 'vinn' in repr(self.agent) or 'openloop' in repr(self.agent):
256
+ # with open(self.cfg.expert_dataset, 'rb') as f:
257
+ # if self.cfg.obs_type == 'pixels':
258
+ # self.expert_demo, _, self.expert_action, self.expert_reward = pickle.load(f)
259
+ # elif self.cfg.obs_type == 'features':
260
+ # _, self.expert_demo, self.expert_action, self.expert_reward = pickle.load(f)
261
+
262
+ # if self.cfg.action_trajectories:
263
+ # with open(self.cfg.expert_action_trajectories, 'rb') as f:
264
+ # self.expert_action = pickle.load(f)
265
+
266
+ # if isinstance(self.cfg.train_demo_idxs_list_or_num, int):
267
+ # if self.cfg.train_demo_idxs_list_or_num == -1:
268
+ # self.cfg.train_demo_idxs_list_or_num = len(self.expert_demo)
269
+ # train_demo_idxs_list_or_num = list(range(self.cfg.train_demo_idxs_list_or_num))
270
+
271
+ # self.expert_demo = self.expert_demo[train_demo_idxs_list_or_num]
272
+ # self.expert_action = self.expert_action[train_demo_idxs_list_or_num]
273
+ # self.expert_reward = self.expert_reward[train_demo_idxs_list_or_num]
274
+ # # if self.cfg.action_plans:
275
+ # # self.expert_action_plans = self.expert_action_plans[self.cfg.train_demo_idxs_list_or_num]
276
+ # # self.expert_demo = self.expert_demo[:self.cfg.num_demos]
277
+ # # self.expert_action = self.expert_action[:self.cfg.num_demos]
278
+ # # self.expert_reward = self.expert_reward[:self.cfg.num_demos]
279
+
280
+ # self.expert_demo = np.concatenate(self.expert_demo, axis=0)
281
+ # self.expert_rgb_obs = np.ascontiguousarray(np.transpose(self.expert_demo, (0,2,3,1))[:, :,:,:3].astype(np.uint8))
282
+ # self.expert_action = np.concatenate(self.expert_action, axis=0)
283
+
284
+ # self.agent.save_representations(self.expert_demo, self.expert_action, 128, config=self.expert_demo_config)
285
+
286
+ # Get start points
287
+ if self.cfg.random_start:
288
+ eval_starts = Path(self.cfg.eval_starts) / 'starts.pkl'
289
+ if eval_starts.exists():
290
+ with eval_starts.open('rb') as f:
291
+ self.start_pos = pickle.load(f)
292
+ else:
293
+ eval_starts = Path(self.cfg.eval_starts)
294
+ eval_starts.mkdir(parents=True, exist_ok=True)
295
+
296
+ # Generate start points
297
+ self.start_pos = []
298
+ try:
299
+ for _ in range(self.cfg.num_eval):
300
+ self.start_pos.append(self.eval_env.get_random_pos())
301
+ except:
302
+ for _ in range(self.cfg.num_eval):
303
+ self.start_pos.append(self.eval_env.arm.get_random_pos())
304
+
305
+ # Save start points for the task
306
+ eval_starts = eval_starts / 'starts.pkl'
307
+ with eval_starts.open('wb') as f:
308
+ pickle.dump(self.start_pos, f)
309
+
310
+ time_step = self.eval_env.reset()
311
+ # replay_thread = None
312
+ while eval_until_episode(self.global_episode) and not self.exit_eval:
313
+ # self.video_recorder.init(self.eval_env, video_filename=f'{self.global_episode}_eval.mp4')
314
+ print(f"Starting episode {self.global_episode}")
315
+ time_step = self.eval_env.reset() #Leon: need to call reset twice in case objects are trapped
316
+ self.video_recorder.init(self.eval_env, video_filename=f'{self.global_episode}_eval.mp4')
317
+ # x = input("Press Enter to continue... after reseting env")
318
+ print("Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success")
319
+ self.proceed_after_env_reset_event.clear() # clear the event flag
320
+ self.proceed_after_env_reset_event.wait() # blocking wait for the event flag to be set
321
+ if self.global_episode > 0:
322
+ self.logger.log_metrics({'num_success': self.num_episode_successes}, self.global_step, 'eval', episode=self.global_episode)
323
+ self.logger.log_metrics({'success_rate': self.num_episode_successes/self.global_episode}, self.global_step, 'eval', episode=self.global_episode)
324
+
325
+ # log confidence intervals for success rate
326
+ k = self.num_episode_successes # number of successes
327
+ n = self.global_episode # number of trials
328
+
329
+ table_columns = []
330
+ table_data = []
331
+ for alpha in self.alpha_range:
332
+ lb = bc.binom_ci(k, n, alpha, 'lb')
333
+ ub = bc.binom_ci(k, n, alpha, 'ub')
334
+
335
+ self.logger.log_metrics({f'success_rate_lb_{alpha}': lb}, self.global_step, 'eval', episode=self.global_episode)
336
+ self.logger.log_metrics({f'success_rate_ub_{alpha}': ub}, self.global_step, 'eval', episode=self.global_episode)
337
+
338
+ time_step = self.eval_env.reset()
339
+ # debug_info_dict = self.eval_env.debug_info_dict
340
+ # if replay_thread is not None:
341
+ # # wait for the last replay thread to finish
342
+ # replay_thread.join()
343
+
344
+ # self.eval_replay_storage.add(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict)
345
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict))
346
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step, debug_info_dict))
347
+
348
+ # replay_thread.start()
349
+ if self.cfg.random_start:
350
+ time_step = self.reset(self.global_episode)
351
+ time.sleep(2) #5)
352
+ # if 'vinn' in repr(self.agent):
353
+ # self.agent.reset()
354
+ # # self.agent.buffer.reset()
355
+ # # if self.cfg.open_loop:
356
+ # # self.agent.current_step = 0
357
+ # if 'openloop' in repr(self.agent):
358
+ # self.agent.curr_step = 0
359
+ # at start of each episode, provide zero action for policies that use action history
360
+ # shape should be (T_o, T_a, action_dim)
361
+
362
+ # while not time_step.last() and not self.preempt_episode:
363
+ self.video_recorder.ros_start_recording()
364
+ self.eval_replay_storage.start_episode()
365
+ self.eval_env.start_policy_timer()
366
+ while not self.eval_env.episode_done() and not self.preempt_episode:
367
+ # with torch.no_grad(), utils.eval_mode(self.agent):
368
+ # # if self.cfg.agent.provide_topk:
369
+ # # action, vinn_action, topk = self.agent.act(
370
+ # # time_step.observation['pixels'],
371
+ # # self.global_step,
372
+ # # eval_mode=True)
373
+ # # elif self.cfg.agent.provide_obs:
374
+ # # action, vinn_action, obs = self.agent.act(
375
+ # # time_step.observation['pixels'],
376
+ # # self.global_step,
377
+ # # eval_mode=True)
378
+ # # else:
379
+ # action, vinn_action = self.agent.act(
380
+ # time_step.observation,
381
+ # self.global_step,
382
+ # eval_mode=True,
383
+ # obs_timestamp=time_step.observation['timestamp'],
384
+ # obs_seq=time_step.observation['seq'],
385
+ # action_history=action_history,
386
+ # action_history_start_timestamp=action_history_start_timestamp,
387
+ # )
388
+ # DONT WAIT FOR POLICY TO GET AN ACTION
389
+ # we dont want to slow down grabbing obs and passing to sam/contact features
390
+
391
+ self.eval_env.run_policy_threads() # this just does a rospy sleep
392
+
393
+ # if self.use_action_history:
394
+ # action_history_start_timestamp = time_step.observation['timestamp']
395
+ # # action_history = action[:self.cfg.agent.config.policy_cfg.action_history_encoder_config.history_length, ...]
396
+ # # add n_obs_steps dimension to action_history, for now we assume n_obs_steps = 1
397
+ # # TODO: handle n_obs_steps > 1
398
+ # action_history = action[np.newaxis, ...]
399
+
400
+ # time_step = self.eval_env.step(action, vinn_action) # obs, reward after action has been taken
401
+ # debug_info_dict = self.eval_env.debug_info_dict
402
+
403
+ # time_step = self.eval_env.ros_step()
404
+
405
+ # replay_thread.join()
406
+
407
+ # time how long it takes to execute the step
408
+ # time_before_add = time.perf_counter()
409
+ # self.eval_replay_storage.add(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict)
410
+ # use thread to call the add function in a separate thread
411
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict))
412
+
413
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step, debug_info_dict))
414
+ # replay_thread.start()
415
+
416
+ # print(f"Time to add to replay buffer: {time.perf_counter() - time_before_add}")
417
+
418
+ # self.video_recorder.record(self.eval_env)
419
+ # self._global_step += 1
420
+
421
+ self.eval_env.stop_policy_timer()
422
+
423
+ if self.restart_episode:
424
+ # means we should delete the current episode and start again
425
+ self.restart_episode = False
426
+ self.eval_replay_storage.reset_current_episode()
427
+ self.video_recorder.reset_current_episode()
428
+
429
+ else:
430
+ self.eval_replay_storage.store_current_episode()
431
+ video_filepath = self.video_recorder.save()
432
+ self.logger.log_video(f"eval/{video_filepath.name.rstrip('.mp4')}", video_filepath, self.global_step)
433
+ self._global_episode += 1
434
+
435
+ self.preempt_episode = False # reset preempt_episode flag
436
+
437
+ # self.video_recorder.save(f'{episode}_eval.mp4')
438
+ # get the video file and convert to video tensor to log
439
+
440
+ self.eval_env.reset()
441
+
442
+ print("Evaluation finished. To wrap up, rate prev episode, press 0 for failure and 1 for success")
443
+ self.proceed_after_env_reset_event.clear() # clear the event flag
444
+ self.proceed_after_env_reset_event.wait() # blocking wait for the event flag to be set
445
+ if self.global_episode > 0:
446
+ # self.logger.log_metrics({'num_success': self.num_episode_successes}, self.global_step, 'eval', episode=self.global_episode)
447
+ self.logger.log_metrics({'num_success': self.num_episode_successes}, self.global_step, 'eval', episode=self.global_episode)
448
+ self.logger.log_metrics({'success_rate': self.num_episode_successes/self.global_episode}, self.global_step, 'eval', episode=self.global_episode)
449
+
450
+ # log confidence intervals for success rate
451
+ k = self.num_episode_successes # number of successes
452
+ n = self.global_episode # number of trials
453
+
454
+ table_columns = ['success_rate']
455
+ table_data = [self.num_episode_successes/self.global_episode]
456
+ for alpha in self.alpha_range:
457
+ lb = bc.binom_ci(k, n, alpha, 'lb')
458
+ ub = bc.binom_ci(k, n, alpha, 'ub')
459
+
460
+ self.logger.log_metrics({f'success_rate_lb_{alpha}': lb}, self.global_step, 'eval', episode=self.global_episode)
461
+ self.logger.log_metrics({f'success_rate_ub_{alpha}': ub}, self.global_step, 'eval', episode=self.global_episode)
462
+
463
+ table_columns.extend([f'success_rate_lb_{alpha}', f'success_rate_ub_{alpha}'])
464
+ table_data.extend([lb, ub])
465
+
466
+ table_data = [table_data]
467
+
468
+ # seperately log as a table
469
+ wandb.log({
470
+ "eval/success_rate_ci": wandb.Table(data=table_data, columns=table_columns)
471
+ })
472
+
473
+ # also accumulate eval metrics across previous eval runs
474
+ # TODO: change wandb init to resume from an existing run!!!
475
+ run_filter={
476
+ "jobType": "eval",
477
+ "config.wandb_run_id": self.cfg.wandb_run_id,
478
+ "summary_metrics.episode": {"$gte": 5},
479
+ "config.checkpoint_epoch": self.cfg.checkpoint_epoch,
480
+ "state": "finished",
481
+ # "config.grasped_obj_name": grasped_obj_name,
482
+ # "config.left_book_slot": left_book_slot,
483
+ }
484
+
485
+ api = wandb.Api()
486
+ filtered_runs = api.runs("serialexperimentsleon/extrinsic_contact_downstream", filters=run_filter)
487
+ total_num_successes = self.num_episode_successes
488
+ total_num_episodes = self.global_episode
489
+ list_of_historical_run_ids = []
490
+ if len(filtered_runs) > 0:
491
+ for filtered_run in filtered_runs:
492
+ total_num_successes += filtered_run.summary_metrics['eval/num_success']
493
+ # total_num_episodes += filtered_run.summary_metrics['episode']
494
+ total_num_episodes += filtered_run.config['num_eval']
495
+ list_of_historical_run_ids.append(filtered_run.id)
496
+
497
+ wandb.summary['total_num_successes'] = total_num_successes
498
+ wandb.summary['total_num_episodes'] = total_num_episodes
499
+ wandb.summary['total_success_rate'] = total_num_successes/total_num_episodes
500
+
501
+ # log the accumulated metrics as a table
502
+ total_table_columns = ['total_num_successes', 'total_num_episodes', 'total_success_rate']
503
+ total_table_data = [total_num_successes, total_num_episodes, total_num_successes/total_num_episodes]
504
+ self.logger.log_metrics({'total_success_rate': total_num_successes/total_num_episodes}, self.global_step, 'eval', episode=total_num_episodes)
505
+
506
+ for alpha in self.alpha_range:
507
+ lb = bc.binom_ci(total_num_successes, total_num_episodes, alpha, 'lb')
508
+ ub = bc.binom_ci(total_num_successes, total_num_episodes, alpha, 'ub')
509
+ total_table_columns.extend([f'total_success_rate_lb_{alpha}', f'total_success_rate_ub_{alpha}'])
510
+ total_table_data.extend([lb, ub])
511
+ wandb.summary[f'total_success_rate_lb_{alpha}'] = lb
512
+ wandb.summary[f'total_success_rate_ub_{alpha}'] = ub
513
+
514
+ self.logger.log_metrics({f'total_success_rate_lb_{alpha}': lb}, self.global_step, 'eval', episode=total_num_episodes)
515
+ self.logger.log_metrics({f'total_success_rate_ub_{alpha}': ub}, self.global_step, 'eval', episode=total_num_episodes)
516
+
517
+ total_table_data = [total_table_data]
518
+ wandb.log({
519
+ 'eval/total_success_rate_ci': wandb.Table(data=total_table_data, columns=total_table_columns)
520
+ })
521
+
522
+ self.continue_keypress_thread = False # will stop the keypress thread
523
+ self.keypress_input_thread.join() # wait for the keypress thread to finish
524
+
525
+ def load_checkpoint_conf(self, snapshot_path):
526
+ config_path = snapshot_path.parent / 'config.yaml'
527
+ if not config_path.exists():
528
+ raise FileNotFoundError(f'No snapshot conf found at {config_path}')
529
+ else:
530
+ # load the omegaconf config
531
+ hydra.core.global_hydra.GlobalHydra.instance().clear()
532
+ hydra.initialize(
533
+ str(_relative_path_between(Path(config_path).absolute().parent, Path(__file__).absolute().parent)),
534
+ )
535
+ cfg = hydra.compose(Path(config_path).stem)
536
+ from deepdiff import DeepDiff
537
+ from omegaconf import open_dict
538
+ diff = DeepDiff(OmegaConf.to_container(cfg), OmegaConf.to_container(self.cfg)) # old, new
539
+ # import re
540
+ overwriteable_keys = [f"root{overwritable_key}" for overwritable_key in ["['use_wandb']", "['path_to_depth_extrinsics']", "['eval']", "['root_dir']", "['wandb_notes']", "['agent']['config']['train_cfg']['use_amp']", "['agent']['config']['compile']", "['agent']['config']['policy_cfg']['num_inference_steps']"]]
541
+ if "values_changed" in diff:
542
+ # top_k_checkpoints, wandb_notes, agent.config.train_cfg.use_amp, save_snapshot_every_epochs_diffusion, check_topk_every_epochs_diffusion, validate_diffusion_on_action_loss_every_epochs, train_eval_diffusion_on_action_loss_every_epochs, validate_every_epochs_diffusion
543
+ # for keys above, overwrite the old config with the new config
544
+ for k, v in diff['values_changed'].items():
545
+ # replace any keys that are under "root['suite']"
546
+ if k in overwriteable_keys or k.startswith("root['suite']"):
547
+ print(f"Found changed key {k} with value {v}. Overwriting old checkpoint config")
548
+ if k == "root['agent']['config']['compile']":
549
+ if diff['values_changed'][k]['new_value']:
550
+ self.loading_uncompiled_checkpoint_with_compile = True
551
+ elif not diff['values_changed'][k]['new_value']:
552
+ # raise ValueError("Cannot load a compiled checkpoint without compile")
553
+ self.loading_compiled_checkpoint_with_no_compile = True
554
+ exec(f"{k.replace('root[', 'cfg[')} = {k.replace('root[', 'self.cfg[')}")
555
+ # for any new values, update the old checkpoint config
556
+ if "dictionary_item_added" in diff:
557
+ for new_key in diff['dictionary_item_added']: # this is a list
558
+ # if new_key == "root['suite']['task_make_fn']['observation_cfg']":
559
+ if new_key == "root['suite']['task_make_fn']['agent_policy_cfg']":
560
+ # pass the agents observation_cfg to the suite task_make_fn
561
+ with open_dict(cfg): # to allow addition of non-existing keys
562
+ # cfg.suite.task_make_fn.observation_cfg = cfg.agent.config.observation_cfg
563
+ cfg.suite.task_make_fn.agent_policy_cfg = cfg.agent.config
564
+ continue
565
+ elif "['agent']['config']['policy_cfg']['input_shapes']" in new_key:
566
+ # skip adding the new key if it is the input_shapes of the policy_cfg
567
+ continue
568
+ else:
569
+ print(f"Found new key {new_key} with value {eval(new_key.replace('root[', 'self.cfg['))}. Adding to checkpoint config")
570
+ # eval(new_key.replace('root', 'cfg')) = eval(new_key.replace('root', 'self.cfg'))
571
+ if new_key == "root['agent']['config']['compile']":
572
+ if self.cfg.agent.config.compile:
573
+ self.loading_uncompiled_checkpoint_with_compile = True
574
+
575
+ with open_dict(cfg):
576
+ exec(f"{new_key.replace('root[', 'cfg[')}={new_key.replace('root[', 'self.cfg[')}")
577
+ self.cfg = cfg
578
+
579
+ def load_checkpoint(self, snapshot_path, bc=False):
580
+ print(f'resuming {repr(self.agent)}: {snapshot_path}')
581
+ with snapshot_path.open('rb') as f:
582
+ payload = torch.load(f)
583
+ agent_payload = {}
584
+ for k, v in payload.items():
585
+ if k not in self.__dict__:
586
+ agent_payload[k] = v
587
+ elif k == '_global_epoch':
588
+ self._global_epoch = v
589
+ print(f'loaded epoch: {v}')
590
+ if self.cfg.use_wandb:
591
+ # add to config of wandb
592
+ wandb.config.update({'epoch': v})
593
+
594
+ # self.agent.load_snapshot_eval(agent_payload, bc)
595
+
596
+ @hydra.main(config_path='cfgs', config_name='config_eval')
597
+ def main(cfg):
598
+ from eval_robot import Workspace as W
599
+ root_dir = Path.cwd()
600
+ workspace = W(cfg)
601
+
602
+ workspace.eval()
603
+
604
+ if __name__ == '__main__':
605
+ main()
p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/config.yaml ADDED
@@ -0,0 +1,895 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ wandb_version: 1
2
+
3
+ root_dir:
4
+ desc: null
5
+ value: /home/leonmkim/fish_leon
6
+ replay_buffer_size:
7
+ desc: null
8
+ value: 150000
9
+ replay_buffer_num_workers:
10
+ desc: null
11
+ value: 2
12
+ nstep:
13
+ desc: null
14
+ value: 3
15
+ batch_size:
16
+ desc: null
17
+ value: 128
18
+ seed:
19
+ desc: null
20
+ value: 1
21
+ dataset_shuffle_seed:
22
+ desc: null
23
+ value: 0
24
+ device:
25
+ desc: null
26
+ value: cuda
27
+ save_video:
28
+ desc: null
29
+ value: true
30
+ save_train_video:
31
+ desc: null
32
+ value: true
33
+ use_tb:
34
+ desc: null
35
+ value: true
36
+ use_wandb:
37
+ desc: null
38
+ value: true
39
+ wandb_run_id:
40
+ desc: null
41
+ value: '1926_1'
42
+ wandb_notes:
43
+ desc: null
44
+ value: 1926_1_restarted_5
45
+ eval:
46
+ desc: null
47
+ value: true
48
+ true_action_history:
49
+ desc: null
50
+ value: false
51
+ train_pad_after:
52
+ desc: null
53
+ value: 4
54
+ process_contact_features:
55
+ desc: null
56
+ value: true
57
+ obs_type:
58
+ desc: null
59
+ value: pixels
60
+ use_color:
61
+ desc: null
62
+ value: true
63
+ use_depth:
64
+ desc: null
65
+ value: true
66
+ use_masks:
67
+ desc: null
68
+ value: true
69
+ mask_list:
70
+ desc: null
71
+ value:
72
+ - EE_obj_mask
73
+ mask_representation:
74
+ desc: null
75
+ value: channels
76
+ crop_hw:
77
+ desc: null
78
+ value:
79
+ - 144
80
+ - 144
81
+ crop_down_offset:
82
+ desc: null
83
+ value: 48
84
+ color_crop_type:
85
+ desc: null
86
+ value: null
87
+ depth_crop_type:
88
+ desc: null
89
+ value: null
90
+ segmask_crop_type:
91
+ desc: null
92
+ value: null
93
+ add_crop_binary_mask:
94
+ desc: null
95
+ value: false
96
+ add_coord_conv_map:
97
+ desc: null
98
+ value: false
99
+ use_context_color:
100
+ desc: null
101
+ value: false
102
+ use_context_depth:
103
+ desc: null
104
+ value: false
105
+ use_context_segmask:
106
+ desc: null
107
+ value: false
108
+ context_color_crop_type:
109
+ desc: null
110
+ value: null
111
+ context_depth_crop_type:
112
+ desc: null
113
+ value: null
114
+ context_segmask_crop_type:
115
+ desc: null
116
+ value: null
117
+ context_add_crop_binary_mask:
118
+ desc: null
119
+ value: false
120
+ context_add_coord_conv_map:
121
+ desc: null
122
+ value: false
123
+ use_contact_map:
124
+ desc: null
125
+ value: true
126
+ use_sdf_maps:
127
+ desc: null
128
+ value: true
129
+ use_normals_maps:
130
+ desc: null
131
+ value: true
132
+ which_objects:
133
+ desc: null
134
+ value: both
135
+ max_contact_prob:
136
+ desc: null
137
+ value: 0.1
138
+ max_depth:
139
+ desc: null
140
+ value: 2.0
141
+ grasped_dtc_max_value:
142
+ desc: null
143
+ value: 0.2
144
+ env_dtc_max_value:
145
+ desc: null
146
+ value: 0.4
147
+ grasped_normals_mask_max_dtc_value:
148
+ desc: null
149
+ value: 0.2
150
+ env_normals_mask_max_dtc_value:
151
+ desc: null
152
+ value: 0.4
153
+ clamp_dtc:
154
+ desc: null
155
+ value: true
156
+ dtc_adaptive_normalization:
157
+ desc: null
158
+ value: false
159
+ mask_normals_within_sdf:
160
+ desc: null
161
+ value: true
162
+ adaptive_normals_mask:
163
+ desc: null
164
+ value: true
165
+ learnable_contact_preprocess_params:
166
+ desc: null
167
+ value: true
168
+ contact_model_name:
169
+ desc: null
170
+ value: local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9
171
+ contact_estimation_model_ckpt_path:
172
+ desc: null
173
+ value: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
174
+ encoder_type:
175
+ desc: null
176
+ value: small
177
+ debug_timestamps:
178
+ desc: null
179
+ value: false
180
+ open_loop:
181
+ desc: null
182
+ value: false
183
+ action_trajectories:
184
+ desc: null
185
+ value: true
186
+ stop_after_action:
187
+ desc: null
188
+ value: false
189
+ interpolation_frequency:
190
+ desc: null
191
+ value: 25
192
+ policy_frequency:
193
+ desc: null
194
+ value: 5
195
+ wait_for_new_camera_frames:
196
+ desc: null
197
+ value: true
198
+ baseline:
199
+ desc: null
200
+ value: false
201
+ train_demo_idxs_list_or_num:
202
+ desc: null
203
+ value: -1
204
+ log_train_every_steps:
205
+ desc: null
206
+ value: 25
207
+ name_of_expert_demo:
208
+ desc: null
209
+ value: 120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
210
+ expert_dataset_dirpath:
211
+ desc: null
212
+ value: /home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
213
+ store_dataset_in_memory:
214
+ desc: null
215
+ value: false
216
+ expert_dataset:
217
+ desc: null
218
+ value: /home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr
219
+ action_key:
220
+ desc: null
221
+ value: action_trajectory_25hz
222
+ semantic_demo_grouping_name:
223
+ desc: null
224
+ value: semantic_demo_grouping.yaml
225
+ semantic_demo_grouping:
226
+ desc: null
227
+ value: /home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/semantic_demo_grouping.yaml
228
+ include_groups_list:
229
+ desc: null
230
+ value: all
231
+ expert_dataset_config:
232
+ desc: null
233
+ value: /home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demo_config.yaml
234
+ name_of_valid_demo:
235
+ desc: null
236
+ value: 120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
237
+ valid_dataset_dir:
238
+ desc: null
239
+ value: /home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr
240
+ valid_demo_idxs_list_or_num:
241
+ desc: null
242
+ value: null
243
+ val_num_groups:
244
+ desc: null
245
+ value: 7
246
+ load_bc:
247
+ desc: null
248
+ value: true
249
+ checkpoint_epoch_list:
250
+ desc: null
251
+ value:
252
+ - 99
253
+ - 199
254
+ - 299
255
+ - 399
256
+ - 499
257
+ - 599
258
+ - 699
259
+ - 799
260
+ - 899
261
+ - 999
262
+ - 1249
263
+ - 1499
264
+ - 1749
265
+ - 1999
266
+ - 2999
267
+ - 3999
268
+ - 4999
269
+ - 5999
270
+ - 6999
271
+ - 7999
272
+ - 8999
273
+ - 9999
274
+ snapshot_root_dir:
275
+ desc: null
276
+ value: /mnt/grasp_high_usage/leonmkim/contact_estimation/FISH
277
+ save_snapshot:
278
+ desc: null
279
+ value: true
280
+ save_last_snapshot:
281
+ desc: null
282
+ value: true
283
+ save_snapshot_when_done:
284
+ desc: null
285
+ value: true
286
+ top_k_checkpoints:
287
+ desc: null
288
+ value: 5
289
+ save_snapshot_link_to_weights_dir:
290
+ desc: null
291
+ value: deprecated
292
+ bc_regularize:
293
+ desc: null
294
+ value: false
295
+ bc_weight_type:
296
+ desc: null
297
+ value: qfilter
298
+ experiment_dir:
299
+ desc: null
300
+ value: ./exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1
301
+ agent:
302
+ desc: null
303
+ value:
304
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
305
+ name: diffusion_policy
306
+ load_checkpoint: true
307
+ device: cuda
308
+ n_obs_steps: 1
309
+ suite_name: frankagym
310
+ obs_type: pixels
311
+ enable_arm: true
312
+ enable_camera: true
313
+ use_tb: true
314
+ desired_image_shape:
315
+ - 13
316
+ - 180
317
+ - 240
318
+ orig_cam_shape:
319
+ - 3
320
+ - 240
321
+ - 320
322
+ config:
323
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
324
+ compile: false
325
+ device: cuda
326
+ cam_resize_shape:
327
+ - 13
328
+ - 180
329
+ - 240
330
+ orig_cam_shape:
331
+ - 3
332
+ - 240
333
+ - 320
334
+ policy_frequency: 5
335
+ interpolation_frequency: 25
336
+ policy_cfg:
337
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
338
+ n_obs_steps: 1
339
+ horizon: 36
340
+ n_action_steps: 36
341
+ output_shapes:
342
+ action:
343
+ - 7
344
+ input_normalization_modes:
345
+ observation.image: mean_std
346
+ observation.state: min_max
347
+ observation.action_history: min_max
348
+ output_normalization_modes:
349
+ action: min_max
350
+ vision_backbone: resnet18
351
+ pretrained_backbone_weights: null
352
+ transforms:
353
+ - _target_: torchaug.transforms.RandomAffine
354
+ degrees:
355
+ - -5
356
+ - 5
357
+ translate:
358
+ - 0.05
359
+ - 0.05
360
+ batch_transform: true
361
+ num_chunks: -1
362
+ batch_inplace: true
363
+ - _target_: torchaug.transforms.RandomColorJitter
364
+ brightness: 0.3
365
+ contrast: 0.4
366
+ saturation: 0.5
367
+ hue: 0.08
368
+ batch_transform: true
369
+ num_chunks: -1
370
+ batch_inplace: true
371
+ use_group_norm: true
372
+ spatial_softmax_num_keypoints: 32
373
+ action_history_encoder_config:
374
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
375
+ in_channels: 7
376
+ out_channels: 32
377
+ history_length: 6
378
+ kernel_size: 5
379
+ downsample_kernel_size: 3
380
+ downsample_stride: 2
381
+ downsample_padding: 1
382
+ down_dims:
383
+ - 256
384
+ - 512
385
+ - 1024
386
+ kernel_size: 5
387
+ n_groups: 8
388
+ diffusion_step_embed_dim: 128
389
+ use_film_scale_modulation: true
390
+ noise_scheduler_type: DDIM
391
+ beta_schedule: squaredcos_cap_v2
392
+ beta_start: 0.0001
393
+ beta_end: 0.02
394
+ prediction_type: epsilon
395
+ clip_sample: true
396
+ clip_sample_range: 1.0
397
+ num_train_timesteps: 50
398
+ num_inference_steps: 10
399
+ do_mask_loss_for_padding: false
400
+ input_shapes:
401
+ observation.image:
402
+ - 13
403
+ - 180
404
+ - 240
405
+ context_observation.image:
406
+ - 13
407
+ - 180
408
+ - 240
409
+ observation.state:
410
+ - 8
411
+ observation.action_history:
412
+ - 7
413
+ train_cfg:
414
+ _target_: utils.TrainConfig
415
+ lr: 0.0001
416
+ lr_scheduler: cosine
417
+ lr_warmup_steps: 500
418
+ adam_betas:
419
+ - 0.95
420
+ - 0.999
421
+ adam_eps: 1.0e-08
422
+ adam_weight_decay: 1.0e-06
423
+ grad_clip_norm: 10
424
+ offline_steps: 1000000
425
+ use_amp: true
426
+ observation_cfg:
427
+ _target_: agent.encoder.VisualFeatureSet
428
+ use_depth: true
429
+ use_color: true
430
+ mask_input_dict:
431
+ _target_: agent.encoder.MaskInputDict
432
+ enable: true
433
+ representation: channels
434
+ mask_list:
435
+ - EE_obj_mask
436
+ crop_input_config:
437
+ _target_: agent.encoder.CropInputConfig
438
+ color_crop_type: null
439
+ depth_crop_type: null
440
+ segmask_crop_type: null
441
+ crop_hw:
442
+ - 144
443
+ - 144
444
+ crop_down_offset: 48
445
+ add_crop_binary_mask: false
446
+ add_coord_conv_map: false
447
+ context_input_config:
448
+ _target_: agent.encoder.ContextInputConfig
449
+ use_color: false
450
+ use_depth: false
451
+ mask_input_dict:
452
+ _target_: agent.encoder.MaskInputDict
453
+ enable: false
454
+ representation: channels
455
+ mask_list:
456
+ - EE_obj_mask
457
+ crop_input_config:
458
+ _target_: agent.encoder.CropInputConfig
459
+ color_crop_type: null
460
+ depth_crop_type: null
461
+ segmask_crop_type: null
462
+ crop_hw:
463
+ - 144
464
+ - 144
465
+ crop_down_offset: 48
466
+ add_crop_binary_mask: false
467
+ add_coord_conv_map: false
468
+ mask_soft_approx_scheduler_config:
469
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
470
+ num_steps: 40000
471
+ initial_value: 10.0
472
+ final_value: 1000.0
473
+ interpolation_scheme: cosine
474
+ use_contact_map: true
475
+ use_sdf_maps: true
476
+ use_normals_maps: true
477
+ which_objects: both
478
+ grasped_dtc_max_value: 0.2
479
+ env_dtc_max_value: 0.4
480
+ grasped_normals_mask_max_dtc_value: 0.2
481
+ env_normals_mask_max_dtc_value: 0.4
482
+ clamp_dtc: true
483
+ max_contact_prob: 0.1
484
+ mask_normals_within_sdf: true
485
+ dtc_adaptive_normalization: false
486
+ adaptive_normals_mask: true
487
+ max_depth: 2.0
488
+ image_shape:
489
+ - 13
490
+ - 180
491
+ - 240
492
+ learnable_contact_preprocess_params: true
493
+ learning_rate: 0.0001
494
+ weight_decay: 0.0
495
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9
496
+ zero_centered: false
497
+ suite:
498
+ desc: null
499
+ value:
500
+ suite: frankagym
501
+ name: frankagym
502
+ frame_stack: 1
503
+ action_repeat: 1
504
+ discount: 0.99
505
+ hidden_dim: 1024
506
+ num_train_frames: 2010
507
+ num_seed_frames: 260
508
+ num_train_epochs: 5000
509
+ validate_every_epochs: 100
510
+ validate_diffusion_on_action_loss_every_epochs: 500
511
+ train_eval_diffusion_on_action_loss_every_epochs: 500
512
+ check_topk_every_epochs: 10
513
+ save_snapshot_every_epochs: 5000
514
+ eval_every_frames: 2000
515
+ num_eval_episodes: 5
516
+ save_snapshot: true
517
+ wait_for_user_to_start_episode: true
518
+ task_make_fn:
519
+ _target_: suite.frankagym.make
520
+ name: FrankaInsertion-v1
521
+ height: 240
522
+ width: 320
523
+ frame_stack: 1
524
+ action_repeat: 1
525
+ seed: 1
526
+ enable_arm: true
527
+ enable_gripper: true
528
+ start_with_gripper_open: true
529
+ enable_camera: true
530
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
531
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
532
+ x_limit:
533
+ - 0.2
534
+ - 0.7
535
+ y_limit:
536
+ - -0.4
537
+ - 0.4
538
+ z_limit:
539
+ - -0.05
540
+ - 0.55
541
+ device: cuda
542
+ interpolation_frequency: 25
543
+ policy_frequency: 5
544
+ debug_timestamps: false
545
+ stop_after_action: false
546
+ open_loop: false
547
+ wait_for_new_camera_frames: true
548
+ action_key: action_trajectory_25hz
549
+ action_trajectory_horizon: 36
550
+ action_trajectories: true
551
+ path_to_zarr_dataset: /home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr
552
+ agent_policy_cfg:
553
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
554
+ compile: false
555
+ device: cuda
556
+ cam_resize_shape:
557
+ - 13
558
+ - 180
559
+ - 240
560
+ orig_cam_shape:
561
+ - 3
562
+ - 240
563
+ - 320
564
+ policy_frequency: 5
565
+ interpolation_frequency: 25
566
+ policy_cfg:
567
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
568
+ n_obs_steps: 1
569
+ horizon: 36
570
+ n_action_steps: 36
571
+ output_shapes:
572
+ action:
573
+ - 7
574
+ input_normalization_modes:
575
+ observation.image: mean_std
576
+ observation.state: min_max
577
+ observation.action_history: min_max
578
+ output_normalization_modes:
579
+ action: min_max
580
+ vision_backbone: resnet18
581
+ pretrained_backbone_weights: null
582
+ transforms:
583
+ - _target_: torchaug.transforms.RandomAffine
584
+ degrees:
585
+ - -5
586
+ - 5
587
+ translate:
588
+ - 0.05
589
+ - 0.05
590
+ batch_transform: true
591
+ num_chunks: -1
592
+ batch_inplace: true
593
+ - _target_: torchaug.transforms.RandomColorJitter
594
+ brightness: 0.3
595
+ contrast: 0.4
596
+ saturation: 0.5
597
+ hue: 0.08
598
+ batch_transform: true
599
+ num_chunks: -1
600
+ batch_inplace: true
601
+ use_group_norm: true
602
+ spatial_softmax_num_keypoints: 32
603
+ action_history_encoder_config:
604
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
605
+ in_channels: 7
606
+ out_channels: 32
607
+ history_length: 6
608
+ kernel_size: 5
609
+ downsample_kernel_size: 3
610
+ downsample_stride: 2
611
+ downsample_padding: 1
612
+ down_dims:
613
+ - 256
614
+ - 512
615
+ - 1024
616
+ kernel_size: 5
617
+ n_groups: 8
618
+ diffusion_step_embed_dim: 128
619
+ use_film_scale_modulation: true
620
+ noise_scheduler_type: DDIM
621
+ beta_schedule: squaredcos_cap_v2
622
+ beta_start: 0.0001
623
+ beta_end: 0.02
624
+ prediction_type: epsilon
625
+ clip_sample: true
626
+ clip_sample_range: 1.0
627
+ num_train_timesteps: 50
628
+ num_inference_steps: 10
629
+ do_mask_loss_for_padding: false
630
+ input_shapes:
631
+ observation.image:
632
+ - 13
633
+ - 180
634
+ - 240
635
+ context_observation.image:
636
+ - 13
637
+ - 180
638
+ - 240
639
+ observation.state:
640
+ - 8
641
+ observation.action_history:
642
+ - 7
643
+ train_cfg:
644
+ _target_: utils.TrainConfig
645
+ lr: 0.0001
646
+ lr_scheduler: cosine
647
+ lr_warmup_steps: 500
648
+ adam_betas:
649
+ - 0.95
650
+ - 0.999
651
+ adam_eps: 1.0e-08
652
+ adam_weight_decay: 1.0e-06
653
+ grad_clip_norm: 10
654
+ offline_steps: 1000000
655
+ use_amp: true
656
+ observation_cfg:
657
+ _target_: agent.encoder.VisualFeatureSet
658
+ use_depth: true
659
+ use_color: true
660
+ mask_input_dict:
661
+ _target_: agent.encoder.MaskInputDict
662
+ enable: true
663
+ representation: channels
664
+ mask_list:
665
+ - EE_obj_mask
666
+ crop_input_config:
667
+ _target_: agent.encoder.CropInputConfig
668
+ color_crop_type: null
669
+ depth_crop_type: null
670
+ segmask_crop_type: null
671
+ crop_hw:
672
+ - 144
673
+ - 144
674
+ crop_down_offset: 48
675
+ add_crop_binary_mask: false
676
+ add_coord_conv_map: false
677
+ context_input_config:
678
+ _target_: agent.encoder.ContextInputConfig
679
+ use_color: false
680
+ use_depth: false
681
+ mask_input_dict:
682
+ _target_: agent.encoder.MaskInputDict
683
+ enable: false
684
+ representation: channels
685
+ mask_list:
686
+ - EE_obj_mask
687
+ crop_input_config:
688
+ _target_: agent.encoder.CropInputConfig
689
+ color_crop_type: null
690
+ depth_crop_type: null
691
+ segmask_crop_type: null
692
+ crop_hw:
693
+ - 144
694
+ - 144
695
+ crop_down_offset: 48
696
+ add_crop_binary_mask: false
697
+ add_coord_conv_map: false
698
+ mask_soft_approx_scheduler_config:
699
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
700
+ num_steps: 40000
701
+ initial_value: 10.0
702
+ final_value: 1000.0
703
+ interpolation_scheme: cosine
704
+ use_contact_map: true
705
+ use_sdf_maps: true
706
+ use_normals_maps: true
707
+ which_objects: both
708
+ grasped_dtc_max_value: 0.2
709
+ env_dtc_max_value: 0.4
710
+ grasped_normals_mask_max_dtc_value: 0.2
711
+ env_normals_mask_max_dtc_value: 0.4
712
+ clamp_dtc: true
713
+ max_contact_prob: 0.1
714
+ mask_normals_within_sdf: true
715
+ dtc_adaptive_normalization: false
716
+ adaptive_normals_mask: true
717
+ max_depth: 2.0
718
+ image_shape:
719
+ - 13
720
+ - 180
721
+ - 240
722
+ learnable_contact_preprocess_params: true
723
+ learning_rate: 0.0001
724
+ weight_decay: 0.0
725
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9
726
+ zero_centered: false
727
+ true_action_history: false
728
+ num_train_frames_bc:
729
+ desc: null
730
+ value: 50000
731
+ num_train_frames_drq:
732
+ desc: null
733
+ value: 1100000
734
+ stddev_schedule_drq:
735
+ desc: null
736
+ value: linear(1.0,0.1,100000)
737
+ task_name:
738
+ desc: null
739
+ value: FrankaInsertion-v1
740
+ num_train_frames_vinn:
741
+ desc: null
742
+ value: 25000
743
+ num_train_frames_diffusion:
744
+ desc: null
745
+ value: 1000000
746
+ num_train_epochs_bc:
747
+ desc: null
748
+ value: 5000
749
+ num_train_epochs_diffusion:
750
+ desc: null
751
+ value: 15000
752
+ validate_every_epochs_bc:
753
+ desc: null
754
+ value: 5
755
+ validate_every_epochs_diffusion:
756
+ desc: null
757
+ value: 250
758
+ validate_diffusion_on_action_loss_every_epochs:
759
+ desc: null
760
+ value: 250
761
+ train_eval_diffusion_on_action_loss_every_epochs:
762
+ desc: null
763
+ value: 250
764
+ check_topk_every_epochs:
765
+ desc: null
766
+ value: 5
767
+ check_topk_every_epochs_diffusion:
768
+ desc: null
769
+ value: 250
770
+ save_snapshot_every_epochs_diffusion:
771
+ desc: null
772
+ value: 1500
773
+ x_limit:
774
+ desc: null
775
+ value:
776
+ - 0.2
777
+ - 0.7
778
+ y_limit:
779
+ desc: null
780
+ value:
781
+ - -0.4
782
+ - 0.4
783
+ z_limit:
784
+ desc: null
785
+ value:
786
+ - -0.05
787
+ - 0.55
788
+ home_displacement:
789
+ desc: null
790
+ value:
791
+ - 0.55
792
+ - 0.0
793
+ - 0.55
794
+ - 180.0
795
+ - 0.0
796
+ - 0.0
797
+ enable_gripper:
798
+ desc: null
799
+ value: true
800
+ start_with_gripper_open:
801
+ desc: null
802
+ value: true
803
+ offset_mask:
804
+ desc: null
805
+ value:
806
+ - 1
807
+ - 1
808
+ - 1
809
+ - 1
810
+ - 1
811
+ - 1
812
+ path_to_depth_extrinsics:
813
+ desc: null
814
+ value: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
815
+ feature_type:
816
+ desc: null
817
+ value: 180x240_1_RGB_D_2.0_msk_channels_EE_obj_mask_cntct_0.1_DTC_clmpd_lrnbl_nrmls_DTCmask_adpt_lrnbl_both_lr_0.0001_wd_0.0_local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9_acthst_hst6_out32_dwnkrnl3_dwnstrd2_dwnpd1
818
+ save_buffer:
819
+ desc: null
820
+ value: true
821
+ num_eval:
822
+ desc: null
823
+ value: 5
824
+ random_start:
825
+ desc: null
826
+ value: false
827
+ eval_starts:
828
+ desc: null
829
+ value: /home/leonmkim/fish_leon/FISH/eval_starts/frankagym_pixels/FrankaInsertion-v1
830
+ num_valid_demos:
831
+ desc: null
832
+ value: null
833
+ load_checkpoint:
834
+ desc: null
835
+ value: true
836
+ checkpoint_epoch:
837
+ desc: null
838
+ value: 12000
839
+ load_residual_weight:
840
+ desc: null
841
+ value: false
842
+ checkpoint_root_dir:
843
+ desc: null
844
+ value: /home/leonmkim/fish_leon/FISH
845
+ checkpoint_weight_dir:
846
+ desc: null
847
+ value: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1
848
+ residual_weight:
849
+ desc: null
850
+ value: /home/leonmkim/fish_leon/FISH/weights/frankagym_pixels/FrankaInsertion-v1/weight.pt
851
+ final_experiment_dir:
852
+ desc: null
853
+ value: ./exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/p96n5ha2
854
+ _wandb:
855
+ desc: null
856
+ value:
857
+ code_path: code/FISH/eval_robot.py
858
+ python_version: 3.10.14
859
+ cli_version: 0.17.5
860
+ framework: torch
861
+ is_jupyter_run: false
862
+ is_kaggle_kernel: false
863
+ start_time: 1735963110
864
+ t:
865
+ 1:
866
+ - 1
867
+ - 41
868
+ - 49
869
+ - 50
870
+ - 55
871
+ - 83
872
+ 2:
873
+ - 1
874
+ - 41
875
+ - 49
876
+ - 50
877
+ - 55
878
+ - 83
879
+ 3:
880
+ - 14
881
+ - 16
882
+ - 23
883
+ - 35
884
+ - 62
885
+ 4: 3.10.14
886
+ 5: 0.17.5
887
+ 8:
888
+ - 5
889
+ 13: linux-x86_64
890
+ grasped_obj_name:
891
+ desc: null
892
+ value: lady
893
+ left_book_slot:
894
+ desc: null
895
+ value: twodim
p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/diff.patch ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ diff --git a/FISH/cfgs/config_eval.yaml b/FISH/cfgs/config_eval.yaml
2
+ index 57a851f..27e7d93 100644
3
+ --- a/FISH/cfgs/config_eval.yaml
4
+ +++ b/FISH/cfgs/config_eval.yaml
5
+ @@ -138,12 +138,18 @@ load_checkpoint: ${agent.load_checkpoint}
6
+ # all books, 6/20 demos per book
7
+ # RGBD+mask+act history
8
+ # wandb_run_id: '1007_0'
9
+ +# wandb_run_id: '1922_1' # seed 1
10
+ +# wandb_run_id: '1938_0' # dataset shuffle seed 1
11
+
12
+ # RGBD+mask+contact(all ftrs)+act history
13
+ # wandb_run_id: '1006_0'
14
+ +wandb_run_id: '1926_1' # seed 1
15
+ +# wandb_run_id: '1930_0' # dataset shuffle seed 1
16
+ +
17
+ +
18
+
19
+ # RGBD+mask+contact(contact+DTC)+act history
20
+ -wandb_run_id: '1745_0'
21
+ +# wandb_run_id: '1745_0'
22
+
23
+ # 112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
24
+ # 14 demos
25
+ diff --git a/FISH/download_model_checkpoints.py b/FISH/download_model_checkpoints.py
26
+ index 71a5d1c..c7eadce 100644
27
+ --- a/FISH/download_model_checkpoints.py
28
+ +++ b/FISH/download_model_checkpoints.py
29
+ @@ -159,8 +159,10 @@ run_id_list = [
30
+ ]
31
+
32
+ run_id_list = [
33
+ - # '1006_0',
34
+ - '1745_0'
35
+ + # '1922_1',
36
+ + # '1922_2',
37
+ + '1926_1',
38
+ + '1930_0',
39
+ ]
40
+
41
+ checkpoint_epoch = 12000
42
+ diff --git a/gym-envs/gym_envs/envs/hardware/franka.py b/gym-envs/gym_envs/envs/hardware/franka.py
43
+ index 6f97e26..285afc8 100644
44
+ --- a/gym-envs/gym_envs/envs/hardware/franka.py
45
+ +++ b/gym-envs/gym_envs/envs/hardware/franka.py
46
+ @@ -330,8 +330,8 @@ class Franka:
47
+ # self.yaw = yaw
48
+
49
+ self.move_to_target_hz = 10.0
50
+ - self.move_to_trans_tolerance = 0.005
51
+ - self.move_to_rot_tolerance = 1.0
52
+ + self.move_to_trans_tolerance = 0.01
53
+ + self.move_to_rot_tolerance = 2.0
54
+ self.move_to_target_max_velocity = 0.8
55
+ self.move_to_target_max_distance = self.move_to_target_max_velocity * (1/self.move_to_target_hz)
56
+ self.move_to_target_timeout = 5.0
p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/table/eval/success_rate_ci_5_21a9f3410d4e4ea9386f.table.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"columns": ["success_rate", "success_rate_lb_0.01", "success_rate_ub_0.01", "success_rate_lb_0.025", "success_rate_ub_0.025", "success_rate_lb_0.05", "success_rate_ub_0.05", "success_rate_lb_0.1", "success_rate_ub_0.1"], "data": [[0.6, 0.20694816118379347, 0.9527384935904063, 0.20744311815390934, 0.9364891498407951, 0.2632499635693074, 0.8492476194398473, 0.24815547471314967, 0.8085234164574604]]}
p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/table/eval/total_success_rate_ci_6_b44f9defe3679a919f05.table.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"columns": ["total_num_successes", "total_num_episodes", "total_success_rate", "total_success_rate_lb_0.01", "total_success_rate_ub_0.01", "total_success_rate_lb_0.025", "total_success_rate_ub_0.025", "total_success_rate_lb_0.05", "total_success_rate_ub_0.05", "total_success_rate_lb_0.1", "total_success_rate_ub_0.1"], "data": [[16, 30, 0.5333333333333333, 0.3427325189428152, 0.7259325384641823, 0.3498348743023795, 0.6953116207924273, 0.3724039420740689, 0.6802478581306451, 0.4301501289149747, 0.6539621799876325]]}
p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/videos/eval/0_eval_0_5e4793e12534ec85ec65.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5e4793e12534ec85ec6520ee2458c3039cb75c9463629819749011340205e24a
3
+ size 1584649
p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/videos/eval/1_eval_1_d3ea4408164b8a140674.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d3ea4408164b8a140674496ba6629b16413df452969c28f8b7fb74e7b7c1f263
3
+ size 1507254
p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/videos/eval/2_eval_2_352b7f510e51bce38993.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:352b7f510e51bce389935d029bf3e54435b606213e8f5e38be4dba2eeb3cf22f
3
+ size 1556281
p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/videos/eval/3_eval_3_0172777c44cdec6ec773.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0172777c44cdec6ec773e208a913b0c9360554e00d010ab67a9ec13f40c91643
3
+ size 1571685
p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/media/videos/eval/4_eval_4_6398d8b01df3925cc7cf.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6398d8b01df3925cc7cf3af337da5a7b49b62f423550339e0e3f74e019f1b7cf
3
+ size 1568166
p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/output.log ADDED
@@ -0,0 +1,280 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ loaded agent with feature_type: 180x240_1_RGB_D_2.0_msk_channels_EE_obj_mask_cntct_0.1_DTC_clmpd_lrnbl_nrmls_DTCmask_adpt_lrnbl_both_lr_0.0001_wd_0.0_local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9_acthst_hst6_out32_dwnkrnl3_dwnstrd2_dwnpd1
3
+ [INFO] [1735963116.605853]: resetting environment
4
+ [INFO] [1735963116.613068]: cleared current plan
5
+ [INFO] [1735963116.614200]: moving to home
6
+ [INFO] [1735963117.616613]: reached home
7
+ [INFO] [1735963117.618023]: reset action history
8
+ [INFO] [1735963120.327955]: environment reset
9
+ Starting episode 0
10
+ [INFO] [1735963120.332555]: resetting environment
11
+ [INFO] [1735963120.338644]: cleared current plan
12
+ [INFO] [1735963120.340014]: moving to home
13
+ [INFO] [1735963121.342666]: reached home
14
+ [INFO] [1735963121.343900]: reset action history
15
+ [INFO] [1735963124.052095]: environment reset
16
+ Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success
17
+ proceeding to start episode!
18
+ [INFO] [1735963127.340186]: resetting environment
19
+ [INFO] [1735963127.346722]: cleared current plan
20
+ [INFO] [1735963127.347811]: moving to home
21
+ [INFO] [1735963128.349337]: reached home
22
+ [INFO] [1735963128.350634]: reset action history
23
+ [INFO] [1735963131.059216]: environment reset
24
+ bag_path_name:=/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/p96n5ha2/episode_rosbags/episode_0_2025-01-03-22-58-51.bag
25
+ ... logging to /home/leonmkim/.ros/log/a8a09c64-c64e-11ef-96d2-5defea869005/roslaunch-leonmkim-ROG-Strix-G15CS-G15CS-1990442.log
26
+ started roslaunch server http://158.130.50.37:34707/
27
+ SUMMARY
28
+ ========
29
+ PARAMETERS
30
+ * /rosdistro: noetic
31
+ * /rosversion: 1.16.0
32
+ NODES
33
+ /
34
+ print_text (rostopic/rostopic)
35
+ pub_text (rostopic/rostopic)
36
+ rosbag_record (rosbag/record)
37
+ ROS_MASTER_URI=http://localhost:11311
38
+ process[pub_text-1]: started with pid [1990744]
39
+ process[print_text-2]: started with pid [1990745]
40
+ process[rosbag_record-3]: started with pid [1990746]
41
+ started bagging!
42
+ For topic gripper_width: timestamp difference is -105547023 for nearest: 1735963144461516070 - target: 1735963144567063093 at idx 188
43
+ [INFO] [1735963165.975778]: Storing episode...
44
+ [rosbag_record-3] killing on exit
45
+ [print_text-2] killing on exit[pub_text-1] killing on exit
46
+ [INFO] [1735963166.710581]: Stored episode 1.
47
+ [INFO] [1735963166.710842]: Saving video...
48
+ [INFO] [1735963166.925253]: Video saved!
49
+ Starting episode 1
50
+ [INFO] [1735963166.944940]: resetting environment
51
+ [INFO] [1735963166.952869]: cleared current plan
52
+ [INFO] [1735963166.953163]: moving to home
53
+ [INFO] [1735963170.456658]: reached home
54
+ [INFO] [1735963170.457115]: reset action history
55
+ [INFO] [1735963173.168247]: environment reset
56
+ Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success
57
+ proceeding to start episode!
58
+ Comuting lower confidence bound
59
+ Comuting upper confidence bound
60
+ Comuting lower confidence bound
61
+ Comuting upper confidence bound
62
+ Comuting lower confidence bound
63
+ Comuting upper confidence bound
64
+ Comuting lower confidence bound
65
+ Comuting upper confidence bound
66
+ [INFO] [1735963178.063614]: resetting environment
67
+ [INFO] [1735963178.068279]: cleared current plan
68
+ [INFO] [1735963178.068444]: moving to home
69
+ [INFO] [1735963179.069249]: reached home
70
+ [INFO] [1735963179.069650]: reset action history
71
+ [INFO] [1735963181.777369]: environment reset
72
+ bag_path_name:=/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/p96n5ha2/episode_rosbags/episode_1_2025-01-03-22-59-41.bag
73
+ ... logging to /home/leonmkim/.ros/log/a8a09c64-c64e-11ef-96d2-5defea869005/roslaunch-leonmkim-ROG-Strix-G15CS-G15CS-1990442.log
74
+ started roslaunch server http://158.130.50.37:36671/
75
+ SUMMARY
76
+ ========
77
+ PARAMETERS
78
+ * /rosdistro: noetic
79
+ * /rosversion: 1.16.0
80
+ NODES
81
+ /
82
+ print_text (rostopic/rostopic)
83
+ pub_text (rostopic/rostopic)
84
+ rosbag_record (rosbag/record)
85
+ ROS_MASTER_URI=http://localhost:11311
86
+ process[pub_text-4]: started with pid [1990870]
87
+ process[print_text-5]: started with pid [1990894]
88
+ process[rosbag_record-6]: started with pid [1990895]
89
+ started bagging!
90
+ For topic gripper_width: timestamp difference is -103969261 for nearest: 1735963187761516884 - target: 1735963187865486145 at idx 82
91
+ For topic gripper_width: timestamp difference is 105273072 for nearest: 1735963199428182427 - target: 1735963199322909355 at idx 226
92
+ For topic gripper_width: timestamp difference is 107829136 for nearest: 1735963202528207583 - target: 1735963202420378447 at idx 249
93
+ preempting episode
94
+ [INFO] [1735963214.895187]: Storing episode...
95
+ [rosbag_record-6] killing on exit
96
+ [print_text-5] killing on exit
97
+ [pub_text-4] killing on exit
98
+ [INFO] [1735963215.637389]: Stored episode 2.
99
+ [INFO] [1735963215.637668]: Saving video...
100
+ [INFO] [1735963215.942272]: Video saved!
101
+ Starting episode 2
102
+ [INFO] [1735963215.967470]: resetting environment
103
+ [INFO] [1735963215.980747]: cleared current plan
104
+ [INFO] [1735963215.981027]: moving to home
105
+ [INFO] [1735963219.084946]: reached home
106
+ [INFO] [1735963219.090258]: reset action history
107
+ [INFO] [1735963221.864906]: environment reset
108
+ Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success
109
+ proceeding to start episode!Comuting lower confidence bound
110
+ Comuting upper confidence bound
111
+ Comuting lower confidence bound
112
+ Comuting upper confidence bound
113
+ Comuting lower confidence bound
114
+ Comuting upper confidence bound
115
+ Comuting lower confidence bound
116
+ Comuting upper confidence bound
117
+ [INFO] [1735963238.328332]: resetting environment
118
+ [INFO] [1735963238.340118]: cleared current plan
119
+ [INFO] [1735963238.341284]: moving to home
120
+ [INFO] [1735963239.343256]: reached home
121
+ [INFO] [1735963239.343716]: reset action history
122
+ [INFO] [1735963242.052695]: environment reset
123
+ bag_path_name:=/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/p96n5ha2/episode_rosbags/episode_2_2025-01-03-23-00-42.bag
124
+ ... logging to /home/leonmkim/.ros/log/a8a09c64-c64e-11ef-96d2-5defea869005/roslaunch-leonmkim-ROG-Strix-G15CS-G15CS-1990442.log
125
+ started roslaunch server http://158.130.50.37:36973/
126
+ SUMMARY
127
+ ========
128
+ PARAMETERS
129
+ * /rosdistro: noetic
130
+ * /rosversion: 1.16.0
131
+ NODES
132
+ /
133
+ print_text (rostopic/rostopic)
134
+ pub_text (rostopic/rostopic)
135
+ rosbag_record (rosbag/record)
136
+ ROS_MASTER_URI=http://localhost:11311
137
+ process[pub_text-7]: started with pid [1991047]
138
+ process[print_text-8]: started with pid [1991048]
139
+ process[rosbag_record-9]: started with pid [1991049]
140
+ started bagging!
141
+ For topic gripper_width: timestamp difference is 116341523 for nearest: 1735963254428184680 - target: 1735963254311843157 at idx 171
142
+ For topic gripper_width: timestamp difference is 129234826 for nearest: 1735963270328181779 - target: 1735963270198946953 at idx 249
143
+ For topic gripper_width: timestamp difference is 101083382 for nearest: 1735963276828173502 - target: 1735963276727090120 at idx 249
144
+ [INFO] [1735963277.072950]: Storing episode...
145
+ [rosbag_record-9] killing on exit
146
+ [pub_text-7] killing on exit
147
+ [print_text-8] killing on exit
148
+ [INFO] [1735963277.894449]: Stored episode 3.
149
+ [INFO] [1735963277.896432]: Saving video...
150
+ [INFO] [1735963278.157827]: Video saved!
151
+ Starting episode 3
152
+ [INFO] [1735963278.208383]: resetting environment
153
+ [INFO] [1735963278.228942]: cleared current plan
154
+ [INFO] [1735963278.234535]: moving to home
155
+ [INFO] [1735963281.745425]: reached home
156
+ [INFO] [1735963281.747333]: reset action history
157
+ [INFO] [1735963284.527932]: environment reset
158
+ Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success
159
+ proceeding to start episode!Comuting lower confidence bound
160
+ Comuting upper confidence bound
161
+ Comuting lower confidence bound
162
+ Comuting upper confidence bound
163
+ Comuting lower confidence bound
164
+ Comuting upper confidence bound
165
+ Comuting lower confidence bound
166
+ Comuting upper confidence bound
167
+ [INFO] [1735963287.011626]: resetting environment
168
+ [INFO] [1735963287.028859]: cleared current plan
169
+ [INFO] [1735963287.033757]: moving to home
170
+ [INFO] [1735963288.042753]: reached home
171
+ [INFO] [1735963288.047735]: reset action history
172
+ [INFO] [1735963290.818521]: environment reset
173
+ bag_path_name:=/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/p96n5ha2/episode_rosbags/episode_3_2025-01-03-23-01-30.bag
174
+ ... logging to /home/leonmkim/.ros/log/a8a09c64-c64e-11ef-96d2-5defea869005/roslaunch-leonmkim-ROG-Strix-G15CS-G15CS-1990442.log
175
+ started roslaunch server http://158.130.50.37:32909/
176
+ SUMMARY
177
+ ========
178
+ PARAMETERS
179
+ * /rosdistro: noetic
180
+ * /rosversion: 1.16.0
181
+ NODES
182
+ /
183
+ print_text (rostopic/rostopic)
184
+ pub_text (rostopic/rostopic)
185
+ rosbag_record (rosbag/record)
186
+ ROS_MASTER_URI=http://localhost:11311
187
+ process[pub_text-10]: started with pid [1991173]
188
+ process[print_text-11]: started with pid [1991174]
189
+ process[rosbag_record-12]: started with pid [1991198]
190
+ started bagging!
191
+ For topic gripper_width: timestamp difference is -107787871 for nearest: 1735963299661515212 - target: 1735963299769303083 at idx 130
192
+ For topic gripper_width: timestamp difference is -104833640 for nearest: 1735963310561514579 - target: 1735963310666348219 at idx 249
193
+ For topic gripper_width: timestamp difference is 100628261 for nearest: 1735963317528183822 - target: 1735963317427555561 at idx 249
194
+ For topic gripper_width: timestamp difference is 101715531 for nearest: 1735963318828184094 - target: 1735963318726468563 at idx 249
195
+ For topic gripper_width: timestamp difference is 137755032 for nearest: 1735963322228181000 - target: 1735963322090425968 at idx 249
196
+ [INFO] [1735963325.652343]: Storing episode...
197
+ [print_text-11] killing on exit
198
+ [rosbag_record-12] killing on exit
199
+ [pub_text-10] killing on exit
200
+ [INFO] [1735963326.405719]: Stored episode 4.
201
+ [INFO] [1735963326.405988]: Saving video...
202
+ [INFO] [1735963326.811771]: Video saved!
203
+ Starting episode 4
204
+ [INFO] [1735963326.864602]: resetting environment
205
+ [INFO] [1735963326.892542]: cleared current plan
206
+ [INFO] [1735963326.893237]: moving to home
207
+ [INFO] [1735963330.403923]: reached home
208
+ [INFO] [1735963330.406896]: reset action history
209
+ [INFO] [1735963333.151617]: environment reset
210
+ Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success
211
+ proceeding to start episode!Comuting lower confidence bound
212
+ Comuting upper confidence bound
213
+ Comuting lower confidence bound
214
+ Comuting upper confidence bound
215
+ Comuting lower confidence bound
216
+ Comuting upper confidence bound
217
+ Comuting lower confidence bound
218
+ Comuting upper confidence bound
219
+ [INFO] [1735963346.934791]: resetting environment
220
+ [INFO] [1735963346.968691]: cleared current plan
221
+ [INFO] [1735963346.971782]: moving to home
222
+ [INFO] [1735963347.975488]: reached home
223
+ [INFO] [1735963347.980129]: reset action history
224
+ [INFO] [1735963350.763784]: environment reset
225
+ bag_path_name:=/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1926_1/p96n5ha2/episode_rosbags/episode_4_2025-01-03-23-02-30.bag
226
+ ... logging to /home/leonmkim/.ros/log/a8a09c64-c64e-11ef-96d2-5defea869005/roslaunch-leonmkim-ROG-Strix-G15CS-G15CS-1990442.log
227
+ started roslaunch server http://158.130.50.37:39353/
228
+ SUMMARY
229
+ ========
230
+ PARAMETERS
231
+ * /rosdistro: noetic
232
+ * /rosversion: 1.16.0
233
+ NODES
234
+ /
235
+ print_text (rostopic/rostopic)
236
+ pub_text (rostopic/rostopic)
237
+ rosbag_record (rosbag/record)
238
+ ROS_MASTER_URI=http://localhost:11311
239
+ process[pub_text-13]: started with pid [1991317]
240
+ process[print_text-14]: started with pid [1991318]
241
+ process[rosbag_record-15]: started with pid [1991342]
242
+ started bagging!
243
+ For topic gripper_width: timestamp difference is 107776627 for nearest: 1735963360128183350 - target: 1735963360020406723 at idx 138
244
+ For topic gripper_width: timestamp difference is 103417518 for nearest: 1735963362228275182 - target: 1735963362124857664 at idx 167
245
+ For topic gripper_width: timestamp difference is 104150521 for nearest: 1735963363261513459 - target: 1735963363157362938 at idx 180
246
+ For topic gripper_width: timestamp difference is -158482839 for nearest: 1735963367961514662 - target: 1735963368119997501 at idx 245
247
+ For topic gripper_width: timestamp difference is 115162601 for nearest: 1735963376828182210 - target: 1735963376713019609 at idx 249
248
+ [INFO] [1735963385.628906]: Storing episode...
249
+ [rosbag_record-15] killing on exit[print_text-14] killing on exit
250
+ [pub_text-13] killing on exit
251
+ [INFO] [1735963386.466889]: Stored episode 5.
252
+ [INFO] [1735963386.469401]: Saving video...
253
+ [INFO] [1735963386.961037]: Video saved!
254
+ [INFO] [1735963387.034631]: resetting environment
255
+ [INFO] [1735963387.062143]: cleared current plan
256
+ [INFO] [1735963387.067738]: moving to home
257
+ [WARN] [1735963386.973687]: Plan exhausted
258
+ [WARN] [1735963387.013977]: Plan exhausted
259
+ [WARN] [1735963387.055570]: Plan exhausted
260
+ [INFO] [1735963390.676856]: reached home
261
+ [INFO] [1735963390.679460]: reset action history
262
+ [INFO] [1735963393.526067]: environment reset
263
+ Evaluation finished. To wrap up, rate prev episode, press 0 for failure and 1 for success
264
+ proceeding to start episode!Comuting lower confidence bound
265
+ Comuting upper confidence bound
266
+ Comuting lower confidence bound
267
+ Comuting upper confidence bound
268
+ Comuting lower confidence bound
269
+ Comuting upper confidence bound
270
+ Comuting lower confidence bound
271
+ Comuting upper confidence bound
272
+ Comuting lower confidence bound
273
+ Comuting upper confidence bound
274
+ Comuting lower confidence bound
275
+ Comuting upper confidence bound
276
+ Comuting lower confidence bound
277
+ Comuting upper confidence bound
278
+ Comuting lower confidence bound
279
+ Comuting upper confidence bound
280
+ proceeding to start episode!
p96n5ha2/wandb/run-20250103_225830-p96n5ha2/files/requirements.txt ADDED
@@ -0,0 +1,340 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Cython==3.0.10
2
+ Farama-Notifications==0.0.4
3
+ GitPython==3.1.43
4
+ Jinja2==3.1.4
5
+ Markdown==3.6
6
+ MarkupSafe==2.1.5
7
+ POT==0.7.0
8
+ PyOpenGL==3.1.7
9
+ PySocks==1.7.1
10
+ PyYAML==6.0.1
11
+ Pygments==2.18.0
12
+ Rtree==1.3.0
13
+ Werkzeug==3.0.3
14
+ absl-py==2.1.0
15
+ accelerate==0.33.0
16
+ actionlib-msgs==1.13.0.post3
17
+ actionlib==1.12.0
18
+ actionlib==1.14.0
19
+ aiohttp==3.9.5
20
+ aiosignal==1.3.1
21
+ angles==1.9.13
22
+ antlr4-python3-runtime==4.9.3
23
+ anyio==4.4.0
24
+ asciitree==0.3.3
25
+ async-timeout==4.0.3
26
+ attrs==23.2.0
27
+ autoprop==4.1.0
28
+ beartype==0.18.5
29
+ beautifulsoup4==4.12.3
30
+ binomial_cis==0.0.11
31
+ bondpy==1.8.6
32
+ byol-pytorch==0.8.0
33
+ cachetools==5.4.0
34
+ camera-calibration-parsers==1.12.0
35
+ camera-calibration==1.17.0
36
+ cascadio==0.0.13
37
+ catkin-pkg==1.0.0
38
+ catkin==0.7.18
39
+ catkin==0.8.10
40
+ certifi==2024.7.4
41
+ cffi==1.16.0
42
+ chardet==5.2.0
43
+ charset-normalizer==3.3.2
44
+ click==8.1.7
45
+ cloudpickle==3.0.0
46
+ cmake==3.30.1
47
+ colorlog==6.8.2
48
+ contourpy==1.2.1
49
+ controller-manager-msgs==0.20.0
50
+ controller-manager==0.20.0
51
+ coverage==7.6.0
52
+ coveralls==4.0.1
53
+ cv-bridge==1.16.2
54
+ cycler==0.12.1
55
+ datasets==2.20.0
56
+ decorator==4.4.2
57
+ deepdiff==7.0.1
58
+ defusedxml==0.7.1
59
+ diagnostic-analysis==1.11.0
60
+ diagnostic-common-diagnostics==1.11.0
61
+ diagnostic-updater==1.11.0
62
+ diffusers==0.27.2
63
+ dill==0.3.8
64
+ distro==1.9.0
65
+ dm-control==1.0.8
66
+ dm-env==1.6
67
+ dm-tree==0.1.8
68
+ docker-pycreds==0.4.0
69
+ docopt==0.6.2
70
+ docutils==0.21.2
71
+ dynamic-reconfigure==1.7.3
72
+ einops==0.8.0
73
+ embreex==2.17.7.post5
74
+ empy==3.3.4
75
+ etils==1.7.0
76
+ exceptiongroup==1.2.2
77
+ ezdxf==1.3.2
78
+ fasteners==0.19
79
+ filelock==3.15.4
80
+ fonttools==4.53.1
81
+ freetype-py==2.4.0
82
+ frozenlist==1.4.1
83
+ fsspec==2024.5.0
84
+ gazebo_plugins==2.9.2
85
+ gazebo_ros==2.9.2
86
+ gdown==5.2.0
87
+ gencpp==0.7.0
88
+ geneus==3.0.0
89
+ genlisp==0.4.18
90
+ genmsg==0.5.12
91
+ genmsg==0.6.0
92
+ gennodejs==2.0.2
93
+ genpy==0.6.14
94
+ genpy==0.6.15
95
+ geometry-msgs==1.13.0.post2
96
+ gitdb==4.0.11
97
+ glfw==2.7.0
98
+ glooey==0.3.6
99
+ gmsh==4.12.2
100
+ gnupg==2.3.1
101
+ google-auth-oauthlib==1.0.0
102
+ google-auth==2.32.0
103
+ grpcio==1.65.1
104
+ gym-envs==0.0.1
105
+ gym-notices==0.0.8
106
+ gym==0.22.0
107
+ gymnasium==0.29.1
108
+ h11==0.14.0
109
+ h5py==3.11.0
110
+ hf_transfer==0.1.8
111
+ httpcore==1.0.5
112
+ httpx==0.27.0
113
+ huggingface-hub==0.23.5
114
+ hydra-core==1.3.2
115
+ hydra-submitit-launcher==1.2.0
116
+ idna==3.7
117
+ image-geometry==1.16.2
118
+ imageio-ffmpeg==0.5.1
119
+ imageio==2.34.2
120
+ importlib_metadata==8.2.0
121
+ importlib_resources==6.4.0
122
+ iniconfig==2.0.0
123
+ interactive-markers==1.12.0
124
+ joint-state-publisher-gui==1.15.1
125
+ joint-state-publisher==1.15.1
126
+ jsonschema-specifications==2023.12.1
127
+ jsonschema==4.23.0
128
+ kiwisolver==1.4.5
129
+ kornia==0.7.3
130
+ kornia_rs==0.1.5
131
+ labmaze==1.0.6
132
+ laser_geometry==1.6.7
133
+ lazy_loader==0.4
134
+ lerobot==0.1.0
135
+ lightning-utilities==0.11.6
136
+ llvmlite==0.43.0
137
+ lxml==5.2.2
138
+ manifold3d==2.5.1
139
+ mapbox-earcut==1.0.1
140
+ markdown-it-py==3.0.0
141
+ matplotlib==3.9.1
142
+ mdurl==0.1.2
143
+ meshio==5.3.5
144
+ message-filters==1.16.0
145
+ more-itertools==10.3.0
146
+ moviepy==1.0.3
147
+ mpmath==1.3.0
148
+ mujoco==3.2.0
149
+ multidict==6.0.5
150
+ multiprocess==0.70.16
151
+ natsort==8.4.0
152
+ netifaces==0.11.0
153
+ networkx==3.3
154
+ nodeenv==1.9.1
155
+ numba==0.60.0
156
+ numcodecs==0.13.0
157
+ numpy==1.26.4
158
+ nvidia-cublas-cu12==12.1.3.1
159
+ nvidia-cuda-cupti-cu12==12.1.105
160
+ nvidia-cuda-nvrtc-cu12==12.1.105
161
+ nvidia-cuda-runtime-cu12==12.1.105
162
+ nvidia-cudnn-cu12==9.1.0.70
163
+ nvidia-cufft-cu12==11.0.2.54
164
+ nvidia-curand-cu12==10.3.2.106
165
+ nvidia-cusolver-cu12==11.4.5.107
166
+ nvidia-cusparse-cu12==12.1.0.106
167
+ nvidia-nccl-cu12==2.20.5
168
+ nvidia-nvjitlink-cu12==12.5.82
169
+ nvidia-nvtx-cu12==12.1.105
170
+ oauthlib==3.2.2
171
+ omegaconf==2.3.0
172
+ openctm==0.0.5
173
+ opencv-python==4.10.0.84
174
+ ordered-set==4.1.0
175
+ packaging==24.1
176
+ pandas==2.2.2
177
+ pillow==10.4.0
178
+ pip==24.3.1
179
+ platformdirs==4.2.2
180
+ pluggy==1.5.0
181
+ proglog==0.1.10
182
+ protobuf==5.27.2
183
+ psutil==6.0.0
184
+ pyarrow-hotfix==0.6
185
+ pyarrow==17.0.0
186
+ pyasn1==0.6.0
187
+ pyasn1_modules==0.4.0
188
+ pyav==12.3.0
189
+ pycollada==0.8
190
+ pycparser==2.22
191
+ pycryptodomex==3.21.0
192
+ pyglet==1.5.29
193
+ pyinstrument==4.6.2
194
+ pymunk==6.8.1
195
+ pyparsing==2.4.7
196
+ pyrealsense2==2.54.2.5684
197
+ pyribbit==0.1.46
198
+ pyright==1.1.373
199
+ pytest-beartype==0.0.2
200
+ pytest-cov==5.0.0
201
+ pytest==8.3.1
202
+ python-dateutil==2.9.0.post0
203
+ python-fcl==0.7.0.6
204
+ python-qt-binding==0.4.4
205
+ pytorch-lightning==2.4.0
206
+ pytz==2024.1
207
+ qt-dotgraph==0.4.2
208
+ qt-gui-cpp==0.4.2
209
+ qt-gui-py-common==0.4.2
210
+ qt-gui==0.4.2
211
+ referencing==0.35.1
212
+ regex==2024.5.15
213
+ requests-oauthlib==2.0.0
214
+ requests==2.32.3
215
+ rerun-sdk==0.17.0
216
+ resource_retriever==1.12.7
217
+ rich==13.7.1
218
+ ros-numpy==0.0.5
219
+ rosbag==1.16.0
220
+ rosboost-cfg==1.15.8
221
+ rosclean==1.15.8
222
+ roscpp==1.15.11
223
+ roscreate==1.15.8
224
+ rosgraph-msgs==1.11.3.post2
225
+ rosgraph==1.15.11
226
+ rosgraph==1.16.0
227
+ roslaunch==1.16.0
228
+ roslib==1.14.7.post0
229
+ roslib==1.15.8
230
+ roslint==0.12.0
231
+ roslz4==1.16.0
232
+ rosmake==1.15.8
233
+ rosmaster==1.16.0
234
+ rosmsg==1.16.0
235
+ rosnode==1.16.0
236
+ rosparam==1.16.0
237
+ rospkg==1.5.1
238
+ rospy==1.15.11
239
+ rospy==1.16.0
240
+ rosservice==1.16.0
241
+ rostest==1.16.0
242
+ rostopic==1.16.0
243
+ rosunit==1.15.8
244
+ roswtf==1.16.0
245
+ rpds-py==0.19.1
246
+ rqt-console==0.4.12
247
+ rqt-image-view==0.4.17
248
+ rqt-logger-level==0.4.12
249
+ rqt-moveit==0.5.11
250
+ rqt-reconfigure==0.5.5
251
+ rqt-robot-dashboard==0.5.8
252
+ rqt-robot-monitor==0.5.15
253
+ rqt-runtime-monitor==0.5.10
254
+ rqt-rviz==0.7.0
255
+ rqt-tf-tree==0.6.4
256
+ rqt_action==0.4.9
257
+ rqt_bag==0.5.1
258
+ rqt_bag_plugins==0.5.1
259
+ rqt_dep==0.4.12
260
+ rqt_graph==0.4.14
261
+ rqt_gui==0.5.3
262
+ rqt_gui_py==0.5.3
263
+ rqt_launch==0.4.9
264
+ rqt_msg==0.4.10
265
+ rqt_nav_view==0.5.7
266
+ rqt_plot==0.4.13
267
+ rqt_pose_view==0.5.11
268
+ rqt_publisher==0.4.10
269
+ rqt_py_common==0.5.3
270
+ rqt_py_console==0.4.10
271
+ rqt_robot_steering==0.5.12
272
+ rqt_service_caller==0.4.10
273
+ rqt_shell==0.4.11
274
+ rqt_srv==0.4.9
275
+ rqt_top==0.4.10
276
+ rqt_topic==0.4.13
277
+ rqt_web==0.4.10
278
+ rsa==4.9
279
+ ruff==0.5.4
280
+ rviz==1.14.25
281
+ safetensors==0.4.3
282
+ scikit-image==0.24.0
283
+ scikit-video==1.1.11
284
+ scipy==1.14.0
285
+ seaborn==0.13.2
286
+ sensor-msgs==1.13.1
287
+ sentry-sdk==2.11.0
288
+ setproctitle==1.3.3
289
+ setuptools==65.5.0
290
+ shapely==2.0.5
291
+ signature_dispatch==1.0.1
292
+ six==1.16.0
293
+ smach-ros==2.5.2
294
+ smach==2.5.2
295
+ smclib==1.8.6
296
+ smmap==5.0.1
297
+ sniffio==1.3.1
298
+ soupsieve==2.5
299
+ std-msgs==0.5.13.post0
300
+ submitit==1.5.1
301
+ svg.path==6.3
302
+ sympy==1.13.1
303
+ tensorboard-data-server==0.7.2
304
+ tensorboard==2.14.0
305
+ termcolor==2.4.0
306
+ tf-conversions==1.13.2
307
+ tf2-geometry-msgs==0.7.7
308
+ tf2-kdl==0.7.7
309
+ tf2-msgs==0.7.2.post3
310
+ tf2-py==0.7.7
311
+ tf2-ros==0.6.5
312
+ tf2-ros==0.7.7
313
+ tf2_py==0.6.5.post1
314
+ tf==1.13.2
315
+ tifffile==2024.7.24
316
+ tomli==2.0.1
317
+ topic-tools==1.16.0
318
+ torch==2.4.0
319
+ torchaug==0.5.2
320
+ torchmetrics==1.4.0.post0
321
+ torchvision==0.19.0
322
+ tqdm==4.66.4
323
+ trimesh==4.4.3
324
+ triton==3.0.0
325
+ typeguard==3.0.2
326
+ typing_extensions==4.12.2
327
+ tzdata==2024.1
328
+ urchin==0.0.27
329
+ urllib3==2.2.2
330
+ vecrec==0.3.1
331
+ vhacdx==0.0.8.post1
332
+ wandb==0.17.5
333
+ wheel==0.43.0
334
+ xacro==1.14.18
335
+ xatlas==0.0.9
336
+ xxhash==3.4.1
337
+ yarl==1.9.4
338
+ zarr==2.18.2
339
+ zipp==3.19.2
340
+ zstandard==0.23.0