serialexperimentsleon commited on
Commit
2844da9
·
verified ·
1 Parent(s): 0c191d8

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 +15 -0
  2. 205131/.hydra/config.yaml +350 -0
  3. 205131/.hydra/hydra.yaml +169 -0
  4. 205131/.hydra/overrides.yaml +3 -0
  5. 205131/eval_policy.log +15 -0
  6. 205132/.hydra/config.yaml +350 -0
  7. 205132/.hydra/hydra.yaml +169 -0
  8. 205132/.hydra/overrides.yaml +3 -0
  9. 205132/eval_robot.log +13 -0
  10. 205317/.hydra/config.yaml +350 -0
  11. 205317/.hydra/hydra.yaml +169 -0
  12. 205317/.hydra/overrides.yaml +3 -0
  13. 205317/episode_rosbags/aligned_depth_to_color_K.npy +3 -0
  14. 205317/episode_rosbags/cam_tf_world.npy +3 -0
  15. 205317/episode_rosbags/color_K.npy +3 -0
  16. 205317/episode_rosbags/depth_K.npy +3 -0
  17. 205317/episode_rosbags/episode_0_2024-12-29-20-54-40.bag +3 -0
  18. 205317/episode_rosbags/episode_1_2024-12-29-20-55-29.bag +3 -0
  19. 205317/episode_rosbags/episode_2_2024-12-29-20-56-10.bag +3 -0
  20. 205317/episode_rosbags/episode_3_2024-12-29-20-56-49.bag +3 -0
  21. 205317/episode_rosbags/episode_4_2024-12-29-20-57-31.bag +3 -0
  22. 205317/eval_robot.log +12 -0
  23. 205317/eval_video/0_eval.mp4 +3 -0
  24. 205317/eval_video/1_eval.mp4 +3 -0
  25. 205317/eval_video/2_eval.mp4 +3 -0
  26. 205317/eval_video/3_eval.mp4 +3 -0
  27. 205317/eval_video/4_eval.mp4 +3 -0
  28. 205317/tb/events.out.tfevents.1735523604.leonmkim-ROG-Strix-G15CS-G15CS.1355277.0 +3 -0
  29. 205317/wandb/debug-internal.log +0 -0
  30. 205317/wandb/debug.log +31 -0
  31. 205317/wandb/run-20241229_205323-2n31umej/files/code/FISH/eval_robot.py +512 -0
  32. 205317/wandb/run-20241229_205323-2n31umej/files/config.yaml +895 -0
  33. 205317/wandb/run-20241229_205323-2n31umej/files/diff.patch +192 -0
  34. 205317/wandb/run-20241229_205323-2n31umej/files/media/videos/eval/0_eval_0_2dd247d1c4c04fa7cea7.mp4 +3 -0
  35. 205317/wandb/run-20241229_205323-2n31umej/files/media/videos/eval/1_eval_1_f35843717fd499551c4b.mp4 +3 -0
  36. 205317/wandb/run-20241229_205323-2n31umej/files/media/videos/eval/2_eval_2_c03a74d7b4bcab766fc2.mp4 +3 -0
  37. 205317/wandb/run-20241229_205323-2n31umej/files/media/videos/eval/3_eval_3_94417ff346f07f5fa23e.mp4 +3 -0
  38. 205317/wandb/run-20241229_205323-2n31umej/files/media/videos/eval/4_eval_4_20ea9dbf78cd7cd19362.mp4 +3 -0
  39. 205317/wandb/run-20241229_205323-2n31umej/files/output.log +225 -0
  40. 205317/wandb/run-20241229_205323-2n31umej/files/requirements.txt +339 -0
  41. 205317/wandb/run-20241229_205323-2n31umej/files/wandb-metadata.json +92 -0
  42. 205317/wandb/run-20241229_205323-2n31umej/files/wandb-summary.json +1 -0
  43. 205317/wandb/run-20241229_205323-2n31umej/logs/debug-internal.log +0 -0
  44. 205317/wandb/run-20241229_205323-2n31umej/logs/debug.log +31 -0
  45. 205317/wandb/run-20241229_205323-2n31umej/run-2n31umej.wandb +0 -0
  46. config.yaml +548 -0
  47. snapshot_10500.pt +3 -0
  48. snapshot_12000.pt +3 -0
  49. snapshot_12999.pt +3 -0
  50. snapshot_13500.pt +3 -0
.gitattributes CHANGED
@@ -33,3 +33,18 @@ 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
+ 205317/wandb/run-20241229_205323-2n31umej/files/media/videos/eval/1_eval_1_f35843717fd499551c4b.mp4 filter=lfs diff=lfs merge=lfs -text
37
+ 205317/wandb/run-20241229_205323-2n31umej/files/media/videos/eval/2_eval_2_c03a74d7b4bcab766fc2.mp4 filter=lfs diff=lfs merge=lfs -text
38
+ 205317/wandb/run-20241229_205323-2n31umej/files/media/videos/eval/0_eval_0_2dd247d1c4c04fa7cea7.mp4 filter=lfs diff=lfs merge=lfs -text
39
+ 205317/wandb/run-20241229_205323-2n31umej/files/media/videos/eval/3_eval_3_94417ff346f07f5fa23e.mp4 filter=lfs diff=lfs merge=lfs -text
40
+ 205317/wandb/run-20241229_205323-2n31umej/files/media/videos/eval/4_eval_4_20ea9dbf78cd7cd19362.mp4 filter=lfs diff=lfs merge=lfs -text
41
+ 205317/eval_video/3_eval.mp4 filter=lfs diff=lfs merge=lfs -text
42
+ 205317/eval_video/1_eval.mp4 filter=lfs diff=lfs merge=lfs -text
43
+ 205317/eval_video/4_eval.mp4 filter=lfs diff=lfs merge=lfs -text
44
+ 205317/eval_video/2_eval.mp4 filter=lfs diff=lfs merge=lfs -text
45
+ 205317/eval_video/0_eval.mp4 filter=lfs diff=lfs merge=lfs -text
46
+ 205317/episode_rosbags/episode_4_2024-12-29-20-57-31.bag filter=lfs diff=lfs merge=lfs -text
47
+ 205317/episode_rosbags/episode_1_2024-12-29-20-55-29.bag filter=lfs diff=lfs merge=lfs -text
48
+ 205317/episode_rosbags/episode_2_2024-12-29-20-56-10.bag filter=lfs diff=lfs merge=lfs -text
49
+ 205317/episode_rosbags/episode_3_2024-12-29-20-56-49.bag filter=lfs diff=lfs merge=lfs -text
50
+ 205317/episode_rosbags/episode_0_2024-12-29-20-54-40.bag filter=lfs diff=lfs merge=lfs -text
205131/.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: '1045_0'
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}/${now:%H%M%S}
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
205131/.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/1045_0/205131
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
205131/.hydra/overrides.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ - agent=diffusion
2
+ - suite=frankagym
3
+ - suite/frankagym_task@_global_=insertion
205131/eval_policy.log ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [2024-12-29 20:51:31,071][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
+ [2024-12-29 20:51:31,075][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
+ [2024-12-29 20:51:34,320][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
+
205132/.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: '1045_0'
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}/${now:%H%M%S}
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
205132/.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/1045_0/205132
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
205132/.hydra/overrides.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ - agent=diffusion
2
+ - suite=frankagym
3
+ - suite/frankagym_task@_global_=insertion
205132/eval_robot.log ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [2024-12-29 20:51:32,787][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_robot.py:503: 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
+ [2024-12-29 20:51:32,790][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_robot.py:439: 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
+ [2024-12-29 20:51:33,311][rospy.core][INFO] - signal_shutdown [atexit]
205317/.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: '1045_0'
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}/${now:%H%M%S}
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
205317/.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/1045_0/205317
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
205317/.hydra/overrides.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ - agent=diffusion
2
+ - suite=frankagym
3
+ - suite/frankagym_task@_global_=insertion
205317/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
205317/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
205317/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
205317/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
205317/episode_rosbags/episode_0_2024-12-29-20-54-40.bag ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:263d6ba64875ad3e5c9380992b1ae9ac5466595aba489e10a184139ca4012da9
3
+ size 1329494909
205317/episode_rosbags/episode_1_2024-12-29-20-55-29.bag ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6a5a4219be5162013cee691ff311f9a727cad82b88d356453a7fc8c13f6ad650
3
+ size 1329599493
205317/episode_rosbags/episode_2_2024-12-29-20-56-10.bag ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:78194c48348d8759d08fca04bd5f3115792307c2b9618c258e792bad42c075f3
3
+ size 1333012907
205317/episode_rosbags/episode_3_2024-12-29-20-56-49.bag ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:078503c64c23429f55328a6c2c550475f7561dca7fcf620a4e33a7346816978e
3
+ size 1327707902
205317/episode_rosbags/episode_4_2024-12-29-20-57-31.bag ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:975a676b531d6e8139daea375e7609373d248fda8540766565f7604c286a86e3
3
+ size 1333042300
205317/eval_robot.log ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [2024-12-29 20:53:17,250][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_robot.py:503: 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
+ [2024-12-29 20:53:17,254][py.warnings][WARNING] - /home/leonmkim/fish_leon/FISH/eval_robot.py:439: 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
+
205317/eval_video/0_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2dd247d1c4c04fa7cea7a03c76f9bcf0fac708360da8e1551f468b1b47fc66b9
3
+ size 1171585
205317/eval_video/1_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f35843717fd499551c4b0926cca736afc0945a08b7388201dffb14db7ec3fefa
3
+ size 1166652
205317/eval_video/2_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c03a74d7b4bcab766fc29ee131b9e9ac693b435c897bde76d32747b19fb58257
3
+ size 1184865
205317/eval_video/3_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:94417ff346f07f5fa23e9c53f6b0137c96c29dcb3d88023f1ed9c85959c133e3
3
+ size 1210929
205317/eval_video/4_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:20ea9dbf78cd7cd19362e85b72b43f16e349294c086d44f5e3adc1fd73292d66
3
+ size 1225749
205317/tb/events.out.tfevents.1735523604.leonmkim-ROG-Strix-G15CS-G15CS.1355277.0 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f35fcfee4a918882d02da32f4394ab050801d8e7f028ae8272dd24cece614507
3
+ size 1103
205317/wandb/debug-internal.log ADDED
The diff for this file is too large to render. See raw diff
 
205317/wandb/debug.log ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_setup.py:_flush():76] Current SDK version is 0.17.5
2
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_setup.py:_flush():76] Configure stats pid to 1355277
3
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_setup.py:_flush():76] Loading settings from /home/leonmkim/.config/wandb/settings
4
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_setup.py:_flush():76] Loading settings from /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317/wandb/settings
5
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_setup.py:_flush():76] Loading settings from environment variables: {}
6
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_setup.py:_flush():76] Applying setup settings: {'_disable_service': False}
7
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [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
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_setup.py:_flush():76] Applying login settings: {}
9
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_init.py:_log_setup():529] Logging user logs to /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317/wandb/run-20241229_205323-2n31umej/logs/debug.log
10
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_init.py:_log_setup():530] Logging internal logs to /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317/wandb/run-20241229_205323-2n31umej/logs/debug-internal.log
11
+ 2024-12-29 20:53:23,744 INFO MainThread:1355277 [wandb_init.py:init():569] calling init triggers
12
+ 2024-12-29 20:53:23,744 INFO MainThread:1355277 [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': 0, 'dataset_shuffle_seed': 5, 'device': 'cuda', 'save_video': True, 'save_train_video': True, 'use_tb': True, 'use_wandb': True, 'wandb_run_id': '1045_0', 'wandb_notes': '1045_0_', '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': False, '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': False, 'use_sdf_maps': False, 'use_normals_maps': False, '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': ['greece_twodim_nominal', 'greece_twodim_recovery'], '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': 0, '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/1045_0', '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': 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}, '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': False, 'use_sdf_maps': False, 'use_normals_maps': False, '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': 0, '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': 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}, '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': False, 'use_sdf_maps': False, 'use_normals_maps': False, '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_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/1045_0', 'residual_weight': '/home/leonmkim/fish_leon/FISH/weights/frankagym_pixels/FrankaInsertion-v1/weight.pt', 'final_experiment_dir': './exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317'}
14
+ 2024-12-29 20:53:23,744 INFO MainThread:1355277 [wandb_init.py:init():619] starting backend
15
+ 2024-12-29 20:53:23,744 INFO MainThread:1355277 [wandb_init.py:init():623] setting up manager
16
+ 2024-12-29 20:53:23,748 INFO MainThread:1355277 [backend.py:_multiprocessing_setup():105] multiprocessing start_methods=fork,spawn,forkserver, using: spawn
17
+ 2024-12-29 20:53:23,750 INFO MainThread:1355277 [wandb_init.py:init():631] backend started and connected
18
+ 2024-12-29 20:53:23,761 INFO MainThread:1355277 [wandb_init.py:init():720] updated telemetry
19
+ 2024-12-29 20:53:23,767 INFO MainThread:1355277 [wandb_init.py:init():753] communicating run to backend with 90.0 second timeout
20
+ 2024-12-29 20:53:24,005 INFO MainThread:1355277 [wandb_run.py:_on_init():2435] communicating current version
21
+ 2024-12-29 20:53:24,117 INFO MainThread:1355277 [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
+ 2024-12-29 20:53:24,117 INFO MainThread:1355277 [wandb_init.py:init():804] starting run threads in backend
24
+ 2024-12-29 20:53:24,460 INFO MainThread:1355277 [wandb_run.py:_console_start():2413] atexit reg
25
+ 2024-12-29 20:53:24,460 INFO MainThread:1355277 [wandb_run.py:_redirect():2255] redirect: wrap_raw
26
+ 2024-12-29 20:53:24,460 INFO MainThread:1355277 [wandb_run.py:_redirect():2320] Wrapping output streams.
27
+ 2024-12-29 20:53:24,460 INFO MainThread:1355277 [wandb_run.py:_redirect():2345] Redirects installed.
28
+ 2024-12-29 20:53:24,461 INFO MainThread:1355277 [wandb_init.py:init():847] run started, returning control to user process
29
+ 2024-12-29 20:53:24,462 INFO MainThread:1355277 [wandb_run.py:_tensorboard_callback():1544] tensorboard callback: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317/tb, True
30
+ 2024-12-29 20:53:30,487 INFO MainThread:1355277 [wandb_run.py:_config_callback():1382] config_cb None None {'grasped_obj_name': 'greece', 'left_book_slot': 'twodim'}
31
+ 2024-12-29 20:58:20,684 WARNING MsgRouterThr:1355277 [router.py:message_loop():77] message_loop has been closed
205317/wandb/run-20241229_205323-2n31umej/files/code/FISH/eval_robot.py ADDED
@@ -0,0 +1,512 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ # get path of current file
39
+ current_path = os.path.dirname(os.path.realpath(__file__))
40
+ sys.path.append(os.path.join(current_path, os.pardir))
41
+ # 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
42
+
43
+ def make_agent(obs_spec, action_spec, cfg):
44
+ cfg.obs_shape = obs_spec['pixels'].shape
45
+ dataset_statistics = None # this will be loaded from the checkpoint
46
+ try:
47
+ cfg.action_shape = action_spec.shape
48
+ except:
49
+ pass
50
+ return hydra.utils.instantiate(cfg, dataset_statistics)
51
+
52
+ class Workspace:
53
+ def __init__(self, cfg):
54
+ self.work_dir = Path.cwd()
55
+ print(f'workspace: {self.work_dir}')
56
+
57
+ signal.signal(signal.SIGINT, self.signal_handler)
58
+
59
+ self.cfg = cfg
60
+ self.loading_uncompiled_checkpoint_with_compile = False
61
+ self.loading_compiled_checkpoint_with_no_compile = False
62
+
63
+ snapshot_path = Path(self.cfg.checkpoint_weight_dir) / f'snapshot_{self.cfg.checkpoint_epoch}.pt'
64
+ self.load_checkpoint_conf(snapshot_path=snapshot_path)
65
+
66
+ # load config for action trajectories
67
+ utils.set_seed_everywhere(self.cfg.seed)
68
+ self.device = torch.device(self.cfg.device)
69
+ self.setup()
70
+
71
+ # self.agent = make_agent(self.eval_env.observation_spec(),
72
+ # self.eval_env.action_spec(), self.cfg.agent)
73
+ self.timer = utils.Timer()
74
+ # self._global_step = 0
75
+ self._global_episode = 0
76
+ self._global_epoch = 0
77
+ self.num_episode_successes = 0
78
+
79
+ # Need to convert hydra config to primitive container for wandb https://docs.wandb.ai/guides/integrations/hydra
80
+ with open_dict(self.cfg):
81
+ self.cfg.feature_type = get_feature_dirname_from_configs(
82
+ hydra.utils.instantiate(self.cfg.agent.config.observation_cfg),
83
+ self.cfg.agent.config.policy_cfg.input_shapes,
84
+ 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,
85
+ )
86
+
87
+ wandb_config = OmegaConf.to_container(
88
+ self.cfg, resolve=True, throw_on_missing=True
89
+ )
90
+ # must be called before any tf summary writer is created
91
+ if self.cfg.use_wandb:
92
+ wandb.init(project='extrinsic_contact_downstream', entity='serialexperimentsleon', job_type='eval', sync_tensorboard=self.cfg.use_tb, config=wandb_config)
93
+
94
+ self.logger = Logger(self.work_dir, use_tb=self.cfg.use_tb, use_wandb=self.cfg.use_wandb)
95
+
96
+ # if not self.loading_uncompiled_checkpoint_with_compile and self.cfg.agent.config.compile:
97
+ # self.agent.compile_modules()
98
+
99
+ # self.load_checkpoint(snapshot_path=snapshot_path)
100
+
101
+ # if self.loading_uncompiled_checkpoint_with_compile: # need to call compile after loading the checkpoint
102
+ # self.agent.compile_modules()
103
+
104
+ print(f"loaded agent with feature_type: {self.cfg.feature_type}")
105
+
106
+ def check_for_key_press(self):
107
+ while self.continue_keypress_thread:
108
+ inp = input("Press 'r' to restart current episode, 'n' to stop current episode and skip to next, 'q' to break entire eval\n")
109
+ if inp == 'n':
110
+ self.preempt_episode = True
111
+ print("preempting episode")
112
+ elif inp in ['', '0', '1']: # enter key
113
+ if inp in ['0', '1']:
114
+ self.num_episode_successes += int(inp)
115
+ self.proceed_after_env_reset_event.set()
116
+ print("proceeding to start episode!")
117
+ elif inp == 'q':
118
+ self.proceed_after_env_reset_event.set()
119
+ self.preempt_episode = True
120
+ self.exit_eval = True
121
+ self.continue_keypress_thread = False # will stop the keypress thread
122
+ print("quitting eval")
123
+ break
124
+ elif inp == 'r':
125
+ print('restarting episode')
126
+ self.preempt_episode = True
127
+ self.restart_episode = True
128
+ else:
129
+ print("Invalid key press, try again")
130
+
131
+ # self.keypress_input_thread.join() # wait for the keypress thread to finish
132
+
133
+ def signal_handler(self, signal, frame):
134
+ print("\nprogram exiting gracefully")
135
+ self.proceed_after_env_reset_event.set()
136
+ self.preempt_episode = True
137
+ self.exit_eval = True
138
+ self.continue_keypress_thread = False # will stop the keypress thread
139
+ self.keypress_input_thread.join() # wait for the keypress thread to finish
140
+ video_filepath = self.video_recorder.save()
141
+ # get the video file and convert to video tensor to log
142
+ self.logger.log_video('eval/video', video_filepath, self.global_step)
143
+ sys.exit(0)
144
+
145
+ def setup(self):
146
+ # create envs
147
+ self.eval_env = hydra.utils.call(self.cfg.suite.task_make_fn)
148
+ # expert_demo_config_path = os.path.join(os.path.dirname(self.cfg.expert_dataset), 'demo_config.yaml')
149
+ # self.expert_demo_config = yaml.load(open(expert_demo_config_path, 'r'), Loader=yaml.FullLoader)
150
+ # self.eval_env._env.action_trans_norm = expert_demo_config['max_translation_action_norm']
151
+ # self.eval_env._env.action_rot_norm = expert_demo_config['max_rotation_action_norm']
152
+ # self.eval_env._env.action_period = expert_demo_config['sample_period']
153
+ # print(f"setting max_translation_action_norm to {expert_demo_config['max_translation_action_norm']} and sample_period to {expert_demo_config['sample_period']}")
154
+ # print(f"setting max_rotation_action_norm to {expert_demo_config['max_rotation_action_norm']}")
155
+
156
+ # self.eval_env.set_demo_params(self.cfg.expert_dataset)
157
+
158
+ # Turn off random start
159
+ self.eval_env.random_start = False
160
+
161
+ # create replay buffer
162
+ # data_specs = [
163
+ # {
164
+ # 'observation': self.eval_env.observation_spec(),
165
+ # },
166
+ # # self.eval_env.observation_spec()['features'],
167
+ # self.eval_env.action_spec(),
168
+ # specs.Array(self.eval_env.action_spec().shape, self.eval_env.action_spec().dtype, 'vinn_action'),
169
+ # specs.Array((1, ), np.float32, 'reward'),
170
+ # specs.Array((1, ), np.float32, 'discount'),
171
+ # ]
172
+
173
+ # 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())
174
+ self.eval_replay_storage = RosbagEvalReplayBufferStorage(self.work_dir)
175
+
176
+ self.video_recorder = VideoRecorder(
177
+ self.work_dir if self.cfg.save_video else None,
178
+ ros_enabled=True,
179
+ fps=self.cfg.agent.config.policy_frequency,
180
+ )
181
+
182
+ print('workspace setup complete')
183
+
184
+ @property
185
+ def global_step(self):
186
+ # return self._global_step
187
+ return self.eval_env.get_global_step()
188
+
189
+ @property
190
+ def global_episode(self):
191
+ return self._global_episode
192
+
193
+ @property
194
+ def global_frame(self):
195
+ return self.global_step * self.cfg.action_repeat
196
+
197
+ @property
198
+ def global_epoch(self):
199
+ return self._global_epoch
200
+
201
+ def reset(self, eval_idx):
202
+ if not self.eval_env.enable_arm:
203
+ return np.array([0,0,0], dtype=np.float32)
204
+ self.eval_env.arm_refresh(reset=False)
205
+ # Set start position
206
+ try:
207
+ self.eval_env.set_position(self.start_pos[eval_idx])
208
+ except:
209
+ self.eval_env.arm.set_position(self.start_pos[eval_idx])
210
+ if self.eval_env.arm.keep_gripper_closed:
211
+ self.eval_env.arm.close_gripper_fully()
212
+ else:
213
+ self.eval_env.arm.open_gripper_fully()
214
+ time.sleep(0.1)
215
+ time_step = self.eval_env.step(np.zeros(self.eval_env.action_spec().shape[0], dtype=np.float32),
216
+ np.zeros(self.eval_env.action_spec().shape[0], dtype=np.float32))
217
+ return time_step
218
+
219
+ def eval(self):
220
+ # before evals start, prompt user for name of grasped object and the left book of the slot location
221
+ grasped_obj_name = input("Enter the name of the grasped object: ")
222
+ left_book_slot = input("Enter the left book slot location: ")
223
+ # update wandb config
224
+ if self.cfg.use_wandb:
225
+ wandb.config.update({'grasped_obj_name': grasped_obj_name, 'left_book_slot': left_book_slot})
226
+
227
+ self.preempt_episode = False
228
+ self.exit_eval = False
229
+ self.restart_episode = False
230
+
231
+ self.continue_keypress_thread = True
232
+ self.proceed_after_env_reset_event = threading.Event()
233
+ self.keypress_input_thread = threading.Thread(target=self.check_for_key_press)
234
+ self.keypress_input_thread.start()
235
+
236
+ # # Set model to eval mode
237
+ # self.agent.train(False)
238
+
239
+ eval_until_episode = utils.Until(self.cfg.num_eval)
240
+
241
+ self.use_action_history = False
242
+ # if "dp" in repr(self.agent) and "observation.action_history" in self.cfg.agent.config.policy_cfg.input_shapes:
243
+ if "observation.action_history" in self.cfg.agent.config.policy_cfg.input_shapes:
244
+ self.use_action_history = True
245
+
246
+ # self.eval_replay_storage._new_eval_step(0)
247
+
248
+ # if 'vinn' in repr(self.agent) or 'openloop' in repr(self.agent):
249
+ # with open(self.cfg.expert_dataset, 'rb') as f:
250
+ # if self.cfg.obs_type == 'pixels':
251
+ # self.expert_demo, _, self.expert_action, self.expert_reward = pickle.load(f)
252
+ # elif self.cfg.obs_type == 'features':
253
+ # _, self.expert_demo, self.expert_action, self.expert_reward = pickle.load(f)
254
+
255
+ # if self.cfg.action_trajectories:
256
+ # with open(self.cfg.expert_action_trajectories, 'rb') as f:
257
+ # self.expert_action = pickle.load(f)
258
+
259
+ # if isinstance(self.cfg.train_demo_idxs_list_or_num, int):
260
+ # if self.cfg.train_demo_idxs_list_or_num == -1:
261
+ # self.cfg.train_demo_idxs_list_or_num = len(self.expert_demo)
262
+ # train_demo_idxs_list_or_num = list(range(self.cfg.train_demo_idxs_list_or_num))
263
+
264
+ # self.expert_demo = self.expert_demo[train_demo_idxs_list_or_num]
265
+ # self.expert_action = self.expert_action[train_demo_idxs_list_or_num]
266
+ # self.expert_reward = self.expert_reward[train_demo_idxs_list_or_num]
267
+ # # if self.cfg.action_plans:
268
+ # # self.expert_action_plans = self.expert_action_plans[self.cfg.train_demo_idxs_list_or_num]
269
+ # # self.expert_demo = self.expert_demo[:self.cfg.num_demos]
270
+ # # self.expert_action = self.expert_action[:self.cfg.num_demos]
271
+ # # self.expert_reward = self.expert_reward[:self.cfg.num_demos]
272
+
273
+ # self.expert_demo = np.concatenate(self.expert_demo, axis=0)
274
+ # self.expert_rgb_obs = np.ascontiguousarray(np.transpose(self.expert_demo, (0,2,3,1))[:, :,:,:3].astype(np.uint8))
275
+ # self.expert_action = np.concatenate(self.expert_action, axis=0)
276
+
277
+ # self.agent.save_representations(self.expert_demo, self.expert_action, 128, config=self.expert_demo_config)
278
+
279
+ # Get start points
280
+ if self.cfg.random_start:
281
+ eval_starts = Path(self.cfg.eval_starts) / 'starts.pkl'
282
+ if eval_starts.exists():
283
+ with eval_starts.open('rb') as f:
284
+ self.start_pos = pickle.load(f)
285
+ else:
286
+ eval_starts = Path(self.cfg.eval_starts)
287
+ eval_starts.mkdir(parents=True, exist_ok=True)
288
+
289
+ # Generate start points
290
+ self.start_pos = []
291
+ try:
292
+ for _ in range(self.cfg.num_eval):
293
+ self.start_pos.append(self.eval_env.get_random_pos())
294
+ except:
295
+ for _ in range(self.cfg.num_eval):
296
+ self.start_pos.append(self.eval_env.arm.get_random_pos())
297
+
298
+ # Save start points for the task
299
+ eval_starts = eval_starts / 'starts.pkl'
300
+ with eval_starts.open('wb') as f:
301
+ pickle.dump(self.start_pos, f)
302
+
303
+ time_step = self.eval_env.reset()
304
+ # replay_thread = None
305
+ while eval_until_episode(self.global_episode) and not self.exit_eval:
306
+ # self.video_recorder.init(self.eval_env, video_filename=f'{self.global_episode}_eval.mp4')
307
+ print(f"Starting episode {self.global_episode}")
308
+ time_step = self.eval_env.reset() #Leon: need to call reset twice in case objects are trapped
309
+ self.video_recorder.init(self.eval_env, video_filename=f'{self.global_episode}_eval.mp4')
310
+ # x = input("Press Enter to continue... after reseting env")
311
+ print("Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success")
312
+ self.proceed_after_env_reset_event.clear() # clear the event flag
313
+ self.proceed_after_env_reset_event.wait() # blocking wait for the event flag to be set
314
+ if self.global_episode > 0:
315
+ self.logger.log_metrics({'num_success': self.num_episode_successes}, self.global_step, 'eval', episode=self.global_episode)
316
+ self.logger.log_metrics({'success_rate': self.num_episode_successes/self.global_episode}, self.global_step, 'eval', episode=self.global_episode)
317
+ time_step = self.eval_env.reset()
318
+ # debug_info_dict = self.eval_env.debug_info_dict
319
+ # if replay_thread is not None:
320
+ # # wait for the last replay thread to finish
321
+ # replay_thread.join()
322
+
323
+ # self.eval_replay_storage.add(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict)
324
+ # 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))
325
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step, debug_info_dict))
326
+
327
+ # replay_thread.start()
328
+ if self.cfg.random_start:
329
+ time_step = self.reset(self.global_episode)
330
+ time.sleep(2) #5)
331
+ # if 'vinn' in repr(self.agent):
332
+ # self.agent.reset()
333
+ # # self.agent.buffer.reset()
334
+ # # if self.cfg.open_loop:
335
+ # # self.agent.current_step = 0
336
+ # if 'openloop' in repr(self.agent):
337
+ # self.agent.curr_step = 0
338
+ # at start of each episode, provide zero action for policies that use action history
339
+ # shape should be (T_o, T_a, action_dim)
340
+
341
+ # while not time_step.last() and not self.preempt_episode:
342
+ self.video_recorder.ros_start_recording()
343
+ self.eval_replay_storage.start_episode()
344
+ self.eval_env.start_policy_timer()
345
+ while not self.eval_env.episode_done() and not self.preempt_episode:
346
+ # with torch.no_grad(), utils.eval_mode(self.agent):
347
+ # # if self.cfg.agent.provide_topk:
348
+ # # action, vinn_action, topk = self.agent.act(
349
+ # # time_step.observation['pixels'],
350
+ # # self.global_step,
351
+ # # eval_mode=True)
352
+ # # elif self.cfg.agent.provide_obs:
353
+ # # action, vinn_action, obs = self.agent.act(
354
+ # # time_step.observation['pixels'],
355
+ # # self.global_step,
356
+ # # eval_mode=True)
357
+ # # else:
358
+ # action, vinn_action = self.agent.act(
359
+ # time_step.observation,
360
+ # self.global_step,
361
+ # eval_mode=True,
362
+ # obs_timestamp=time_step.observation['timestamp'],
363
+ # obs_seq=time_step.observation['seq'],
364
+ # action_history=action_history,
365
+ # action_history_start_timestamp=action_history_start_timestamp,
366
+ # )
367
+ # DONT WAIT FOR POLICY TO GET AN ACTION
368
+ # we dont want to slow down grabbing obs and passing to sam/contact features
369
+
370
+ self.eval_env.run_policy_threads() # this just does a rospy sleep
371
+
372
+ # if self.use_action_history:
373
+ # action_history_start_timestamp = time_step.observation['timestamp']
374
+ # # action_history = action[:self.cfg.agent.config.policy_cfg.action_history_encoder_config.history_length, ...]
375
+ # # add n_obs_steps dimension to action_history, for now we assume n_obs_steps = 1
376
+ # # TODO: handle n_obs_steps > 1
377
+ # action_history = action[np.newaxis, ...]
378
+
379
+ # time_step = self.eval_env.step(action, vinn_action) # obs, reward after action has been taken
380
+ # debug_info_dict = self.eval_env.debug_info_dict
381
+
382
+ # time_step = self.eval_env.ros_step()
383
+
384
+ # replay_thread.join()
385
+
386
+ # time how long it takes to execute the step
387
+ # time_before_add = time.perf_counter()
388
+ # self.eval_replay_storage.add(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict)
389
+ # use thread to call the add function in a separate thread
390
+ # 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))
391
+
392
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step, debug_info_dict))
393
+ # replay_thread.start()
394
+
395
+ # print(f"Time to add to replay buffer: {time.perf_counter() - time_before_add}")
396
+
397
+ # self.video_recorder.record(self.eval_env)
398
+ # self._global_step += 1
399
+
400
+ self.eval_env.stop_policy_timer()
401
+
402
+ if self.restart_episode:
403
+ # means we should delete the current episode and start again
404
+ self.restart_episode = False
405
+ self.eval_replay_storage.reset_current_episode()
406
+ self.video_recorder.reset_current_episode()
407
+
408
+ else:
409
+ self.eval_replay_storage.store_current_episode()
410
+ video_filepath = self.video_recorder.save()
411
+ self.logger.log_video(f"eval/{video_filepath.name.rstrip('.mp4')}", video_filepath, self.global_step)
412
+ self._global_episode += 1
413
+
414
+ self.preempt_episode = False # reset preempt_episode flag
415
+
416
+ # self.video_recorder.save(f'{episode}_eval.mp4')
417
+ # get the video file and convert to video tensor to log
418
+
419
+ self.eval_env.reset()
420
+
421
+ print("Evaluation finished. To wrap up, rate prev episode, press 0 for failure and 1 for success")
422
+ self.proceed_after_env_reset_event.clear() # clear the event flag
423
+ self.proceed_after_env_reset_event.wait() # blocking wait for the event flag to be set
424
+ if self.global_episode > 0:
425
+ # self.logger.log_metrics({'num_success': self.num_episode_successes}, self.global_step, 'eval', episode=self.global_episode)
426
+ self.logger.log_metrics({'num_success': self.num_episode_successes}, self.global_step, 'eval', episode=self.global_episode)
427
+ self.logger.log_metrics({'success_rate': self.num_episode_successes/self.global_episode}, self.global_step, 'eval', episode=self.global_episode)
428
+
429
+ self.continue_keypress_thread = False # will stop the keypress thread
430
+ self.keypress_input_thread.join() # wait for the keypress thread to finish
431
+
432
+ def load_checkpoint_conf(self, snapshot_path):
433
+ config_path = snapshot_path.parent / 'config.yaml'
434
+ if not config_path.exists():
435
+ raise FileNotFoundError(f'No snapshot conf found at {config_path}')
436
+ else:
437
+ # load the omegaconf config
438
+ hydra.core.global_hydra.GlobalHydra.instance().clear()
439
+ hydra.initialize(
440
+ str(_relative_path_between(Path(config_path).absolute().parent, Path(__file__).absolute().parent)),
441
+ )
442
+ cfg = hydra.compose(Path(config_path).stem)
443
+ from deepdiff import DeepDiff
444
+ from omegaconf import open_dict
445
+ diff = DeepDiff(OmegaConf.to_container(cfg), OmegaConf.to_container(self.cfg)) # old, new
446
+ # import re
447
+ 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']"]]
448
+ if "values_changed" in diff:
449
+ # 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
450
+ # for keys above, overwrite the old config with the new config
451
+ for k, v in diff['values_changed'].items():
452
+ # replace any keys that are under "root['suite']"
453
+ if k in overwriteable_keys or k.startswith("root['suite']"):
454
+ print(f"Found changed key {k} with value {v}. Overwriting old checkpoint config")
455
+ if k == "root['agent']['config']['compile']":
456
+ if diff['values_changed'][k]['new_value']:
457
+ self.loading_uncompiled_checkpoint_with_compile = True
458
+ elif not diff['values_changed'][k]['new_value']:
459
+ # raise ValueError("Cannot load a compiled checkpoint without compile")
460
+ self.loading_compiled_checkpoint_with_no_compile = True
461
+ exec(f"{k.replace('root[', 'cfg[')} = {k.replace('root[', 'self.cfg[')}")
462
+ # for any new values, update the old checkpoint config
463
+ if "dictionary_item_added" in diff:
464
+ for new_key in diff['dictionary_item_added']: # this is a list
465
+ # if new_key == "root['suite']['task_make_fn']['observation_cfg']":
466
+ if new_key == "root['suite']['task_make_fn']['agent_policy_cfg']":
467
+ # pass the agents observation_cfg to the suite task_make_fn
468
+ with open_dict(cfg): # to allow addition of non-existing keys
469
+ # cfg.suite.task_make_fn.observation_cfg = cfg.agent.config.observation_cfg
470
+ cfg.suite.task_make_fn.agent_policy_cfg = cfg.agent.config
471
+ continue
472
+ elif "['agent']['config']['policy_cfg']['input_shapes']" in new_key:
473
+ # skip adding the new key if it is the input_shapes of the policy_cfg
474
+ continue
475
+ else:
476
+ print(f"Found new key {new_key} with value {eval(new_key.replace('root[', 'self.cfg['))}. Adding to checkpoint config")
477
+ # eval(new_key.replace('root', 'cfg')) = eval(new_key.replace('root', 'self.cfg'))
478
+ if new_key == "root['agent']['config']['compile']":
479
+ if self.cfg.agent.config.compile:
480
+ self.loading_uncompiled_checkpoint_with_compile = True
481
+
482
+ with open_dict(cfg):
483
+ exec(f"{new_key.replace('root[', 'cfg[')}={new_key.replace('root[', 'self.cfg[')}")
484
+ self.cfg = cfg
485
+
486
+ def load_checkpoint(self, snapshot_path, bc=False):
487
+ print(f'resuming {repr(self.agent)}: {snapshot_path}')
488
+ with snapshot_path.open('rb') as f:
489
+ payload = torch.load(f)
490
+ agent_payload = {}
491
+ for k, v in payload.items():
492
+ if k not in self.__dict__:
493
+ agent_payload[k] = v
494
+ elif k == '_global_epoch':
495
+ self._global_epoch = v
496
+ print(f'loaded epoch: {v}')
497
+ if self.cfg.use_wandb:
498
+ # add to config of wandb
499
+ wandb.config.update({'epoch': v})
500
+
501
+ # self.agent.load_snapshot_eval(agent_payload, bc)
502
+
503
+ @hydra.main(config_path='cfgs', config_name='config_eval')
504
+ def main(cfg):
505
+ from eval_robot import Workspace as W
506
+ root_dir = Path.cwd()
507
+ workspace = W(cfg)
508
+
509
+ workspace.eval()
510
+
511
+ if __name__ == '__main__':
512
+ main()
205317/wandb/run-20241229_205323-2n31umej/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: 0
21
+ dataset_shuffle_seed:
22
+ desc: null
23
+ value: 5
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: '1045_0'
42
+ wandb_notes:
43
+ desc: null
44
+ value: '1045_0_'
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: false
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: false
126
+ use_sdf_maps:
127
+ desc: null
128
+ value: false
129
+ use_normals_maps:
130
+ desc: null
131
+ value: false
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:
231
+ - greece_twodim_nominal
232
+ - greece_twodim_recovery
233
+ expert_dataset_config:
234
+ desc: null
235
+ 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
236
+ name_of_valid_demo:
237
+ desc: null
238
+ value: 120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
239
+ valid_dataset_dir:
240
+ desc: null
241
+ 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
242
+ valid_demo_idxs_list_or_num:
243
+ desc: null
244
+ value: null
245
+ val_num_groups:
246
+ desc: null
247
+ value: 0
248
+ load_bc:
249
+ desc: null
250
+ value: true
251
+ checkpoint_epoch_list:
252
+ desc: null
253
+ value:
254
+ - 99
255
+ - 199
256
+ - 299
257
+ - 399
258
+ - 499
259
+ - 599
260
+ - 699
261
+ - 799
262
+ - 899
263
+ - 999
264
+ - 1249
265
+ - 1499
266
+ - 1749
267
+ - 1999
268
+ - 2999
269
+ - 3999
270
+ - 4999
271
+ - 5999
272
+ - 6999
273
+ - 7999
274
+ - 8999
275
+ - 9999
276
+ snapshot_root_dir:
277
+ desc: null
278
+ value: /mnt/grasp_high_usage/leonmkim/contact_estimation/FISH
279
+ save_snapshot:
280
+ desc: null
281
+ value: true
282
+ save_last_snapshot:
283
+ desc: null
284
+ value: true
285
+ save_snapshot_when_done:
286
+ desc: null
287
+ value: true
288
+ top_k_checkpoints:
289
+ desc: null
290
+ value: 5
291
+ save_snapshot_link_to_weights_dir:
292
+ desc: null
293
+ value: deprecated
294
+ bc_regularize:
295
+ desc: null
296
+ value: false
297
+ bc_weight_type:
298
+ desc: null
299
+ value: qfilter
300
+ experiment_dir:
301
+ desc: null
302
+ value: ./exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0
303
+ agent:
304
+ desc: null
305
+ value:
306
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
307
+ name: diffusion_policy
308
+ load_checkpoint: true
309
+ device: cuda
310
+ n_obs_steps: 1
311
+ suite_name: frankagym
312
+ obs_type: pixels
313
+ enable_arm: true
314
+ enable_camera: true
315
+ use_tb: true
316
+ desired_image_shape:
317
+ - 13
318
+ - 180
319
+ - 240
320
+ orig_cam_shape:
321
+ - 3
322
+ - 240
323
+ - 320
324
+ config:
325
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
326
+ compile: false
327
+ device: cuda
328
+ cam_resize_shape:
329
+ - 13
330
+ - 180
331
+ - 240
332
+ orig_cam_shape:
333
+ - 3
334
+ - 240
335
+ - 320
336
+ policy_frequency: 5
337
+ interpolation_frequency: 25
338
+ policy_cfg:
339
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
340
+ n_obs_steps: 1
341
+ horizon: 36
342
+ n_action_steps: 36
343
+ output_shapes:
344
+ action:
345
+ - 7
346
+ input_normalization_modes:
347
+ observation.image: mean_std
348
+ observation.state: min_max
349
+ observation.action_history: min_max
350
+ output_normalization_modes:
351
+ action: min_max
352
+ vision_backbone: resnet18
353
+ pretrained_backbone_weights: null
354
+ transforms:
355
+ - _target_: torchaug.transforms.RandomAffine
356
+ degrees:
357
+ - -5
358
+ - 5
359
+ translate:
360
+ - 0.05
361
+ - 0.05
362
+ batch_transform: true
363
+ num_chunks: -1
364
+ batch_inplace: true
365
+ - _target_: torchaug.transforms.RandomColorJitter
366
+ brightness: 0.3
367
+ contrast: 0.4
368
+ saturation: 0.5
369
+ hue: 0.08
370
+ batch_transform: true
371
+ num_chunks: -1
372
+ batch_inplace: true
373
+ use_group_norm: true
374
+ spatial_softmax_num_keypoints: 32
375
+ action_history_encoder_config:
376
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
377
+ in_channels: 7
378
+ out_channels: 32
379
+ history_length: 6
380
+ kernel_size: 5
381
+ downsample_kernel_size: 3
382
+ downsample_stride: 2
383
+ downsample_padding: 1
384
+ down_dims:
385
+ - 256
386
+ - 512
387
+ - 1024
388
+ kernel_size: 5
389
+ n_groups: 8
390
+ diffusion_step_embed_dim: 128
391
+ use_film_scale_modulation: true
392
+ noise_scheduler_type: DDIM
393
+ beta_schedule: squaredcos_cap_v2
394
+ beta_start: 0.0001
395
+ beta_end: 0.02
396
+ prediction_type: epsilon
397
+ clip_sample: true
398
+ clip_sample_range: 1.0
399
+ num_train_timesteps: 50
400
+ num_inference_steps: 10
401
+ do_mask_loss_for_padding: false
402
+ input_shapes:
403
+ observation.image:
404
+ - 13
405
+ - 180
406
+ - 240
407
+ context_observation.image:
408
+ - 13
409
+ - 180
410
+ - 240
411
+ observation.state:
412
+ - 8
413
+ observation.action_history:
414
+ - 7
415
+ train_cfg:
416
+ _target_: utils.TrainConfig
417
+ lr: 0.0001
418
+ lr_scheduler: cosine
419
+ lr_warmup_steps: 500
420
+ adam_betas:
421
+ - 0.95
422
+ - 0.999
423
+ adam_eps: 1.0e-08
424
+ adam_weight_decay: 1.0e-06
425
+ grad_clip_norm: 10
426
+ offline_steps: 1000000
427
+ use_amp: true
428
+ observation_cfg:
429
+ _target_: agent.encoder.VisualFeatureSet
430
+ use_depth: true
431
+ use_color: true
432
+ mask_input_dict:
433
+ _target_: agent.encoder.MaskInputDict
434
+ enable: false
435
+ representation: channels
436
+ mask_list:
437
+ - EE_obj_mask
438
+ crop_input_config:
439
+ _target_: agent.encoder.CropInputConfig
440
+ color_crop_type: null
441
+ depth_crop_type: null
442
+ segmask_crop_type: null
443
+ crop_hw:
444
+ - 144
445
+ - 144
446
+ crop_down_offset: 48
447
+ add_crop_binary_mask: false
448
+ add_coord_conv_map: false
449
+ context_input_config:
450
+ _target_: agent.encoder.ContextInputConfig
451
+ use_color: false
452
+ use_depth: false
453
+ mask_input_dict:
454
+ _target_: agent.encoder.MaskInputDict
455
+ enable: false
456
+ representation: channels
457
+ mask_list:
458
+ - EE_obj_mask
459
+ crop_input_config:
460
+ _target_: agent.encoder.CropInputConfig
461
+ color_crop_type: null
462
+ depth_crop_type: null
463
+ segmask_crop_type: null
464
+ crop_hw:
465
+ - 144
466
+ - 144
467
+ crop_down_offset: 48
468
+ add_crop_binary_mask: false
469
+ add_coord_conv_map: false
470
+ mask_soft_approx_scheduler_config:
471
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
472
+ num_steps: 40000
473
+ initial_value: 10.0
474
+ final_value: 1000.0
475
+ interpolation_scheme: cosine
476
+ use_contact_map: false
477
+ use_sdf_maps: false
478
+ use_normals_maps: false
479
+ which_objects: both
480
+ grasped_dtc_max_value: 0.2
481
+ env_dtc_max_value: 0.4
482
+ grasped_normals_mask_max_dtc_value: 0.2
483
+ env_normals_mask_max_dtc_value: 0.4
484
+ clamp_dtc: true
485
+ max_contact_prob: 0.1
486
+ mask_normals_within_sdf: true
487
+ dtc_adaptive_normalization: false
488
+ adaptive_normals_mask: true
489
+ max_depth: 2.0
490
+ image_shape:
491
+ - 13
492
+ - 180
493
+ - 240
494
+ learnable_contact_preprocess_params: true
495
+ learning_rate: 0.0001
496
+ weight_decay: 0.0
497
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9
498
+ zero_centered: false
499
+ suite:
500
+ desc: null
501
+ value:
502
+ suite: frankagym
503
+ name: frankagym
504
+ frame_stack: 1
505
+ action_repeat: 1
506
+ discount: 0.99
507
+ hidden_dim: 1024
508
+ num_train_frames: 2010
509
+ num_seed_frames: 260
510
+ num_train_epochs: 5000
511
+ validate_every_epochs: 100
512
+ validate_diffusion_on_action_loss_every_epochs: 500
513
+ train_eval_diffusion_on_action_loss_every_epochs: 500
514
+ check_topk_every_epochs: 10
515
+ save_snapshot_every_epochs: 5000
516
+ eval_every_frames: 2000
517
+ num_eval_episodes: 5
518
+ save_snapshot: true
519
+ wait_for_user_to_start_episode: true
520
+ task_make_fn:
521
+ _target_: suite.frankagym.make
522
+ name: FrankaInsertion-v1
523
+ height: 240
524
+ width: 320
525
+ frame_stack: 1
526
+ action_repeat: 1
527
+ seed: 0
528
+ enable_arm: true
529
+ enable_gripper: true
530
+ start_with_gripper_open: true
531
+ enable_camera: true
532
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
533
+ contact_estimation_model_ckpt_path: ~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt
534
+ x_limit:
535
+ - 0.2
536
+ - 0.7
537
+ y_limit:
538
+ - -0.4
539
+ - 0.4
540
+ z_limit:
541
+ - -0.05
542
+ - 0.55
543
+ device: cuda
544
+ interpolation_frequency: 25
545
+ policy_frequency: 5
546
+ debug_timestamps: false
547
+ stop_after_action: false
548
+ open_loop: false
549
+ wait_for_new_camera_frames: true
550
+ action_key: action_trajectory_25hz
551
+ action_trajectory_horizon: 36
552
+ action_trajectories: true
553
+ 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
554
+ agent_policy_cfg:
555
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
556
+ compile: false
557
+ device: cuda
558
+ cam_resize_shape:
559
+ - 13
560
+ - 180
561
+ - 240
562
+ orig_cam_shape:
563
+ - 3
564
+ - 240
565
+ - 320
566
+ policy_frequency: 5
567
+ interpolation_frequency: 25
568
+ policy_cfg:
569
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
570
+ n_obs_steps: 1
571
+ horizon: 36
572
+ n_action_steps: 36
573
+ output_shapes:
574
+ action:
575
+ - 7
576
+ input_normalization_modes:
577
+ observation.image: mean_std
578
+ observation.state: min_max
579
+ observation.action_history: min_max
580
+ output_normalization_modes:
581
+ action: min_max
582
+ vision_backbone: resnet18
583
+ pretrained_backbone_weights: null
584
+ transforms:
585
+ - _target_: torchaug.transforms.RandomAffine
586
+ degrees:
587
+ - -5
588
+ - 5
589
+ translate:
590
+ - 0.05
591
+ - 0.05
592
+ batch_transform: true
593
+ num_chunks: -1
594
+ batch_inplace: true
595
+ - _target_: torchaug.transforms.RandomColorJitter
596
+ brightness: 0.3
597
+ contrast: 0.4
598
+ saturation: 0.5
599
+ hue: 0.08
600
+ batch_transform: true
601
+ num_chunks: -1
602
+ batch_inplace: true
603
+ use_group_norm: true
604
+ spatial_softmax_num_keypoints: 32
605
+ action_history_encoder_config:
606
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
607
+ in_channels: 7
608
+ out_channels: 32
609
+ history_length: 6
610
+ kernel_size: 5
611
+ downsample_kernel_size: 3
612
+ downsample_stride: 2
613
+ downsample_padding: 1
614
+ down_dims:
615
+ - 256
616
+ - 512
617
+ - 1024
618
+ kernel_size: 5
619
+ n_groups: 8
620
+ diffusion_step_embed_dim: 128
621
+ use_film_scale_modulation: true
622
+ noise_scheduler_type: DDIM
623
+ beta_schedule: squaredcos_cap_v2
624
+ beta_start: 0.0001
625
+ beta_end: 0.02
626
+ prediction_type: epsilon
627
+ clip_sample: true
628
+ clip_sample_range: 1.0
629
+ num_train_timesteps: 50
630
+ num_inference_steps: 10
631
+ do_mask_loss_for_padding: false
632
+ input_shapes:
633
+ observation.image:
634
+ - 13
635
+ - 180
636
+ - 240
637
+ context_observation.image:
638
+ - 13
639
+ - 180
640
+ - 240
641
+ observation.state:
642
+ - 8
643
+ observation.action_history:
644
+ - 7
645
+ train_cfg:
646
+ _target_: utils.TrainConfig
647
+ lr: 0.0001
648
+ lr_scheduler: cosine
649
+ lr_warmup_steps: 500
650
+ adam_betas:
651
+ - 0.95
652
+ - 0.999
653
+ adam_eps: 1.0e-08
654
+ adam_weight_decay: 1.0e-06
655
+ grad_clip_norm: 10
656
+ offline_steps: 1000000
657
+ use_amp: true
658
+ observation_cfg:
659
+ _target_: agent.encoder.VisualFeatureSet
660
+ use_depth: true
661
+ use_color: true
662
+ mask_input_dict:
663
+ _target_: agent.encoder.MaskInputDict
664
+ enable: false
665
+ representation: channels
666
+ mask_list:
667
+ - EE_obj_mask
668
+ crop_input_config:
669
+ _target_: agent.encoder.CropInputConfig
670
+ color_crop_type: null
671
+ depth_crop_type: null
672
+ segmask_crop_type: null
673
+ crop_hw:
674
+ - 144
675
+ - 144
676
+ crop_down_offset: 48
677
+ add_crop_binary_mask: false
678
+ add_coord_conv_map: false
679
+ context_input_config:
680
+ _target_: agent.encoder.ContextInputConfig
681
+ use_color: false
682
+ use_depth: false
683
+ mask_input_dict:
684
+ _target_: agent.encoder.MaskInputDict
685
+ enable: false
686
+ representation: channels
687
+ mask_list:
688
+ - EE_obj_mask
689
+ crop_input_config:
690
+ _target_: agent.encoder.CropInputConfig
691
+ color_crop_type: null
692
+ depth_crop_type: null
693
+ segmask_crop_type: null
694
+ crop_hw:
695
+ - 144
696
+ - 144
697
+ crop_down_offset: 48
698
+ add_crop_binary_mask: false
699
+ add_coord_conv_map: false
700
+ mask_soft_approx_scheduler_config:
701
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
702
+ num_steps: 40000
703
+ initial_value: 10.0
704
+ final_value: 1000.0
705
+ interpolation_scheme: cosine
706
+ use_contact_map: false
707
+ use_sdf_maps: false
708
+ use_normals_maps: false
709
+ which_objects: both
710
+ grasped_dtc_max_value: 0.2
711
+ env_dtc_max_value: 0.4
712
+ grasped_normals_mask_max_dtc_value: 0.2
713
+ env_normals_mask_max_dtc_value: 0.4
714
+ clamp_dtc: true
715
+ max_contact_prob: 0.1
716
+ mask_normals_within_sdf: true
717
+ dtc_adaptive_normalization: false
718
+ adaptive_normals_mask: true
719
+ max_depth: 2.0
720
+ image_shape:
721
+ - 13
722
+ - 180
723
+ - 240
724
+ learnable_contact_preprocess_params: true
725
+ learning_rate: 0.0001
726
+ weight_decay: 0.0
727
+ contact_model_name: local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9
728
+ zero_centered: false
729
+ true_action_history: false
730
+ num_train_frames_bc:
731
+ desc: null
732
+ value: 50000
733
+ num_train_frames_drq:
734
+ desc: null
735
+ value: 1100000
736
+ stddev_schedule_drq:
737
+ desc: null
738
+ value: linear(1.0,0.1,100000)
739
+ task_name:
740
+ desc: null
741
+ value: FrankaInsertion-v1
742
+ num_train_frames_vinn:
743
+ desc: null
744
+ value: 25000
745
+ num_train_frames_diffusion:
746
+ desc: null
747
+ value: 1000000
748
+ num_train_epochs_bc:
749
+ desc: null
750
+ value: 5000
751
+ num_train_epochs_diffusion:
752
+ desc: null
753
+ value: 15000
754
+ validate_every_epochs_bc:
755
+ desc: null
756
+ value: 5
757
+ validate_every_epochs_diffusion:
758
+ desc: null
759
+ value: 250
760
+ validate_diffusion_on_action_loss_every_epochs:
761
+ desc: null
762
+ value: 250
763
+ train_eval_diffusion_on_action_loss_every_epochs:
764
+ desc: null
765
+ value: 250
766
+ check_topk_every_epochs:
767
+ desc: null
768
+ value: 5
769
+ check_topk_every_epochs_diffusion:
770
+ desc: null
771
+ value: 250
772
+ save_snapshot_every_epochs_diffusion:
773
+ desc: null
774
+ value: 1500
775
+ x_limit:
776
+ desc: null
777
+ value:
778
+ - 0.2
779
+ - 0.7
780
+ y_limit:
781
+ desc: null
782
+ value:
783
+ - -0.4
784
+ - 0.4
785
+ z_limit:
786
+ desc: null
787
+ value:
788
+ - -0.05
789
+ - 0.55
790
+ home_displacement:
791
+ desc: null
792
+ value:
793
+ - 0.55
794
+ - 0.0
795
+ - 0.55
796
+ - 180.0
797
+ - 0.0
798
+ - 0.0
799
+ enable_gripper:
800
+ desc: null
801
+ value: true
802
+ start_with_gripper_open:
803
+ desc: null
804
+ value: true
805
+ offset_mask:
806
+ desc: null
807
+ value:
808
+ - 1
809
+ - 1
810
+ - 1
811
+ - 1
812
+ - 1
813
+ - 1
814
+ path_to_depth_extrinsics:
815
+ desc: null
816
+ value: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
817
+ feature_type:
818
+ desc: null
819
+ value: 180x240_1_RGB_D_2.0_acthst_hst6_out32_dwnkrnl3_dwnstrd2_dwnpd1
820
+ save_buffer:
821
+ desc: null
822
+ value: true
823
+ num_eval:
824
+ desc: null
825
+ value: 5
826
+ random_start:
827
+ desc: null
828
+ value: false
829
+ eval_starts:
830
+ desc: null
831
+ value: /home/leonmkim/fish_leon/FISH/eval_starts/frankagym_pixels/FrankaInsertion-v1
832
+ num_valid_demos:
833
+ desc: null
834
+ value: null
835
+ load_checkpoint:
836
+ desc: null
837
+ value: true
838
+ checkpoint_epoch:
839
+ desc: null
840
+ value: 12000
841
+ load_residual_weight:
842
+ desc: null
843
+ value: false
844
+ checkpoint_root_dir:
845
+ desc: null
846
+ value: /home/leonmkim/fish_leon/FISH
847
+ checkpoint_weight_dir:
848
+ desc: null
849
+ value: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0
850
+ residual_weight:
851
+ desc: null
852
+ value: /home/leonmkim/fish_leon/FISH/weights/frankagym_pixels/FrankaInsertion-v1/weight.pt
853
+ final_experiment_dir:
854
+ desc: null
855
+ value: ./exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317
856
+ _wandb:
857
+ desc: null
858
+ value:
859
+ code_path: code/FISH/eval_robot.py
860
+ python_version: 3.10.14
861
+ cli_version: 0.17.5
862
+ framework: torch
863
+ is_jupyter_run: false
864
+ is_kaggle_kernel: false
865
+ start_time: 1735523603
866
+ t:
867
+ 1:
868
+ - 1
869
+ - 41
870
+ - 49
871
+ - 50
872
+ - 55
873
+ - 83
874
+ 2:
875
+ - 1
876
+ - 41
877
+ - 49
878
+ - 50
879
+ - 55
880
+ - 83
881
+ 3:
882
+ - 16
883
+ - 23
884
+ - 35
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: greece
893
+ left_book_slot:
894
+ desc: null
895
+ value: twodim
205317/wandb/run-20241229_205323-2n31umej/files/diff.patch ADDED
@@ -0,0 +1,192 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ diff --git a/FISH/cfgs/config_eval.yaml b/FISH/cfgs/config_eval.yaml
2
+ index 2303343..d3678fb 100644
3
+ --- a/FISH/cfgs/config_eval.yaml
4
+ +++ b/FISH/cfgs/config_eval.yaml
5
+ @@ -71,7 +71,7 @@ dtc_adaptive_normalization: false
6
+ mask_normals_within_sdf: true
7
+ adaptive_normals_mask: true
8
+ learnable_contact_preprocess_params: false
9
+ -contact_model_name: 'local_multitask_outhd64all_home_crop_h144w144d48_ctxt_seed_183386_epoch_9'
10
+ +contact_model_name: 'local_multitask_outhd64all_home_crop_h144w144d48_ctxt_seed_183386_epoch_9'
11
+ # contact_model_name: 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9'
12
+ contact_estimation_model_ckpt_path: '~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt' # no mask no flow, just context
13
+ # contact_estimation_model_ckpt_path: '~/fish_leon/contact_estimation/artifacts/197406_2/checkpoints/epoch=08-val_loss=0.00.ckpt' # w/ mask no flow, just context
14
+ @@ -123,6 +123,10 @@ bc_weight_type: 'qfilter' # linear, qfilter
15
+
16
+ # Load weights
17
+ load_checkpoint: ${agent.load_checkpoint}
18
+ +# 120 demos
19
+ +wandb_run_id: '1045_0' # greece
20
+ +
21
+ +
22
+ # 112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
23
+ # 14 demos
24
+
25
+ @@ -144,7 +148,7 @@ load_checkpoint: ${agent.load_checkpoint}
26
+ # wandb_run_id: '523_0' # fowlers
27
+ # wandb_run_id: '524_0' # lib
28
+ # wandb_run_id: '525_0' # modelsys
29
+ -wandb_run_id: '526_0' # electrodyn
30
+ +# wandb_run_id: '526_0' # electrodyn
31
+
32
+ # 54_240x320_hbm_twodim_fps_fix_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
33
+ # 32 held out demos
34
+ diff --git a/FISH/download_model_checkpoints.py b/FISH/download_model_checkpoints.py
35
+ index 0f225ec..4d768b8 100644
36
+ --- a/FISH/download_model_checkpoints.py
37
+ +++ b/FISH/download_model_checkpoints.py
38
+ @@ -15,8 +15,8 @@ if not local_checkpoint_root_dir.exists():
39
+ local_checkpoint_root_dir.mkdir(parents=True)
40
+
41
+ # Download the model checkpoints
42
+ -# remote_checkpoint_root_dir = Path('/mnt/grasp_high_usage/leonmkim/contact_estimation/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1')
43
+ -remote_checkpoint_root_dir = Path('/mnt/kostas-graid/datasets/extrinsic_contact_data/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1')
44
+ +remote_checkpoint_root_dir = Path('/mnt/grasp_high_usage/leonmkim/contact_estimation/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1')
45
+ +# remote_checkpoint_root_dir = Path('/mnt/kostas-graid/datasets/extrinsic_contact_data/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1')
46
+ remote_checkpoint_root_dir = remote_checkpoint_root_dir.expanduser()
47
+ remote_username = 'leonmkim'
48
+ remote_host = 'grasp-login1'
49
+ @@ -146,6 +146,11 @@ remote_host = 'grasp-login1'
50
+ # '265627',
51
+ # '265620',
52
+ # ]
53
+ +
54
+ +run_id_list = [
55
+ + '1045_0',
56
+ +]
57
+ +
58
+ checkpoint_epoch = 12000
59
+
60
+ # use subprocess to download the model checkpoints in parallel
61
+ Submodule ros_ws/src/contact_estimation_ros contains modified content
62
+ diff --git a/ros_ws/src/contact_estimation_ros/fish_data_collection/src/rosbag_handler.py b/ros_ws/src/contact_estimation_ros/fish_data_collection/src/rosbag_handler.py
63
+ index dcbcfa4..35dd7e8 100755
64
+ --- a/ros_ws/src/contact_estimation_ros/fish_data_collection/src/rosbag_handler.py
65
+ +++ b/ros_ws/src/contact_estimation_ros/fish_data_collection/src/rosbag_handler.py
66
+ @@ -15,6 +15,8 @@ import time
67
+ import datetime
68
+ import shutil
69
+
70
+ +from scipy.spatial.transform import Rotation as R
71
+ +
72
+ # solution to launching from main thread from: https://answers.ros.org/question/260212/start-launchfile-from-service/
73
+ # from Queue import Queue
74
+
75
+ @@ -23,7 +25,7 @@ from fish_data_collection.srv import StartBagging, StartBaggingRequest, StartBag
76
+ from sensor_msgs.msg import CameraInfo
77
+
78
+ class RosbaggingHandler():
79
+ - def __init__(self, base_dset_dir, experiment_dirname, bag_launch_path, demo_dirname, camera_calibration_dir,
80
+ + def __init__(self, base_dset_dir, experiment_dirname, bag_launch_path, demo_dirname,
81
+ multicam=False, align_depth_to_color=False):
82
+ ## bag files and target files should be identified by episode id
83
+ self.align_depth_to_color = align_depth_to_color
84
+ @@ -33,8 +35,6 @@ class RosbaggingHandler():
85
+ self.intrinsics_saved = False
86
+ self.extrinsics_saved = False
87
+
88
+ - self.camera_calibration_dir = camera_calibration_dir
89
+ -
90
+ self.full_bag_dir = os.path.join(self.base_dset_dir, self.experiment_dirname, self.demo_dirname)
91
+ os.makedirs(self.full_bag_dir, exist_ok=True)
92
+
93
+ @@ -63,7 +63,7 @@ class RosbaggingHandler():
94
+ self.abort_bagging_request = False
95
+
96
+ self.save_camera_intrinsics()
97
+ - self.save_camera_extrinsics(self.camera_calibration_dir)
98
+ + self.save_camera_extrinsics()
99
+
100
+ while not rospy.is_shutdown():
101
+ if self.start_bagging_request:
102
+ @@ -83,23 +83,56 @@ class RosbaggingHandler():
103
+ self.start_bagging_request = True
104
+ return response
105
+
106
+ - def save_camera_extrinsics(self, path_to_calibration_dir):
107
+ + def save_camera_extrinsics(self):
108
+ if not self.extrinsics_saved:
109
+ - # copy over the contents of the calibration directory, but not the directory itself, into the bag directory
110
+ - # list the contents of the calibration directory that end in .npy
111
+ - calibration_dir_contents = glob.glob(os.path.join(path_to_calibration_dir, '*.npy'))
112
+ - # calibration_dir_contents = os.listdir(path_to_calibration_dir)
113
+ - # copy the contents of the calibration directory into the bag directory
114
+ - for item in calibration_dir_contents:
115
+ - # make sure the item is a file
116
+ - if os.path.isfile(item):
117
+ - # print('copying {} to {}'.format(item, os.path.join(self.full_bag_dir, os.path.basename(item))))
118
+ - shutil.copy(item, os.path.join(self.full_bag_dir, os.path.basename(item)))
119
+ - # also save the path to the calibration directory as a txt file
120
+ - with open(os.path.join(self.full_bag_dir, 'calibration_dir.txt'), 'w') as f:
121
+ - f.write(path_to_calibration_dir)
122
+ + # get cam extrinsic
123
+ + # use ros tf2 to get transform from color_optical_frame to panda_link0
124
+ + import tf2_ros
125
+ + tfBuffer = tf2_ros.Buffer()
126
+ + listener = tf2_ros.TransformListener(tfBuffer)
127
+ +
128
+ + # get transform from color_optical_frame to panda_link0
129
+ + # target, source where target is the parent frame and source is the child frame
130
+ + color_tf_world_ros = tfBuffer.lookup_transform('camera_color_optical_frame', 'panda_link0', rospy.Time(0), rospy.Duration(1.0)).transform
131
+ + self.color_tf_world = np.eye(4)
132
+ + self.color_tf_world[0, 3] =color_tf_world_ros.translation.x
133
+ + self.color_tf_world[1, 3] =color_tf_world_ros.translation.y
134
+ + self.color_tf_world[2, 3] =color_tf_world_ros.translation.z
135
+ + self.color_tf_world[:3, :3] = R.from_quat([color_tf_world_ros.rotation.x, color_tf_world_ros.rotation.y, color_tf_world_ros.rotation.z, color_tf_world_ros.rotation.w]).as_matrix()
136
+ +
137
+ + # dump the info to the bag directory
138
+ + np.save(os.path.join(self.full_bag_dir, 'color_tf_world.npy'), self.color_tf_world)
139
+ +
140
+ + depth_tf_world_ros = tfBuffer.lookup_transform('camera_depth_optical_frame', 'panda_link0', rospy.Time(0), rospy.Duration(1.0)).transform
141
+ + self.depth_tf_world = np.eye(4)
142
+ + self.depth_tf_world[0, 3] = depth_tf_world_ros.translation.x
143
+ + self.depth_tf_world[1, 3] = depth_tf_world_ros.translation.y
144
+ + self.depth_tf_world[2, 3] = depth_tf_world_ros.translation.z
145
+ + self.depth_tf_world[:3, :3] = \
146
+ + R.from_quat([
147
+ + depth_tf_world_ros.rotation.x,
148
+ + depth_tf_world_ros.rotation.y,
149
+ + depth_tf_world_ros.rotation.z,
150
+ + depth_tf_world_ros.rotation.w,
151
+ + ]).as_matrix()
152
+ +
153
+ + np.save(os.path.join(self.full_bag_dir, 'depth_tf_world.npy'), self.depth_tf_world)
154
+ +
155
+ + # # copy over the contents of the calibration directory, but not the directory itself, into the bag directory
156
+ + # # list the contents of the calibration directory that end in .npy
157
+ + # calibration_dir_contents = glob.glob(os.path.join(path_to_calibration_dir, '*.npy'))
158
+ + # # calibration_dir_contents = os.listdir(path_to_calibration_dir)
159
+ + # # copy the contents of the calibration directory into the bag directory
160
+ + # for item in calibration_dir_contents:
161
+ + # # make sure the item is a file
162
+ + # if os.path.isfile(item):
163
+ + # # print('copying {} to {}'.format(item, os.path.join(self.full_bag_dir, os.path.basename(item))))
164
+ + # shutil.copy(item, os.path.join(self.full_bag_dir, os.path.basename(item)))
165
+ + # # also save the path to the calibration directory as a txt file
166
+ + # with open(os.path.join(self.full_bag_dir, 'calibration_dir.txt'), 'w') as f:
167
+ + # f.write(path_to_calibration_dir)
168
+
169
+ - self.extrinsics_saved = True
170
+ + # self.extrinsics_saved = True
171
+
172
+ def save_camera_intrinsics(self):
173
+ if not self.intrinsics_saved:
174
+ @@ -198,9 +231,6 @@ class RosbaggingHandler():
175
+ if self.bag_recording:
176
+ self.current_recording_bag_path = bag_path
177
+ # response.success = True
178
+ -
179
+ -
180
+ -
181
+ # return response
182
+
183
+ def stop_bagging_service_callback(self, req):
184
+ @@ -304,7 +334,7 @@ if __name__ == '__main__':
185
+ assert os.path.exists(rosbag_launch_path), "rosbag launch file does not exist at path: {}".format(rosbag_launch_path)
186
+
187
+ camera_calibration_dir = '/home/leonmkim/FISH_franka_ros_ws/src/contact_estimation_ros/fish_data_collection/scripts/camera_poses_L515/20240313-153328'
188
+ - dc_handler = RosbaggingHandler(base_dset_dir, experiment_dirname, rosbag_launch_path, demo_dirname, camera_calibration_dir, multicam=multicam, align_depth_to_color=align_depth_to_color)
189
+ + dc_handler = RosbaggingHandler(base_dset_dir, experiment_dirname, rosbag_launch_path, demo_dirname, multicam=multicam, align_depth_to_color=align_depth_to_color)
190
+
191
+ # rospy.spin()
192
+
205317/wandb/run-20241229_205323-2n31umej/files/media/videos/eval/0_eval_0_2dd247d1c4c04fa7cea7.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2dd247d1c4c04fa7cea7a03c76f9bcf0fac708360da8e1551f468b1b47fc66b9
3
+ size 1171585
205317/wandb/run-20241229_205323-2n31umej/files/media/videos/eval/1_eval_1_f35843717fd499551c4b.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f35843717fd499551c4b0926cca736afc0945a08b7388201dffb14db7ec3fefa
3
+ size 1166652
205317/wandb/run-20241229_205323-2n31umej/files/media/videos/eval/2_eval_2_c03a74d7b4bcab766fc2.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c03a74d7b4bcab766fc29ee131b9e9ac693b435c897bde76d32747b19fb58257
3
+ size 1184865
205317/wandb/run-20241229_205323-2n31umej/files/media/videos/eval/3_eval_3_94417ff346f07f5fa23e.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:94417ff346f07f5fa23e9c53f6b0137c96c29dcb3d88023f1ed9c85959c133e3
3
+ size 1210929
205317/wandb/run-20241229_205323-2n31umej/files/media/videos/eval/4_eval_4_20ea9dbf78cd7cd19362.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:20ea9dbf78cd7cd19362e85b72b43f16e349294c086d44f5e3adc1fd73292d66
3
+ size 1225749
205317/wandb/run-20241229_205323-2n31umej/files/output.log ADDED
@@ -0,0 +1,225 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ loaded agent with feature_type: 180x240_1_RGB_D_2.0_acthst_hst6_out32_dwnkrnl3_dwnstrd2_dwnpd1
3
+ [INFO] [1735523610.488230]: resetting environment
4
+ [INFO] [1735523610.489337]: cleared current plan
5
+ [INFO] [1735523610.491255]: moving to home
6
+ [INFO] [1735523612.393259]: reached home
7
+ [INFO] [1735523612.394469]: reset action history
8
+ [INFO] [1735523615.152511]: environment reset
9
+ Starting episode 0
10
+ [INFO] [1735523615.155349]: resetting environment
11
+ [INFO] [1735523615.156203]: cleared current plan
12
+ [INFO] [1735523615.156975]: moving to home
13
+ [INFO] [1735523616.159824]: reached home
14
+ [INFO] [1735523616.162780]: reset action history
15
+ [INFO] [1735523618.920455]: 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![INFO] [1735523677.158728]: resetting environment
18
+ [INFO] [1735523677.160157]: cleared current plan
19
+ [INFO] [1735523677.161284]: moving to home
20
+ [INFO] [1735523678.163382]: reached home
21
+ [INFO] [1735523678.164495]: reset action history
22
+ [INFO] [1735523680.921619]: environment reset
23
+ bag_path_name:=/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317/episode_rosbags/episode_0_2024-12-29-20-54-40.bag
24
+ ... logging to /home/leonmkim/.ros/log/a8a09c64-c64e-11ef-96d2-5defea869005/roslaunch-leonmkim-ROG-Strix-G15CS-G15CS-1355277.log
25
+ started roslaunch server http://158.130.50.37:34607/
26
+ SUMMARY
27
+ ========
28
+ PARAMETERS
29
+ * /rosdistro: noetic
30
+ * /rosversion: 1.16.0
31
+ NODES
32
+ /
33
+ print_text (rostopic/rostopic)
34
+ pub_text (rostopic/rostopic)
35
+ rosbag_record (rosbag/record)
36
+ ROS_MASTER_URI=http://localhost:11311
37
+ process[pub_text-1]: started with pid [1355542]
38
+ process[print_text-2]: started with pid [1355543]
39
+ process[rosbag_record-3]: started with pid [1355567]
40
+ started bagging!
41
+ For topic gripper_width: timestamp difference is -181985368 for nearest: 1735523701867554436 - target: 1735523702049539804 at idx 249
42
+ [INFO] [1735523707.719766]: Storing episode...
43
+ [rosbag_record-3] killing on exit
44
+ [pub_text-1] killing on exit[print_text-2] killing on exit
45
+ [INFO] [1735523708.445290]: Stored episode 1.
46
+ [INFO] [1735523708.445900]: Saving video...
47
+ [INFO] [1735523708.649843]: Video saved!
48
+ Starting episode 1
49
+ [INFO] [1735523708.687548]: resetting environment
50
+ [INFO] [1735523708.687901]: cleared current plan
51
+ [INFO] [1735523708.688327]: moving to home
52
+ [INFO] [1735523712.294043]: reached home
53
+ [INFO] [1735523712.307056]: reset action history
54
+ [INFO] [1735523715.017036]: environment reset
55
+ Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success
56
+ proceeding to start episode!
57
+ [INFO] [1735523725.239680]: resetting environment
58
+ [INFO] [1735523725.240496]: cleared current plan
59
+ [INFO] [1735523725.240901]: moving to home
60
+ [INFO] [1735523726.242374]: reached home
61
+ [INFO] [1735523726.242768]: reset action history
62
+ [INFO] [1735523728.999282]: environment reset
63
+ bag_path_name:=/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317/episode_rosbags/episode_1_2024-12-29-20-55-29.bag
64
+ ... logging to /home/leonmkim/.ros/log/a8a09c64-c64e-11ef-96d2-5defea869005/roslaunch-leonmkim-ROG-Strix-G15CS-G15CS-1355277.log
65
+ started roslaunch server http://158.130.50.37:36565/
66
+ SUMMARY
67
+ ========
68
+ PARAMETERS
69
+ * /rosdistro: noetic
70
+ * /rosversion: 1.16.0
71
+ NODES
72
+ /
73
+ print_text (rostopic/rostopic)
74
+ pub_text (rostopic/rostopic)
75
+ rosbag_record (rosbag/record)
76
+ ROS_MASTER_URI=http://localhost:11311
77
+ process[pub_text-4]: started with pid [1355671]
78
+ process[print_text-5]: started with pid [1355672]
79
+ process[rosbag_record-6]: started with pid [1355696]
80
+ started bagging!
81
+ For topic gripper_width: timestamp difference is -119824366 for nearest: 1735523737367585226 - target: 1735523737487409592 at idx 126
82
+ For topic gripper_width: timestamp difference is -117102585 for nearest: 1735523740767553367 - target: 1735523740884655952 at idx 169
83
+ For topic gripper_width: timestamp difference is -114201270 for nearest: 1735523744367552318 - target: 1735523744481753588 at idx 218
84
+ [INFO] [1735523755.752178]: Storing episode...
85
+ [rosbag_record-6] killing on exit
86
+ [print_text-5] killing on exit[pub_text-4] killing on exit
87
+ [INFO] [1735523756.515642]: Stored episode 2.
88
+ [INFO] [1735523756.515851]: Saving video...
89
+ [INFO] [1735523756.765216]: Video saved!
90
+ Starting episode 2
91
+ [INFO] [1735523756.795257]: resetting environment
92
+ [INFO] [1735523756.808481]: cleared current plan
93
+ [INFO] [1735523756.813330]: moving to home
94
+ [INFO] [1735523760.325088]: reached home
95
+ [INFO] [1735523760.329300]: reset action history
96
+ [INFO] [1735523763.101227]: environment reset
97
+ Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success
98
+ proceeding to start episode![INFO] [1735523766.230032]: resetting environment
99
+ [INFO] [1735523766.235887]: cleared current plan
100
+ [INFO] [1735523766.242088]: moving to home
101
+ [INFO] [1735523767.249254]: reached home
102
+ [INFO] [1735523767.250467]: reset action history
103
+ [INFO] [1735523770.007904]: environment reset
104
+ bag_path_name:=/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317/episode_rosbags/episode_2_2024-12-29-20-56-10.bag
105
+ ... logging to /home/leonmkim/.ros/log/a8a09c64-c64e-11ef-96d2-5defea869005/roslaunch-leonmkim-ROG-Strix-G15CS-G15CS-1355277.log
106
+ started roslaunch server http://158.130.50.37:46491/
107
+ SUMMARY
108
+ ========
109
+ PARAMETERS
110
+ * /rosdistro: noetic
111
+ * /rosversion: 1.16.0
112
+ NODES
113
+ /
114
+ print_text (rostopic/rostopic)
115
+ pub_text (rostopic/rostopic)
116
+ rosbag_record (rosbag/record)
117
+ ROS_MASTER_URI=http://localhost:11311
118
+ process[pub_text-7]: started with pid [1355801]
119
+ process[print_text-8]: started with pid [1355802]
120
+ process[rosbag_record-9]: started with pid [1355803]
121
+ started bagging!
122
+ For topic gripper_width: timestamp difference is -121928547 for nearest: 1735523770567553427 - target: 1735523770689481974 at idx 12
123
+ For topic gripper_width: timestamp difference is -117060210 for nearest: 1735523781967578862 - target: 1735523782084639072 at idx 175
124
+ For topic gripper_width: timestamp difference is -113255168 for nearest: 1735523786767553901 - target: 1735523786880809069 at idx 240
125
+ For topic gripper_width: timestamp difference is -109881919 for nearest: 1735523790967551906 - target: 1735523791077433825 at idx 249
126
+ [INFO] [1735523796.754220]: Storing episode...
127
+ [rosbag_record-9] killing on exit
128
+ [print_text-8] killing on exit[pub_text-7] killing on exit
129
+ [INFO] [1735523797.544603]: Stored episode 3.
130
+ [INFO] [1735523797.547160]: Saving video...
131
+ [INFO] [1735523797.840266]: Video saved!
132
+ Starting episode 3
133
+ [INFO] [1735523797.913654]: resetting environment
134
+ [INFO] [1735523797.923165]: cleared current plan
135
+ [INFO] [1735523797.934853]: moving to home
136
+ [INFO] [1735523801.149350]: reached home
137
+ [INFO] [1735523801.153742]: reset action history
138
+ [INFO] [1735523804.016112]: environment reset
139
+ Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success
140
+ proceeding to start episode![INFO] [1735523806.043821]: resetting environment
141
+ [INFO] [1735523806.045080]: cleared current plan
142
+ [INFO] [1735523806.046980]: moving to home
143
+ [INFO] [1735523807.052008]: reached home
144
+ [INFO] [1735523807.060346]: reset action history
145
+ [INFO] [1735523809.887860]: environment reset
146
+ bag_path_name:=/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317/episode_rosbags/episode_3_2024-12-29-20-56-49.bag
147
+ ... logging to /home/leonmkim/.ros/log/a8a09c64-c64e-11ef-96d2-5defea869005/roslaunch-leonmkim-ROG-Strix-G15CS-G15CS-1355277.log
148
+ started roslaunch server http://158.130.50.37:44079/
149
+ SUMMARY
150
+ ========
151
+ PARAMETERS
152
+ * /rosdistro: noetic
153
+ * /rosversion: 1.16.0
154
+ NODES
155
+ /
156
+ print_text (rostopic/rostopic)
157
+ pub_text (rostopic/rostopic)
158
+ rosbag_record (rosbag/record)
159
+ ROS_MASTER_URI=http://localhost:11311
160
+ process[pub_text-10]: started with pid [1355952]
161
+ process[print_text-11]: started with pid [1355953]
162
+ process[rosbag_record-12]: started with pid [1355954]
163
+ started bagging!
164
+ For topic gripper_width: timestamp difference is -114542308 for nearest: 1735523826167607007 - target: 1735523826282149315 at idx 212
165
+ For topic gripper_width: timestamp difference is -114427458 for nearest: 1735523826367560972 - target: 1735523826481988430 at idx 213
166
+ For topic gripper_width: timestamp difference is -113633562 for nearest: 1735523827367551159 - target: 1735523827481184721 at idx 224
167
+ For topic gripper_width: timestamp difference is -109286799 for nearest: 1735523832767577396 - target: 1735523832876864195 at idx 249
168
+ [INFO] [1735523837.946021]: Storing episode...
169
+ [pub_text-10] killing on exit
170
+ [rosbag_record-12] killing on exit[print_text-11] killing on exit
171
+ [INFO] [1735523838.723363]: Stored episode 4.
172
+ [INFO] [1735523838.731264]: Saving video...
173
+ [INFO] [1735523839.282027]: Video saved!
174
+ Starting episode 4
175
+ [INFO] [1735523839.351837]: resetting environment
176
+ [INFO] [1735523839.356024]: cleared current plan
177
+ [INFO] [1735523839.371458]: moving to home
178
+ [WARN] [1735523839.299034]: Plan exhausted
179
+ [WARN] [1735523839.338714]: Plan exhausted
180
+ [INFO] [1735523842.987996]: reached home
181
+ [INFO] [1735523843.005783]: reset action history
182
+ [INFO] [1735523845.794588]: environment reset
183
+ Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success
184
+ proceeding to start episode![INFO] [1735523847.782817]: resetting environment
185
+ [INFO] [1735523847.787585]: cleared current plan
186
+ [INFO] [1735523847.792147]: moving to home
187
+ [INFO] [1735523848.802336]: reached home
188
+ [INFO] [1735523848.808479]: reset action history
189
+ [INFO] [1735523851.596875]: environment reset
190
+ bag_path_name:=/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317/episode_rosbags/episode_4_2024-12-29-20-57-31.bag
191
+ ... logging to /home/leonmkim/.ros/log/a8a09c64-c64e-11ef-96d2-5defea869005/roslaunch-leonmkim-ROG-Strix-G15CS-G15CS-1355277.log
192
+ started roslaunch server http://158.130.50.37:35151/
193
+ SUMMARY
194
+ ========
195
+ PARAMETERS
196
+ * /rosdistro: noetic
197
+ * /rosversion: 1.16.0
198
+ NODES
199
+ /
200
+ print_text (rostopic/rostopic)
201
+ pub_text (rostopic/rostopic)
202
+ rosbag_record (rosbag/record)
203
+ ROS_MASTER_URI=http://localhost:11311
204
+ process[pub_text-13]: started with pid [1356084]
205
+ process[print_text-14]: started with pid [1356085]
206
+ process[rosbag_record-15]: started with pid [1356086]
207
+ started bagging!
208
+ [INFO] [1735523880.182312]: Storing episode...
209
+ [rosbag_record-15] killing on exit
210
+ [pub_text-13] killing on exit[print_text-14] killing on exit
211
+ [INFO] [1735523880.957556]: Stored episode 5.
212
+ [INFO] [1735523880.967952]: Saving video...
213
+ [INFO] [1735523881.596726]: Video saved!
214
+ [INFO] [1735523881.664569]: resetting environment
215
+ [INFO] [1735523881.677550]: cleared current plan
216
+ [INFO] [1735523881.697741]: moving to home
217
+ [WARN] [1735523881.539209]: Plan exhausted
218
+ [WARN] [1735523881.582183]: Plan exhausted
219
+ [WARN] [1735523881.619458]: Plan exhausted
220
+ [WARN] [1735523881.658995]: Plan exhausted
221
+ [INFO] [1735523885.215016]: reached home
222
+ [INFO] [1735523885.231086]: reset action history
223
+ [INFO] [1735523888.142847]: environment reset
224
+ Evaluation finished. To wrap up, rate prev episode, press 0 for failure and 1 for success
225
+ proceeding to start episode!
205317/wandb/run-20241229_205323-2n31umej/files/requirements.txt ADDED
@@ -0,0 +1,339 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ bondpy==1.8.6
31
+ byol-pytorch==0.8.0
32
+ cachetools==5.4.0
33
+ camera-calibration-parsers==1.12.0
34
+ camera-calibration==1.17.0
35
+ cascadio==0.0.13
36
+ catkin-pkg==1.0.0
37
+ catkin==0.7.18
38
+ catkin==0.8.10
39
+ certifi==2024.7.4
40
+ cffi==1.16.0
41
+ chardet==5.2.0
42
+ charset-normalizer==3.3.2
43
+ click==8.1.7
44
+ cloudpickle==3.0.0
45
+ cmake==3.30.1
46
+ colorlog==6.8.2
47
+ contourpy==1.2.1
48
+ controller-manager-msgs==0.20.0
49
+ controller-manager==0.20.0
50
+ coverage==7.6.0
51
+ coveralls==4.0.1
52
+ cv-bridge==1.16.2
53
+ cycler==0.12.1
54
+ datasets==2.20.0
55
+ decorator==4.4.2
56
+ deepdiff==7.0.1
57
+ defusedxml==0.7.1
58
+ diagnostic-analysis==1.11.0
59
+ diagnostic-common-diagnostics==1.11.0
60
+ diagnostic-updater==1.11.0
61
+ diffusers==0.27.2
62
+ dill==0.3.8
63
+ distro==1.9.0
64
+ dm-control==1.0.8
65
+ dm-env==1.6
66
+ dm-tree==0.1.8
67
+ docker-pycreds==0.4.0
68
+ docopt==0.6.2
69
+ docutils==0.21.2
70
+ dynamic-reconfigure==1.7.3
71
+ einops==0.8.0
72
+ embreex==2.17.7.post5
73
+ empy==3.3.4
74
+ etils==1.7.0
75
+ exceptiongroup==1.2.2
76
+ ezdxf==1.3.2
77
+ fasteners==0.19
78
+ filelock==3.15.4
79
+ fonttools==4.53.1
80
+ freetype-py==2.4.0
81
+ frozenlist==1.4.1
82
+ fsspec==2024.5.0
83
+ gazebo_plugins==2.9.2
84
+ gazebo_ros==2.9.2
85
+ gdown==5.2.0
86
+ gencpp==0.7.0
87
+ geneus==3.0.0
88
+ genlisp==0.4.18
89
+ genmsg==0.5.12
90
+ genmsg==0.6.0
91
+ gennodejs==2.0.2
92
+ genpy==0.6.14
93
+ genpy==0.6.15
94
+ geometry-msgs==1.13.0.post2
95
+ gitdb==4.0.11
96
+ glfw==2.7.0
97
+ glooey==0.3.6
98
+ gmsh==4.12.2
99
+ gnupg==2.3.1
100
+ google-auth-oauthlib==1.0.0
101
+ google-auth==2.32.0
102
+ grpcio==1.65.1
103
+ gym-envs==0.0.1
104
+ gym-notices==0.0.8
105
+ gym==0.22.0
106
+ gymnasium==0.29.1
107
+ h11==0.14.0
108
+ h5py==3.11.0
109
+ hf_transfer==0.1.8
110
+ httpcore==1.0.5
111
+ httpx==0.27.0
112
+ huggingface-hub==0.23.5
113
+ hydra-core==1.3.2
114
+ hydra-submitit-launcher==1.2.0
115
+ idna==3.7
116
+ image-geometry==1.16.2
117
+ imageio-ffmpeg==0.5.1
118
+ imageio==2.34.2
119
+ importlib_metadata==8.2.0
120
+ importlib_resources==6.4.0
121
+ iniconfig==2.0.0
122
+ interactive-markers==1.12.0
123
+ joint-state-publisher-gui==1.15.1
124
+ joint-state-publisher==1.15.1
125
+ jsonschema-specifications==2023.12.1
126
+ jsonschema==4.23.0
127
+ kiwisolver==1.4.5
128
+ kornia==0.7.3
129
+ kornia_rs==0.1.5
130
+ labmaze==1.0.6
131
+ laser_geometry==1.6.7
132
+ lazy_loader==0.4
133
+ lerobot==0.1.0
134
+ lightning-utilities==0.11.6
135
+ llvmlite==0.43.0
136
+ lxml==5.2.2
137
+ manifold3d==2.5.1
138
+ mapbox-earcut==1.0.1
139
+ markdown-it-py==3.0.0
140
+ matplotlib==3.9.1
141
+ mdurl==0.1.2
142
+ meshio==5.3.5
143
+ message-filters==1.16.0
144
+ more-itertools==10.3.0
145
+ moviepy==1.0.3
146
+ mpmath==1.3.0
147
+ mujoco==3.2.0
148
+ multidict==6.0.5
149
+ multiprocess==0.70.16
150
+ natsort==8.4.0
151
+ netifaces==0.11.0
152
+ networkx==3.3
153
+ nodeenv==1.9.1
154
+ numba==0.60.0
155
+ numcodecs==0.13.0
156
+ numpy==1.26.4
157
+ nvidia-cublas-cu12==12.1.3.1
158
+ nvidia-cuda-cupti-cu12==12.1.105
159
+ nvidia-cuda-nvrtc-cu12==12.1.105
160
+ nvidia-cuda-runtime-cu12==12.1.105
161
+ nvidia-cudnn-cu12==9.1.0.70
162
+ nvidia-cufft-cu12==11.0.2.54
163
+ nvidia-curand-cu12==10.3.2.106
164
+ nvidia-cusolver-cu12==11.4.5.107
165
+ nvidia-cusparse-cu12==12.1.0.106
166
+ nvidia-nccl-cu12==2.20.5
167
+ nvidia-nvjitlink-cu12==12.5.82
168
+ nvidia-nvtx-cu12==12.1.105
169
+ oauthlib==3.2.2
170
+ omegaconf==2.3.0
171
+ openctm==0.0.5
172
+ opencv-python==4.10.0.84
173
+ ordered-set==4.1.0
174
+ packaging==24.1
175
+ pandas==2.2.2
176
+ pillow==10.4.0
177
+ pip==24.2
178
+ platformdirs==4.2.2
179
+ pluggy==1.5.0
180
+ proglog==0.1.10
181
+ protobuf==5.27.2
182
+ psutil==6.0.0
183
+ pyarrow-hotfix==0.6
184
+ pyarrow==17.0.0
185
+ pyasn1==0.6.0
186
+ pyasn1_modules==0.4.0
187
+ pyav==12.3.0
188
+ pycollada==0.8
189
+ pycparser==2.22
190
+ pycryptodomex==3.21.0
191
+ pyglet==1.5.29
192
+ pyinstrument==4.6.2
193
+ pymunk==6.8.1
194
+ pyparsing==2.4.7
195
+ pyrealsense2==2.54.2.5684
196
+ pyribbit==0.1.46
197
+ pyright==1.1.373
198
+ pytest-beartype==0.0.2
199
+ pytest-cov==5.0.0
200
+ pytest==8.3.1
201
+ python-dateutil==2.9.0.post0
202
+ python-fcl==0.7.0.6
203
+ python-qt-binding==0.4.4
204
+ pytorch-lightning==2.4.0
205
+ pytz==2024.1
206
+ qt-dotgraph==0.4.2
207
+ qt-gui-cpp==0.4.2
208
+ qt-gui-py-common==0.4.2
209
+ qt-gui==0.4.2
210
+ referencing==0.35.1
211
+ regex==2024.5.15
212
+ requests-oauthlib==2.0.0
213
+ requests==2.32.3
214
+ rerun-sdk==0.17.0
215
+ resource_retriever==1.12.7
216
+ rich==13.7.1
217
+ ros-numpy==0.0.5
218
+ rosbag==1.16.0
219
+ rosboost-cfg==1.15.8
220
+ rosclean==1.15.8
221
+ roscpp==1.15.11
222
+ roscreate==1.15.8
223
+ rosgraph-msgs==1.11.3.post2
224
+ rosgraph==1.15.11
225
+ rosgraph==1.16.0
226
+ roslaunch==1.16.0
227
+ roslib==1.14.7.post0
228
+ roslib==1.15.8
229
+ roslint==0.12.0
230
+ roslz4==1.16.0
231
+ rosmake==1.15.8
232
+ rosmaster==1.16.0
233
+ rosmsg==1.16.0
234
+ rosnode==1.16.0
235
+ rosparam==1.16.0
236
+ rospkg==1.5.1
237
+ rospy==1.15.11
238
+ rospy==1.16.0
239
+ rosservice==1.16.0
240
+ rostest==1.16.0
241
+ rostopic==1.16.0
242
+ rosunit==1.15.8
243
+ roswtf==1.16.0
244
+ rpds-py==0.19.1
245
+ rqt-console==0.4.12
246
+ rqt-image-view==0.4.17
247
+ rqt-logger-level==0.4.12
248
+ rqt-moveit==0.5.11
249
+ rqt-reconfigure==0.5.5
250
+ rqt-robot-dashboard==0.5.8
251
+ rqt-robot-monitor==0.5.15
252
+ rqt-runtime-monitor==0.5.10
253
+ rqt-rviz==0.7.0
254
+ rqt-tf-tree==0.6.4
255
+ rqt_action==0.4.9
256
+ rqt_bag==0.5.1
257
+ rqt_bag_plugins==0.5.1
258
+ rqt_dep==0.4.12
259
+ rqt_graph==0.4.14
260
+ rqt_gui==0.5.3
261
+ rqt_gui_py==0.5.3
262
+ rqt_launch==0.4.9
263
+ rqt_msg==0.4.10
264
+ rqt_nav_view==0.5.7
265
+ rqt_plot==0.4.13
266
+ rqt_pose_view==0.5.11
267
+ rqt_publisher==0.4.10
268
+ rqt_py_common==0.5.3
269
+ rqt_py_console==0.4.10
270
+ rqt_robot_steering==0.5.12
271
+ rqt_service_caller==0.4.10
272
+ rqt_shell==0.4.11
273
+ rqt_srv==0.4.9
274
+ rqt_top==0.4.10
275
+ rqt_topic==0.4.13
276
+ rqt_web==0.4.10
277
+ rsa==4.9
278
+ ruff==0.5.4
279
+ rviz==1.14.25
280
+ safetensors==0.4.3
281
+ scikit-image==0.24.0
282
+ scikit-video==1.1.11
283
+ scipy==1.14.0
284
+ seaborn==0.13.2
285
+ sensor-msgs==1.13.1
286
+ sentry-sdk==2.11.0
287
+ setproctitle==1.3.3
288
+ setuptools==65.5.0
289
+ shapely==2.0.5
290
+ signature_dispatch==1.0.1
291
+ six==1.16.0
292
+ smach-ros==2.5.2
293
+ smach==2.5.2
294
+ smclib==1.8.6
295
+ smmap==5.0.1
296
+ sniffio==1.3.1
297
+ soupsieve==2.5
298
+ std-msgs==0.5.13.post0
299
+ submitit==1.5.1
300
+ svg.path==6.3
301
+ sympy==1.13.1
302
+ tensorboard-data-server==0.7.2
303
+ tensorboard==2.14.0
304
+ termcolor==2.4.0
305
+ tf-conversions==1.13.2
306
+ tf2-geometry-msgs==0.7.7
307
+ tf2-kdl==0.7.7
308
+ tf2-msgs==0.7.2.post3
309
+ tf2-py==0.7.7
310
+ tf2-ros==0.6.5
311
+ tf2-ros==0.7.7
312
+ tf2_py==0.6.5.post1
313
+ tf==1.13.2
314
+ tifffile==2024.7.24
315
+ tomli==2.0.1
316
+ topic-tools==1.16.0
317
+ torch==2.4.0
318
+ torchaug==0.5.2
319
+ torchmetrics==1.4.0.post0
320
+ torchvision==0.19.0
321
+ tqdm==4.66.4
322
+ trimesh==4.4.3
323
+ triton==3.0.0
324
+ typeguard==3.0.2
325
+ typing_extensions==4.12.2
326
+ tzdata==2024.1
327
+ urchin==0.0.27
328
+ urllib3==2.2.2
329
+ vecrec==0.3.1
330
+ vhacdx==0.0.8.post1
331
+ wandb==0.17.5
332
+ wheel==0.43.0
333
+ xacro==1.14.18
334
+ xatlas==0.0.9
335
+ xxhash==3.4.1
336
+ yarl==1.9.4
337
+ zarr==2.18.2
338
+ zipp==3.19.2
339
+ zstandard==0.23.0
205317/wandb/run-20241229_205323-2n31umej/files/wandb-metadata.json ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "os": "Linux-5.15.0-125-generic-x86_64-with-glibc2.31",
3
+ "python": "3.10.14",
4
+ "heartbeatAt": "2024-12-30T01:53:24.140645",
5
+ "startedAt": "2024-12-30T01:53:23.741358",
6
+ "docker": null,
7
+ "cuda": null,
8
+ "args": [
9
+ "agent=diffusion",
10
+ "suite=frankagym",
11
+ "suite/frankagym_task@_global_=insertion"
12
+ ],
13
+ "state": "running",
14
+ "program": "/home/leonmkim/fish_leon/FISH/eval_robot.py",
15
+ "codePathLocal": null,
16
+ "codePath": "FISH/eval_robot.py",
17
+ "git": {
18
+ "remote": "https://github.com/leonmkim/fish_leon.git",
19
+ "commit": "23581857e509febdae7f0ac45cc9cf4f9081f85c"
20
+ },
21
+ "email": "leonmkim@seas.upenn.edu",
22
+ "root": "/home/leonmkim/fish_leon",
23
+ "host": "leonmkim-ROG-Strix-G15CS-G15CS",
24
+ "username": "leonmkim",
25
+ "executable": "/home/leonmkim/.pyenv/versions/lerobot/bin/python",
26
+ "cpu_count": 8,
27
+ "cpu_count_logical": 8,
28
+ "cpu_freq": {
29
+ "current": 3933.782375,
30
+ "min": 800.0,
31
+ "max": 4700.0
32
+ },
33
+ "cpu_freq_per_core": [
34
+ {
35
+ "current": 3000.0,
36
+ "min": 800.0,
37
+ "max": 4700.0
38
+ },
39
+ {
40
+ "current": 3000.0,
41
+ "min": 800.0,
42
+ "max": 4700.0
43
+ },
44
+ {
45
+ "current": 4493.128,
46
+ "min": 800.0,
47
+ "max": 4700.0
48
+ },
49
+ {
50
+ "current": 3000.0,
51
+ "min": 800.0,
52
+ "max": 4700.0
53
+ },
54
+ {
55
+ "current": 3000.0,
56
+ "min": 800.0,
57
+ "max": 4700.0
58
+ },
59
+ {
60
+ "current": 3000.0,
61
+ "min": 800.0,
62
+ "max": 4700.0
63
+ },
64
+ {
65
+ "current": 3000.0,
66
+ "min": 800.0,
67
+ "max": 4700.0
68
+ },
69
+ {
70
+ "current": 4496.933,
71
+ "min": 800.0,
72
+ "max": 4700.0
73
+ }
74
+ ],
75
+ "disk": {
76
+ "/": {
77
+ "total": 915.3232879638672,
78
+ "used": 463.0247688293457
79
+ }
80
+ },
81
+ "gpu": "NVIDIA GeForce RTX 2070 SUPER",
82
+ "gpu_count": 1,
83
+ "gpu_devices": [
84
+ {
85
+ "name": "NVIDIA GeForce RTX 2070 SUPER",
86
+ "memory_total": 8589934592
87
+ }
88
+ ],
89
+ "memory": {
90
+ "total": 62.71595764160156
91
+ }
92
+ }
205317/wandb/run-20241229_205323-2n31umej/files/wandb-summary.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"eval/0_eval": {"_type": "video-file", "sha256": "2dd247d1c4c04fa7cea7a03c76f9bcf0fac708360da8e1551f468b1b47fc66b9", "size": 1171585, "path": "media/videos/eval/0_eval_0_2dd247d1c4c04fa7cea7.mp4"}, "global_step": 660, "_timestamp": 1735523890.298451, "_runtime": 286.548122882843, "_step": 9, "eval/1_eval": {"_type": "video-file", "sha256": "f35843717fd499551c4b0926cca736afc0945a08b7388201dffb14db7ec3fefa", "size": 1166652, "path": "media/videos/eval/1_eval_1_f35843717fd499551c4b.mp4"}, "eval/num_success": 4.0, "episode": 5.0, "eval/success_rate": 0.800000011920929, "eval/2_eval": {"_type": "video-file", "sha256": "c03a74d7b4bcab766fc29ee131b9e9ac693b435c897bde76d32747b19fb58257", "size": 1184865, "path": "media/videos/eval/2_eval_2_c03a74d7b4bcab766fc2.mp4"}, "eval/3_eval": {"_type": "video-file", "sha256": "94417ff346f07f5fa23e9c53f6b0137c96c29dcb3d88023f1ed9c85959c133e3", "size": 1210929, "path": "media/videos/eval/3_eval_3_94417ff346f07f5fa23e.mp4"}, "eval/4_eval": {"_type": "video-file", "sha256": "20ea9dbf78cd7cd19362e85b72b43f16e349294c086d44f5e3adc1fd73292d66", "size": 1225749, "path": "media/videos/eval/4_eval_4_20ea9dbf78cd7cd19362.mp4"}, "_wandb": {"runtime": 286}}
205317/wandb/run-20241229_205323-2n31umej/logs/debug-internal.log ADDED
The diff for this file is too large to render. See raw diff
 
205317/wandb/run-20241229_205323-2n31umej/logs/debug.log ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_setup.py:_flush():76] Current SDK version is 0.17.5
2
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_setup.py:_flush():76] Configure stats pid to 1355277
3
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_setup.py:_flush():76] Loading settings from /home/leonmkim/.config/wandb/settings
4
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_setup.py:_flush():76] Loading settings from /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317/wandb/settings
5
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_setup.py:_flush():76] Loading settings from environment variables: {}
6
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_setup.py:_flush():76] Applying setup settings: {'_disable_service': False}
7
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [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
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_setup.py:_flush():76] Applying login settings: {}
9
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_init.py:_log_setup():529] Logging user logs to /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317/wandb/run-20241229_205323-2n31umej/logs/debug.log
10
+ 2024-12-29 20:53:23,743 INFO MainThread:1355277 [wandb_init.py:_log_setup():530] Logging internal logs to /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317/wandb/run-20241229_205323-2n31umej/logs/debug-internal.log
11
+ 2024-12-29 20:53:23,744 INFO MainThread:1355277 [wandb_init.py:init():569] calling init triggers
12
+ 2024-12-29 20:53:23,744 INFO MainThread:1355277 [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': 0, 'dataset_shuffle_seed': 5, 'device': 'cuda', 'save_video': True, 'save_train_video': True, 'use_tb': True, 'use_wandb': True, 'wandb_run_id': '1045_0', 'wandb_notes': '1045_0_', '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': False, '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': False, 'use_sdf_maps': False, 'use_normals_maps': False, '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': ['greece_twodim_nominal', 'greece_twodim_recovery'], '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': 0, '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/1045_0', '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': 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}, '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': False, 'use_sdf_maps': False, 'use_normals_maps': False, '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': 0, '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': 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}, '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': False, 'use_sdf_maps': False, 'use_normals_maps': False, '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_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/1045_0', 'residual_weight': '/home/leonmkim/fish_leon/FISH/weights/frankagym_pixels/FrankaInsertion-v1/weight.pt', 'final_experiment_dir': './exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317'}
14
+ 2024-12-29 20:53:23,744 INFO MainThread:1355277 [wandb_init.py:init():619] starting backend
15
+ 2024-12-29 20:53:23,744 INFO MainThread:1355277 [wandb_init.py:init():623] setting up manager
16
+ 2024-12-29 20:53:23,748 INFO MainThread:1355277 [backend.py:_multiprocessing_setup():105] multiprocessing start_methods=fork,spawn,forkserver, using: spawn
17
+ 2024-12-29 20:53:23,750 INFO MainThread:1355277 [wandb_init.py:init():631] backend started and connected
18
+ 2024-12-29 20:53:23,761 INFO MainThread:1355277 [wandb_init.py:init():720] updated telemetry
19
+ 2024-12-29 20:53:23,767 INFO MainThread:1355277 [wandb_init.py:init():753] communicating run to backend with 90.0 second timeout
20
+ 2024-12-29 20:53:24,005 INFO MainThread:1355277 [wandb_run.py:_on_init():2435] communicating current version
21
+ 2024-12-29 20:53:24,117 INFO MainThread:1355277 [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
+ 2024-12-29 20:53:24,117 INFO MainThread:1355277 [wandb_init.py:init():804] starting run threads in backend
24
+ 2024-12-29 20:53:24,460 INFO MainThread:1355277 [wandb_run.py:_console_start():2413] atexit reg
25
+ 2024-12-29 20:53:24,460 INFO MainThread:1355277 [wandb_run.py:_redirect():2255] redirect: wrap_raw
26
+ 2024-12-29 20:53:24,460 INFO MainThread:1355277 [wandb_run.py:_redirect():2320] Wrapping output streams.
27
+ 2024-12-29 20:53:24,460 INFO MainThread:1355277 [wandb_run.py:_redirect():2345] Redirects installed.
28
+ 2024-12-29 20:53:24,461 INFO MainThread:1355277 [wandb_init.py:init():847] run started, returning control to user process
29
+ 2024-12-29 20:53:24,462 INFO MainThread:1355277 [wandb_run.py:_tensorboard_callback():1544] tensorboard callback: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/1045_0/205317/tb, True
30
+ 2024-12-29 20:53:30,487 INFO MainThread:1355277 [wandb_run.py:_config_callback():1382] config_cb None None {'grasped_obj_name': 'greece', 'left_book_slot': 'twodim'}
31
+ 2024-12-29 20:58:20,684 WARNING MsgRouterThr:1355277 [router.py:message_loop():77] message_loop has been closed
205317/wandb/run-20241229_205323-2n31umej/run-2n31umej.wandb ADDED
Binary file (62.8 kB). View file
 
config.yaml ADDED
@@ -0,0 +1,548 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: 0
7
+ dataset_shuffle_seed: 5
8
+ device: cuda
9
+ save_video: true
10
+ save_train_video: true
11
+ use_tb: true
12
+ use_wandb: true
13
+ wandb_run_id: '1045_0'
14
+ wandb_notes: '1045_0_'
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: false
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: false
44
+ use_sdf_maps: false
45
+ use_normals_maps: false
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:
80
+ - greece_twodim_nominal
81
+ - greece_twodim_recovery
82
+ expert_dataset_config: ${expert_dataset_dirpath}/demo_config.yaml
83
+ name_of_valid_demo: 120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act
84
+ valid_dataset_dir: ${root_dir}/FISH/expert_demos/${suite.name}/${task_name}/${name_of_valid_demo}/demos.zarr
85
+ valid_demo_idxs_list_or_num: null
86
+ val_num_groups: 0
87
+ load_bc: ${agent.load_checkpoint}
88
+ checkpoint_epoch_list:
89
+ - 99
90
+ - 199
91
+ - 299
92
+ - 399
93
+ - 499
94
+ - 599
95
+ - 699
96
+ - 799
97
+ - 899
98
+ - 999
99
+ - 1249
100
+ - 1499
101
+ - 1749
102
+ - 1999
103
+ - 2999
104
+ - 3999
105
+ - 4999
106
+ - 5999
107
+ - 6999
108
+ - 7999
109
+ - 8999
110
+ - 9999
111
+ snapshot_root_dir: /mnt/grasp_high_usage/leonmkim/contact_estimation/FISH
112
+ save_snapshot: true
113
+ save_last_snapshot: true
114
+ save_snapshot_when_done: true
115
+ top_k_checkpoints: 5
116
+ save_snapshot_link_to_weights_dir: deprecated
117
+ bc_regularize: false
118
+ bc_weight_type: qfilter
119
+ experiment_dir: ./exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
120
+ agent:
121
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
122
+ name: diffusion_policy
123
+ load_checkpoint: ${eval}
124
+ device: ${device}
125
+ n_obs_steps: ${.config.policy_cfg.n_obs_steps}
126
+ suite_name: ${suite.name}
127
+ obs_type: ${obs_type}
128
+ enable_arm: ${eval}
129
+ enable_camera: ${eval}
130
+ use_tb: ${use_tb}
131
+ desired_image_shape:
132
+ - 13
133
+ - 180
134
+ - 240
135
+ orig_cam_shape:
136
+ - 3
137
+ - 240
138
+ - 320
139
+ config:
140
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
141
+ compile: false
142
+ device: ${device}
143
+ cam_resize_shape: ${agent.desired_image_shape}
144
+ orig_cam_shape: ${agent.orig_cam_shape}
145
+ policy_frequency: ${policy_frequency}
146
+ interpolation_frequency: ${interpolation_frequency}
147
+ policy_cfg:
148
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
149
+ n_obs_steps: 1
150
+ horizon: 36
151
+ n_action_steps: ${agent.config.policy_cfg.horizon}
152
+ output_shapes:
153
+ action:
154
+ - 7
155
+ input_normalization_modes:
156
+ observation.image: mean_std
157
+ observation.state: min_max
158
+ observation.action_history: min_max
159
+ output_normalization_modes:
160
+ action: min_max
161
+ vision_backbone: resnet18
162
+ pretrained_backbone_weights: null
163
+ transforms:
164
+ - _target_: torchaug.transforms.RandomAffine
165
+ degrees:
166
+ - -5
167
+ - 5
168
+ translate:
169
+ - 0.05
170
+ - 0.05
171
+ batch_transform: true
172
+ num_chunks: -1
173
+ batch_inplace: true
174
+ - _target_: torchaug.transforms.RandomColorJitter
175
+ brightness: 0.3
176
+ contrast: 0.4
177
+ saturation: 0.5
178
+ hue: 0.08
179
+ batch_transform: true
180
+ num_chunks: -1
181
+ batch_inplace: true
182
+ use_group_norm: true
183
+ spatial_softmax_num_keypoints: 32
184
+ action_history_encoder_config:
185
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
186
+ in_channels: 7
187
+ out_channels: 32
188
+ history_length: 6
189
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
190
+ downsample_kernel_size: 3
191
+ downsample_stride: 2
192
+ downsample_padding: 1
193
+ down_dims:
194
+ - 256
195
+ - 512
196
+ - 1024
197
+ kernel_size: 5
198
+ n_groups: 8
199
+ diffusion_step_embed_dim: 128
200
+ use_film_scale_modulation: true
201
+ noise_scheduler_type: DDIM
202
+ beta_schedule: squaredcos_cap_v2
203
+ beta_start: 0.0001
204
+ beta_end: 0.02
205
+ prediction_type: epsilon
206
+ clip_sample: true
207
+ clip_sample_range: 1.0
208
+ num_train_timesteps: 50
209
+ num_inference_steps: 10
210
+ do_mask_loss_for_padding: false
211
+ input_shapes:
212
+ observation.image:
213
+ - 13
214
+ - 180
215
+ - 240
216
+ context_observation.image:
217
+ - 13
218
+ - 180
219
+ - 240
220
+ observation.state:
221
+ - 8
222
+ observation.action_history:
223
+ - 7
224
+ train_cfg:
225
+ _target_: utils.TrainConfig
226
+ lr: 0.0001
227
+ lr_scheduler: cosine
228
+ lr_warmup_steps: 500
229
+ adam_betas:
230
+ - 0.95
231
+ - 0.999
232
+ adam_eps: 1.0e-08
233
+ adam_weight_decay: 1.0e-06
234
+ grad_clip_norm: 10
235
+ offline_steps: ${num_train_frames_diffusion}
236
+ use_amp: true
237
+ observation_cfg:
238
+ _target_: agent.encoder.VisualFeatureSet
239
+ use_depth: ${use_depth}
240
+ use_color: ${use_color}
241
+ mask_input_dict:
242
+ _target_: agent.encoder.MaskInputDict
243
+ enable: ${use_masks}
244
+ representation: ${mask_representation}
245
+ mask_list: ${mask_list}
246
+ crop_input_config:
247
+ _target_: agent.encoder.CropInputConfig
248
+ color_crop_type: ${color_crop_type}
249
+ depth_crop_type: ${depth_crop_type}
250
+ segmask_crop_type: ${segmask_crop_type}
251
+ crop_hw: ${crop_hw}
252
+ crop_down_offset: ${crop_down_offset}
253
+ add_crop_binary_mask: ${add_crop_binary_mask}
254
+ add_coord_conv_map: ${add_coord_conv_map}
255
+ context_input_config:
256
+ _target_: agent.encoder.ContextInputConfig
257
+ use_color: ${use_context_color}
258
+ use_depth: ${use_context_depth}
259
+ mask_input_dict:
260
+ _target_: agent.encoder.MaskInputDict
261
+ enable: ${use_context_segmask}
262
+ representation: ${mask_representation}
263
+ mask_list: ${mask_list}
264
+ crop_input_config:
265
+ _target_: agent.encoder.CropInputConfig
266
+ color_crop_type: ${context_color_crop_type}
267
+ depth_crop_type: ${context_depth_crop_type}
268
+ segmask_crop_type: ${context_segmask_crop_type}
269
+ crop_hw: ${crop_hw}
270
+ crop_down_offset: ${crop_down_offset}
271
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
272
+ add_coord_conv_map: ${context_add_coord_conv_map}
273
+ mask_soft_approx_scheduler_config:
274
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
275
+ num_steps: 40000
276
+ initial_value: 10.0
277
+ final_value: 1000.0
278
+ interpolation_scheme: cosine
279
+ use_contact_map: ${use_contact_map}
280
+ use_sdf_maps: ${use_sdf_maps}
281
+ use_normals_maps: ${use_normals_maps}
282
+ which_objects: ${which_objects}
283
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
284
+ env_dtc_max_value: ${env_dtc_max_value}
285
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
286
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
287
+ clamp_dtc: ${clamp_dtc}
288
+ max_contact_prob: ${max_contact_prob}
289
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
290
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
291
+ adaptive_normals_mask: ${adaptive_normals_mask}
292
+ max_depth: ${max_depth}
293
+ image_shape: ${agent.desired_image_shape}
294
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
295
+ learning_rate: 0.0001
296
+ weight_decay: 0.0
297
+ contact_model_name: ${contact_model_name}
298
+ zero_centered: false
299
+ suite:
300
+ suite: frankagym
301
+ name: frankagym
302
+ frame_stack: ${agent.n_obs_steps}
303
+ action_repeat: 1
304
+ discount: 0.99
305
+ hidden_dim: 1024
306
+ num_train_frames: 1000000
307
+ num_seed_frames: 0
308
+ num_train_epochs: 15000
309
+ validate_every_epochs: 250
310
+ validate_diffusion_on_action_loss_every_epochs: 250
311
+ train_eval_diffusion_on_action_loss_every_epochs: 250
312
+ check_topk_every_epochs: 250
313
+ save_snapshot_every_epochs: 1500
314
+ eval_every_frames: 2000
315
+ num_eval_episodes: 5
316
+ save_snapshot: true
317
+ wait_for_user_to_start_episode: true
318
+ task_make_fn:
319
+ _target_: suite.frankagym.make
320
+ name: ${task_name}
321
+ height: 240
322
+ width: 320
323
+ frame_stack: ${suite.frame_stack}
324
+ action_repeat: ${suite.action_repeat}
325
+ seed: ${seed}
326
+ enable_arm: ${agent.enable_arm}
327
+ enable_gripper: ${enable_gripper}
328
+ start_with_gripper_open: ${start_with_gripper_open}
329
+ enable_camera: ${agent.enable_camera}
330
+ path_to_depth_extrinsics: ${path_to_depth_extrinsics}
331
+ contact_estimation_model_ckpt_path: ${contact_estimation_model_ckpt_path}
332
+ x_limit: ${x_limit}
333
+ y_limit: ${y_limit}
334
+ z_limit: ${z_limit}
335
+ device: ${device}
336
+ interpolation_frequency: ${interpolation_frequency}
337
+ policy_frequency: ${policy_frequency}
338
+ debug_timestamps: ${debug_timestamps}
339
+ stop_after_action: ${stop_after_action}
340
+ open_loop: ${open_loop}
341
+ wait_for_new_camera_frames: ${wait_for_new_camera_frames}
342
+ action_key: ${action_key}
343
+ action_trajectory_horizon: ${agent.config.policy_cfg.horizon}
344
+ action_trajectories: ${action_trajectories}
345
+ path_to_zarr_dataset: ${expert_dataset}
346
+ agent_policy_cfg:
347
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
348
+ compile: false
349
+ device: ${device}
350
+ cam_resize_shape: ${agent.desired_image_shape}
351
+ orig_cam_shape: ${agent.orig_cam_shape}
352
+ policy_frequency: ${policy_frequency}
353
+ interpolation_frequency: ${interpolation_frequency}
354
+ policy_cfg:
355
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
356
+ n_obs_steps: 1
357
+ horizon: 36
358
+ n_action_steps: ${agent.config.policy_cfg.horizon}
359
+ output_shapes:
360
+ action:
361
+ - 7
362
+ input_normalization_modes:
363
+ observation.image: mean_std
364
+ observation.state: min_max
365
+ observation.action_history: min_max
366
+ output_normalization_modes:
367
+ action: min_max
368
+ vision_backbone: resnet18
369
+ pretrained_backbone_weights: null
370
+ transforms:
371
+ - _target_: torchaug.transforms.RandomAffine
372
+ degrees:
373
+ - -5
374
+ - 5
375
+ translate:
376
+ - 0.05
377
+ - 0.05
378
+ batch_transform: true
379
+ num_chunks: -1
380
+ batch_inplace: true
381
+ - _target_: torchaug.transforms.RandomColorJitter
382
+ brightness: 0.3
383
+ contrast: 0.4
384
+ saturation: 0.5
385
+ hue: 0.08
386
+ batch_transform: true
387
+ num_chunks: -1
388
+ batch_inplace: true
389
+ use_group_norm: true
390
+ spatial_softmax_num_keypoints: 32
391
+ action_history_encoder_config:
392
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
393
+ in_channels: 7
394
+ out_channels: 32
395
+ history_length: 6
396
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
397
+ downsample_kernel_size: 3
398
+ downsample_stride: 2
399
+ downsample_padding: 1
400
+ down_dims:
401
+ - 256
402
+ - 512
403
+ - 1024
404
+ kernel_size: 5
405
+ n_groups: 8
406
+ diffusion_step_embed_dim: 128
407
+ use_film_scale_modulation: true
408
+ noise_scheduler_type: DDIM
409
+ beta_schedule: squaredcos_cap_v2
410
+ beta_start: 0.0001
411
+ beta_end: 0.02
412
+ prediction_type: epsilon
413
+ clip_sample: true
414
+ clip_sample_range: 1.0
415
+ num_train_timesteps: 50
416
+ num_inference_steps: 10
417
+ do_mask_loss_for_padding: false
418
+ input_shapes:
419
+ observation.image:
420
+ - 13
421
+ - 180
422
+ - 240
423
+ context_observation.image:
424
+ - 13
425
+ - 180
426
+ - 240
427
+ observation.state:
428
+ - 8
429
+ observation.action_history:
430
+ - 7
431
+ train_cfg:
432
+ _target_: utils.TrainConfig
433
+ lr: 0.0001
434
+ lr_scheduler: cosine
435
+ lr_warmup_steps: 500
436
+ adam_betas:
437
+ - 0.95
438
+ - 0.999
439
+ adam_eps: 1.0e-08
440
+ adam_weight_decay: 1.0e-06
441
+ grad_clip_norm: 10
442
+ offline_steps: ${num_train_frames_diffusion}
443
+ use_amp: true
444
+ observation_cfg:
445
+ _target_: agent.encoder.VisualFeatureSet
446
+ use_depth: ${use_depth}
447
+ use_color: ${use_color}
448
+ mask_input_dict:
449
+ _target_: agent.encoder.MaskInputDict
450
+ enable: ${use_masks}
451
+ representation: ${mask_representation}
452
+ mask_list: ${mask_list}
453
+ crop_input_config:
454
+ _target_: agent.encoder.CropInputConfig
455
+ color_crop_type: ${color_crop_type}
456
+ depth_crop_type: ${depth_crop_type}
457
+ segmask_crop_type: ${segmask_crop_type}
458
+ crop_hw: ${crop_hw}
459
+ crop_down_offset: ${crop_down_offset}
460
+ add_crop_binary_mask: ${add_crop_binary_mask}
461
+ add_coord_conv_map: ${add_coord_conv_map}
462
+ context_input_config:
463
+ _target_: agent.encoder.ContextInputConfig
464
+ use_color: ${use_context_color}
465
+ use_depth: ${use_context_depth}
466
+ mask_input_dict:
467
+ _target_: agent.encoder.MaskInputDict
468
+ enable: ${use_context_segmask}
469
+ representation: ${mask_representation}
470
+ mask_list: ${mask_list}
471
+ crop_input_config:
472
+ _target_: agent.encoder.CropInputConfig
473
+ color_crop_type: ${context_color_crop_type}
474
+ depth_crop_type: ${context_depth_crop_type}
475
+ segmask_crop_type: ${context_segmask_crop_type}
476
+ crop_hw: ${crop_hw}
477
+ crop_down_offset: ${crop_down_offset}
478
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
479
+ add_coord_conv_map: ${context_add_coord_conv_map}
480
+ mask_soft_approx_scheduler_config:
481
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
482
+ num_steps: 40000
483
+ initial_value: 10.0
484
+ final_value: 1000.0
485
+ interpolation_scheme: cosine
486
+ use_contact_map: ${use_contact_map}
487
+ use_sdf_maps: ${use_sdf_maps}
488
+ use_normals_maps: ${use_normals_maps}
489
+ which_objects: ${which_objects}
490
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
491
+ env_dtc_max_value: ${env_dtc_max_value}
492
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
493
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
494
+ clamp_dtc: ${clamp_dtc}
495
+ max_contact_prob: ${max_contact_prob}
496
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
497
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
498
+ adaptive_normals_mask: ${adaptive_normals_mask}
499
+ max_depth: ${max_depth}
500
+ image_shape: ${agent.desired_image_shape}
501
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
502
+ learning_rate: 0.0001
503
+ weight_decay: 0.0
504
+ contact_model_name: ${contact_model_name}
505
+ zero_centered: false
506
+ true_action_history: ${true_action_history}
507
+ num_train_frames_bc: 50000
508
+ num_train_frames_drq: 1100000
509
+ stddev_schedule_drq: linear(1.0,0.1,100000)
510
+ task_name: FrankaInsertion-v1
511
+ num_train_frames_vinn: 25000
512
+ num_train_frames_diffusion: 1000000
513
+ num_train_epochs_bc: 5000
514
+ num_train_epochs_diffusion: 15000
515
+ validate_every_epochs_bc: 5
516
+ validate_every_epochs_diffusion: 250
517
+ validate_diffusion_on_action_loss_every_epochs: 250
518
+ train_eval_diffusion_on_action_loss_every_epochs: 250
519
+ check_topk_every_epochs: 5
520
+ check_topk_every_epochs_diffusion: 250
521
+ save_snapshot_every_epochs_diffusion: 1500
522
+ x_limit:
523
+ - 0.2
524
+ - 0.7
525
+ y_limit:
526
+ - -0.4
527
+ - 0.4
528
+ z_limit:
529
+ - -0.05
530
+ - 0.55
531
+ home_displacement:
532
+ - 0.55
533
+ - 0.0
534
+ - 0.55
535
+ - 180.0
536
+ - 0.0
537
+ - 0.0
538
+ enable_gripper: true
539
+ start_with_gripper_open: true
540
+ offset_mask:
541
+ - 1
542
+ - 1
543
+ - 1
544
+ - 1
545
+ - 1
546
+ - 1
547
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
548
+ feature_type: 180x240_1_RGB_D_2.0_acthst_hst6_out32_dwnkrnl3_dwnstrd2_dwnpd1
snapshot_10500.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a969ffbdc5d4f82b42645ee428ed42ce53516504ab5469a4a8b03ada3af4386d
3
+ size 910064728
snapshot_12000.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c57f96ed3083c018508a64fca7c89aa2aa61eb201819d2b71e84551952c8413f
3
+ size 910064728
snapshot_12999.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:83031bd9a71dace532377d29868da3976cae276f497779868fb835c55d98a62a
3
+ size 910064728
snapshot_13500.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a6dc9172d30a9852821d1a0d74fc847537782edceca8e6d76dd2af5224f4816e
3
+ size 910064728