serialexperimentsleon commited on
Commit
7a1619a
·
verified ·
1 Parent(s): 3923371

Add files using upload-large-folder tool

Browse files
Files changed (26) hide show
  1. .gitattributes +11 -0
  2. 1rhki7g4/.hydra/config.yaml +352 -0
  3. 1rhki7g4/.hydra/hydra.yaml +169 -0
  4. 1rhki7g4/.hydra/overrides.yaml +3 -0
  5. 1rhki7g4/episode_rosbags/episode_3_2025-01-21-22-25-20.bag +3 -0
  6. 1rhki7g4/eval_video/0_eval.mp4 +3 -0
  7. 1rhki7g4/eval_video/1_eval.mp4 +3 -0
  8. 1rhki7g4/eval_video/2_eval.mp4 +3 -0
  9. 1rhki7g4/eval_video/3_eval.mp4 +3 -0
  10. 1rhki7g4/eval_video/4_eval.mp4 +3 -0
  11. 1rhki7g4/tb/events.out.tfevents.1737516139.leonmkim-ROG-Strix-G15CS-G15CS.2665365.0 +3 -0
  12. 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/code/FISH/eval_robot.py +606 -0
  13. 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/table/eval/success_rate_ci_5_e4f3d858401fb0f04765.table.json +1 -0
  14. 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/table/eval/total_success_rate_ci_6_06392b86e92c89b6b251.table.json +1 -0
  15. 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/videos/eval/0_eval_0_6d4609e89d3ba1e1c763.mp4 +3 -0
  16. 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/videos/eval/1_eval_1_e6e0be02eedcefa21d59.mp4 +3 -0
  17. 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/videos/eval/2_eval_2_941ccc9a5f52aef980c0.mp4 +3 -0
  18. 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/videos/eval/3_eval_3_56c00d964e4ff84c9625.mp4 +3 -0
  19. 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/videos/eval/4_eval_4_92faad0d5acbe7e41d66.mp4 +3 -0
  20. 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/output.log +276 -0
  21. 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/wandb-metadata.json +92 -0
  22. 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/logs/debug-internal.log +0 -0
  23. 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/logs/debug.log +31 -0
  24. snapshot_10500.pt +3 -0
  25. snapshot_4500.pt +3 -0
  26. snapshot_6000.pt +3 -0
.gitattributes CHANGED
@@ -67,3 +67,14 @@ pkbouru1/eval_video/1_eval.mp4 filter=lfs diff=lfs merge=lfs -text
67
  pkbouru1/eval_video/2_eval.mp4 filter=lfs diff=lfs merge=lfs -text
68
  pkbouru1/eval_video/0_eval.mp4 filter=lfs diff=lfs merge=lfs -text
69
  1rhki7g4/episode_rosbags/episode_4_2025-01-21-22-25-50.bag filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
67
  pkbouru1/eval_video/2_eval.mp4 filter=lfs diff=lfs merge=lfs -text
68
  pkbouru1/eval_video/0_eval.mp4 filter=lfs diff=lfs merge=lfs -text
69
  1rhki7g4/episode_rosbags/episode_4_2025-01-21-22-25-50.bag filter=lfs diff=lfs merge=lfs -text
70
+ 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/videos/eval/2_eval_2_941ccc9a5f52aef980c0.mp4 filter=lfs diff=lfs merge=lfs -text
71
+ 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/videos/eval/0_eval_0_6d4609e89d3ba1e1c763.mp4 filter=lfs diff=lfs merge=lfs -text
72
+ 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/videos/eval/1_eval_1_e6e0be02eedcefa21d59.mp4 filter=lfs diff=lfs merge=lfs -text
73
+ 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/videos/eval/4_eval_4_92faad0d5acbe7e41d66.mp4 filter=lfs diff=lfs merge=lfs -text
74
+ 1rhki7g4/eval_video/2_eval.mp4 filter=lfs diff=lfs merge=lfs -text
75
+ 1rhki7g4/eval_video/4_eval.mp4 filter=lfs diff=lfs merge=lfs -text
76
+ 1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/videos/eval/3_eval_3_56c00d964e4ff84c9625.mp4 filter=lfs diff=lfs merge=lfs -text
77
+ 1rhki7g4/eval_video/1_eval.mp4 filter=lfs diff=lfs merge=lfs -text
78
+ 1rhki7g4/eval_video/3_eval.mp4 filter=lfs diff=lfs merge=lfs -text
79
+ 1rhki7g4/eval_video/0_eval.mp4 filter=lfs diff=lfs merge=lfs -text
80
+ 1rhki7g4/episode_rosbags/episode_3_2025-01-21-22-25-20.bag filter=lfs diff=lfs merge=lfs -text
1rhki7g4/.hydra/config.yaml ADDED
@@ -0,0 +1,352 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: '4295_2'
79
+ true_action_history: false
80
+ wandb_notes: null
81
+ checkpoint_epoch: 7500
82
+ load_residual_weight: false
83
+ checkpoint_root_dir: /home/${oc.env:USER}/fish_leon/FISH
84
+ checkpoint_weight_dir: ${checkpoint_root_dir}/exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
85
+ residual_weight: ${root_dir}/FISH/weights/${suite.name}_${obs_type}/${task_name}/weight.pt
86
+ experiment_dir: ./exp_local/${suite.name}_${obs_type}/${task_name}/${wandb_run_id}
87
+ final_experiment_dir: ${experiment_dir}/${oc.generate_run_id:}
88
+ agent:
89
+ _target_: agent.diffusion_policy.DiffusionPolicyAgent
90
+ name: diffusion_policy
91
+ load_checkpoint: ${eval}
92
+ device: ${device}
93
+ n_obs_steps: ${.config.policy_cfg.n_obs_steps}
94
+ suite_name: ${suite.name}
95
+ obs_type: ${obs_type}
96
+ enable_arm: ${eval}
97
+ enable_camera: ${eval}
98
+ use_tb: ${use_tb}
99
+ desired_image_shape:
100
+ - 13
101
+ - 180
102
+ - 240
103
+ orig_cam_shape:
104
+ - 3
105
+ - 240
106
+ - 320
107
+ config:
108
+ _target_: agent.diffusion_policy.DiffusionPolicyAgentConfig
109
+ compile: false
110
+ device: ${device}
111
+ cam_resize_shape: ${agent.desired_image_shape}
112
+ orig_cam_shape: ${agent.orig_cam_shape}
113
+ policy_frequency: ${policy_frequency}
114
+ interpolation_frequency: ${interpolation_frequency}
115
+ policy_cfg:
116
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.DiffusionConfig
117
+ n_obs_steps: 1
118
+ horizon: 36
119
+ n_action_steps: ${agent.config.policy_cfg.horizon}
120
+ input_shapes:
121
+ observation.image: ${agent.config.cam_resize_shape}
122
+ context_observation.image: ${agent.config.cam_resize_shape}
123
+ observation.state:
124
+ - 8
125
+ observation.action_history:
126
+ - 7
127
+ output_shapes:
128
+ action:
129
+ - 7
130
+ input_normalization_modes:
131
+ observation.image: mean_std
132
+ observation.state: min_max
133
+ observation.action_history: min_max
134
+ output_normalization_modes:
135
+ action: min_max
136
+ vision_backbone: resnet18
137
+ crop_distractors_tlhw: null
138
+ pretrained_backbone_weights: null
139
+ transforms:
140
+ - _target_: torchaug.transforms.RandomAffine
141
+ degrees:
142
+ - -5
143
+ - 5
144
+ translate:
145
+ - 0.05
146
+ - 0.05
147
+ batch_transform: true
148
+ num_chunks: -1
149
+ batch_inplace: true
150
+ - _target_: torchaug.transforms.RandomColorJitter
151
+ brightness: 0.3
152
+ contrast: 0.4
153
+ saturation: 0.5
154
+ hue: 0.08
155
+ batch_transform: true
156
+ num_chunks: -1
157
+ batch_inplace: true
158
+ use_group_norm: true
159
+ spatial_softmax_num_keypoints: 32
160
+ action_history_encoder_config:
161
+ _target_: lerobot.common.policies.diffusion.configuration_diffusion.Unet1dEncoderConfig
162
+ in_channels: 7
163
+ out_channels: 32
164
+ history_length: ${agent.config.policy_cfg.n_action_steps}
165
+ kernel_size: ${agent.config.policy_cfg.kernel_size}
166
+ downsample_kernel_size: 3
167
+ downsample_stride: 2
168
+ downsample_padding: 1
169
+ down_dims:
170
+ - 256
171
+ - 512
172
+ - 1024
173
+ kernel_size: 5
174
+ n_groups: 8
175
+ diffusion_step_embed_dim: 128
176
+ use_film_scale_modulation: true
177
+ noise_scheduler_type: DDIM
178
+ beta_schedule: squaredcos_cap_v2
179
+ beta_start: 0.0001
180
+ beta_end: 0.02
181
+ prediction_type: epsilon
182
+ clip_sample: true
183
+ clip_sample_range: 1.0
184
+ num_train_timesteps: 50
185
+ num_inference_steps: 10
186
+ do_mask_loss_for_padding: false
187
+ train_cfg:
188
+ _target_: utils.TrainConfig
189
+ lr: 0.0001
190
+ lr_scheduler: cosine
191
+ lr_warmup_steps: 500
192
+ adam_betas:
193
+ - 0.95
194
+ - 0.999
195
+ adam_eps: 1.0e-08
196
+ adam_weight_decay: 1.0e-06
197
+ grad_clip_norm: 10
198
+ offline_steps: ${num_train_frames_diffusion}
199
+ use_amp: true
200
+ observation_cfg:
201
+ _target_: agent.encoder.VisualFeatureSet
202
+ use_depth: ${use_depth}
203
+ use_color: ${use_color}
204
+ mask_input_dict:
205
+ _target_: agent.encoder.MaskInputDict
206
+ enable: ${use_masks}
207
+ representation: ${mask_representation}
208
+ mask_list: ${mask_list}
209
+ crop_input_config:
210
+ _target_: agent.encoder.CropInputConfig
211
+ color_crop_type: ${color_crop_type}
212
+ depth_crop_type: ${depth_crop_type}
213
+ segmask_crop_type: ${segmask_crop_type}
214
+ crop_hw: ${crop_hw}
215
+ crop_down_offset: ${crop_down_offset}
216
+ add_crop_binary_mask: ${add_crop_binary_mask}
217
+ add_coord_conv_map: ${add_coord_conv_map}
218
+ context_input_config:
219
+ _target_: agent.encoder.ContextInputConfig
220
+ use_color: ${use_context_color}
221
+ use_depth: ${use_context_depth}
222
+ mask_input_dict:
223
+ _target_: agent.encoder.MaskInputDict
224
+ enable: ${use_context_segmask}
225
+ representation: ${mask_representation}
226
+ mask_list: ${mask_list}
227
+ crop_input_config:
228
+ _target_: agent.encoder.CropInputConfig
229
+ color_crop_type: ${context_color_crop_type}
230
+ depth_crop_type: ${context_depth_crop_type}
231
+ segmask_crop_type: ${context_segmask_crop_type}
232
+ crop_hw: ${crop_hw}
233
+ crop_down_offset: ${crop_down_offset}
234
+ add_crop_binary_mask: ${context_add_crop_binary_mask}
235
+ add_coord_conv_map: ${context_add_coord_conv_map}
236
+ mask_soft_approx_scheduler_config:
237
+ _target_: agent.encoder.MaskSoftApproxSchedulerConfig
238
+ num_steps: 40000
239
+ initial_value: 10.0
240
+ final_value: 1000.0
241
+ interpolation_scheme: constant
242
+ use_contact_map: ${use_contact_map}
243
+ use_sdf_maps: ${use_sdf_maps}
244
+ use_normals_maps: ${use_normals_maps}
245
+ which_objects: ${which_objects}
246
+ grasped_dtc_max_value: ${grasped_dtc_max_value}
247
+ env_dtc_max_value: ${env_dtc_max_value}
248
+ grasped_normals_mask_max_dtc_value: ${grasped_normals_mask_max_dtc_value}
249
+ env_normals_mask_max_dtc_value: ${env_normals_mask_max_dtc_value}
250
+ clamp_dtc: ${clamp_dtc}
251
+ max_contact_prob: ${max_contact_prob}
252
+ mask_normals_within_sdf: ${mask_normals_within_sdf}
253
+ dtc_adaptive_normalization: ${dtc_adaptive_normalization}
254
+ adaptive_normals_mask: ${adaptive_normals_mask}
255
+ max_depth: ${max_depth}
256
+ image_shape: ${agent.desired_image_shape}
257
+ learnable_contact_preprocess_params: ${learnable_contact_preprocess_params}
258
+ learning_rate: ${agent.config.train_cfg.lr}
259
+ weight_decay: 0.0
260
+ contact_model_name: ${contact_model_name}
261
+ zero_centered: false
262
+ crop_distractors_tlhw: ${agent.config.policy_cfg.crop_distractors_tlhw}
263
+ suite:
264
+ suite: frankagym
265
+ name: frankagym
266
+ frame_stack: ${agent.n_obs_steps}
267
+ action_repeat: 1
268
+ discount: 0.99
269
+ hidden_dim: 1024
270
+ num_train_frames: 2010
271
+ num_seed_frames: 260
272
+ num_train_epochs: 5000
273
+ validate_every_epochs: 100
274
+ validate_diffusion_on_action_loss_every_epochs: 500
275
+ train_eval_diffusion_on_action_loss_every_epochs: 500
276
+ check_topk_every_epochs: 10
277
+ save_snapshot_every_epochs: 5000
278
+ eval_every_frames: 2000
279
+ num_eval_episodes: 5
280
+ save_snapshot: true
281
+ wait_for_user_to_start_episode: true
282
+ task_make_fn:
283
+ _target_: suite.frankagym.make
284
+ name: ${task_name}
285
+ height: 240
286
+ width: 320
287
+ frame_stack: ${suite.frame_stack}
288
+ action_repeat: ${suite.action_repeat}
289
+ seed: ${seed}
290
+ enable_arm: ${agent.enable_arm}
291
+ enable_gripper: ${enable_gripper}
292
+ start_with_gripper_open: ${start_with_gripper_open}
293
+ enable_camera: ${agent.enable_camera}
294
+ path_to_depth_extrinsics: ${path_to_depth_extrinsics}
295
+ contact_estimation_model_ckpt_path: ${contact_estimation_model_ckpt_path}
296
+ x_limit: ${x_limit}
297
+ y_limit: ${y_limit}
298
+ z_limit: ${z_limit}
299
+ device: ${device}
300
+ interpolation_frequency: ${interpolation_frequency}
301
+ policy_frequency: ${policy_frequency}
302
+ debug_timestamps: ${debug_timestamps}
303
+ stop_after_action: ${stop_after_action}
304
+ open_loop: ${open_loop}
305
+ wait_for_new_camera_frames: ${wait_for_new_camera_frames}
306
+ action_key: ${action_key}
307
+ action_trajectory_horizon: ${agent.config.policy_cfg.horizon}
308
+ action_trajectories: ${action_trajectories}
309
+ path_to_zarr_dataset: ${expert_dataset}
310
+ agent_policy_cfg: ???
311
+ true_action_history: ${true_action_history}
312
+ num_train_frames_bc: 50000
313
+ num_train_frames_drq: 1100000
314
+ stddev_schedule_drq: linear(1.0,0.1,100000)
315
+ task_name: FrankaInsertion-v1
316
+ num_train_frames_vinn: 25000
317
+ num_train_frames_diffusion: 1000000
318
+ num_train_epochs_bc: 5000
319
+ num_train_epochs_diffusion: 5000
320
+ validate_every_epochs_bc: 5
321
+ validate_every_epochs_diffusion: 25
322
+ validate_diffusion_on_action_loss_every_epochs: 50
323
+ train_eval_diffusion_on_action_loss_every_epochs: 500
324
+ check_topk_every_epochs: 5
325
+ check_topk_every_epochs_diffusion: ${validate_diffusion_on_action_loss_every_epochs}
326
+ save_snapshot_every_epochs_diffusion: 5000
327
+ x_limit:
328
+ - 0.2
329
+ - 0.7
330
+ y_limit:
331
+ - -0.4
332
+ - 0.4
333
+ z_limit:
334
+ - -0.05
335
+ - 0.55
336
+ home_displacement:
337
+ - 0.55
338
+ - 0.0
339
+ - 0.55
340
+ - 180.0
341
+ - 0.0
342
+ - 0.0
343
+ enable_gripper: true
344
+ start_with_gripper_open: true
345
+ offset_mask:
346
+ - 1
347
+ - 1
348
+ - 1
349
+ - 1
350
+ - 1
351
+ - 1
352
+ path_to_depth_extrinsics: ~/fish_leon/FISH/cfgs/camera_poses/camera_poses_L515/20240904-122305/color_tf_world.npy
1rhki7g4/.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/4295_2/1rhki7g4
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
1rhki7g4/.hydra/overrides.yaml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ - agent=diffusion
2
+ - suite=frankagym
3
+ - suite/frankagym_task@_global_=insertion
1rhki7g4/episode_rosbags/episode_3_2025-01-21-22-25-20.bag ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ea028bedf22012f9b98f689f1026a4f02c5e43cd754c72cf648a14c77b981e1f
3
+ size 1111920180
1rhki7g4/eval_video/0_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6d4609e89d3ba1e1c763d7eb0ec112a8c34479fbc6b28c43c867a6501ad50990
3
+ size 1562624
1rhki7g4/eval_video/1_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e6e0be02eedcefa21d59a5b50479ceefd38236aa85cb872ea490559629138b67
3
+ size 1512993
1rhki7g4/eval_video/2_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:941ccc9a5f52aef980c0fa54fba565d745079da7a8e524f2dca8c0f882ee6bee
3
+ size 1505327
1rhki7g4/eval_video/3_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:56c00d964e4ff84c96255a775a3ecd34a00f156a18f72e4b1d9942ba4eeaee52
3
+ size 853060
1rhki7g4/eval_video/4_eval.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:92faad0d5acbe7e41d66e6f8ad175a9379c31c73d7d97f545eef706643b2d096
3
+ size 1012519
1rhki7g4/tb/events.out.tfevents.1737516139.leonmkim-ROG-Strix-G15CS-G15CS.2665365.0 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dc86d3e82b728207ce0354afdb59d28c578561583d1bc5dd08416be18081e637
3
+ size 6539
1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/code/FISH/eval_robot.py ADDED
@@ -0,0 +1,606 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #%%
2
+ import warnings
3
+ import os
4
+
5
+ os.environ['MKL_SERVICE_FORCE_INTEL'] = '1'
6
+ os.environ['MUJOCO_GL'] = 'egl'
7
+ from pathlib import Path
8
+ #%%
9
+ import hydra
10
+ import numpy as np
11
+ import torch
12
+
13
+ import utils
14
+ from utils import get_feature_dirname_from_configs
15
+
16
+ from video import VideoRecorder
17
+ import pickle
18
+ import time
19
+ import threading
20
+ import shutil
21
+ from logger import Logger
22
+
23
+ import wandb
24
+ from omegaconf import OmegaConf, open_dict
25
+
26
+ from replay_buffer_robot import RosbagEvalReplayBufferStorage
27
+ from lerobot.common.utils.utils import _relative_path_between
28
+
29
+ torch.backends.cudnn.benchmark = True
30
+ warnings.filterwarnings('ignore', category=DeprecationWarning)
31
+
32
+ # import specs for replay buffer
33
+ from dm_env import specs
34
+
35
+ import sys, signal
36
+ import yaml
37
+
38
+ import binomial_cis as bc
39
+
40
+ # get path of current file
41
+ current_path = os.path.dirname(os.path.realpath(__file__))
42
+ sys.path.append(os.path.join(current_path, os.pardir))
43
+ # from contact_estimation.src.utils.viz_utils import normalized_surface_normal_to_rgb, depth_map_to_im, grasped_env_dtc_map_to_im, contact_prob_map_to_im, desaturate_color_image, masked_overlay_im_list
44
+
45
+ def make_agent(obs_spec, action_spec, cfg):
46
+ cfg.obs_shape = obs_spec['pixels'].shape
47
+ dataset_statistics = None # this will be loaded from the checkpoint
48
+ try:
49
+ cfg.action_shape = action_spec.shape
50
+ except:
51
+ pass
52
+ return hydra.utils.instantiate(cfg, dataset_statistics)
53
+
54
+ class Workspace:
55
+ def __init__(self, cfg):
56
+ self.work_dir = Path.cwd()
57
+ print(f'workspace: {self.work_dir}')
58
+
59
+ signal.signal(signal.SIGINT, self.signal_handler)
60
+
61
+ self.cfg = cfg
62
+ self.loading_uncompiled_checkpoint_with_compile = False
63
+ self.loading_compiled_checkpoint_with_no_compile = False
64
+
65
+ snapshot_path = Path(self.cfg.checkpoint_weight_dir) / f'snapshot_{self.cfg.checkpoint_epoch}.pt'
66
+ self.load_checkpoint_conf(snapshot_path=snapshot_path)
67
+
68
+ # load config for action trajectories
69
+ utils.set_seed_everywhere(self.cfg.seed)
70
+ self.device = torch.device(self.cfg.device)
71
+ self.setup()
72
+
73
+ # self.agent = make_agent(self.eval_env.observation_spec(),
74
+ # self.eval_env.action_spec(), self.cfg.agent)
75
+ self.timer = utils.Timer()
76
+ # self._global_step = 0
77
+ self._global_episode = 0
78
+ self._global_epoch = 0
79
+ self.num_episode_successes = 0
80
+
81
+ self.alpha_range = [.01, .025, .05, .1]
82
+
83
+ # Need to convert hydra config to primitive container for wandb https://docs.wandb.ai/guides/integrations/hydra
84
+ with open_dict(self.cfg):
85
+ self.cfg.feature_type = get_feature_dirname_from_configs(
86
+ hydra.utils.instantiate(self.cfg.agent.config),
87
+ # hydra.utils.instantiate(self.cfg.agent.config.observation_cfg),
88
+ # self.cfg.agent.config.policy_cfg.input_shapes,
89
+ # 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,
90
+ )
91
+
92
+ wandb_config = OmegaConf.to_container(
93
+ self.cfg, resolve=True, throw_on_missing=True
94
+ )
95
+ # must be called before any tf summary writer is created
96
+ if self.cfg.use_wandb:
97
+ # get the run id from the final_experiment_dir directory
98
+ run_id = os.path.basename(os.path.normpath(self.cfg.final_experiment_dir))
99
+ wandb.init(project='extrinsic_contact_downstream', entity='serialexperimentsleon', job_type='eval', sync_tensorboard=self.cfg.use_tb, config=wandb_config, id=run_id)
100
+
101
+ self.logger = Logger(self.work_dir, use_tb=self.cfg.use_tb, use_wandb=self.cfg.use_wandb)
102
+
103
+ # if not self.loading_uncompiled_checkpoint_with_compile and self.cfg.agent.config.compile:
104
+ # self.agent.compile_modules()
105
+
106
+ # self.load_checkpoint(snapshot_path=snapshot_path)
107
+
108
+ # if self.loading_uncompiled_checkpoint_with_compile: # need to call compile after loading the checkpoint
109
+ # self.agent.compile_modules()
110
+
111
+ print(f"loaded agent with feature_type: {self.cfg.feature_type}")
112
+
113
+ def check_for_key_press(self):
114
+ while self.continue_keypress_thread:
115
+ inp = input("Press 'r' to restart current episode, 'n' to stop current episode and skip to next, 'q' to break entire eval\n")
116
+ if inp == 'n':
117
+ self.preempt_episode = True
118
+ print("preempting episode")
119
+ elif inp in ['', '0', '1']: # enter key
120
+ if inp in ['0', '1']:
121
+ self.num_episode_successes += int(inp)
122
+ self.proceed_after_env_reset_event.set()
123
+ print("proceeding to start episode!")
124
+ elif inp == 'q':
125
+ self.proceed_after_env_reset_event.set()
126
+ self.preempt_episode = True
127
+ self.exit_eval = True
128
+ self.continue_keypress_thread = False # will stop the keypress thread
129
+ print("quitting eval")
130
+ break
131
+ elif inp == 'r':
132
+ print('restarting episode')
133
+ self.preempt_episode = True
134
+ self.restart_episode = True
135
+ else:
136
+ print("Invalid key press, try again")
137
+
138
+ # self.keypress_input_thread.join() # wait for the keypress thread to finish
139
+
140
+ def signal_handler(self, signal, frame):
141
+ print("\nprogram exiting gracefully")
142
+ self.proceed_after_env_reset_event.set()
143
+ self.preempt_episode = True
144
+ self.exit_eval = True
145
+ self.continue_keypress_thread = False # will stop the keypress thread
146
+ self.keypress_input_thread.join() # wait for the keypress thread to finish
147
+ video_filepath = self.video_recorder.save()
148
+ # get the video file and convert to video tensor to log
149
+ self.logger.log_video('eval/video', video_filepath, self.global_step)
150
+ wandb.finish()
151
+ sys.exit(0)
152
+
153
+ def setup(self):
154
+ # create envs
155
+ self.eval_env = hydra.utils.call(self.cfg.suite.task_make_fn)
156
+ # expert_demo_config_path = os.path.join(os.path.dirname(self.cfg.expert_dataset), 'demo_config.yaml')
157
+ # self.expert_demo_config = yaml.load(open(expert_demo_config_path, 'r'), Loader=yaml.FullLoader)
158
+ # self.eval_env._env.action_trans_norm = expert_demo_config['max_translation_action_norm']
159
+ # self.eval_env._env.action_rot_norm = expert_demo_config['max_rotation_action_norm']
160
+ # self.eval_env._env.action_period = expert_demo_config['sample_period']
161
+ # print(f"setting max_translation_action_norm to {expert_demo_config['max_translation_action_norm']} and sample_period to {expert_demo_config['sample_period']}")
162
+ # print(f"setting max_rotation_action_norm to {expert_demo_config['max_rotation_action_norm']}")
163
+
164
+ # self.eval_env.set_demo_params(self.cfg.expert_dataset)
165
+
166
+ # Turn off random start
167
+ self.eval_env.random_start = False
168
+
169
+ # create replay buffer
170
+ # data_specs = [
171
+ # {
172
+ # 'observation': self.eval_env.observation_spec(),
173
+ # },
174
+ # # self.eval_env.observation_spec()['features'],
175
+ # self.eval_env.action_spec(),
176
+ # specs.Array(self.eval_env.action_spec().shape, self.eval_env.action_spec().dtype, 'vinn_action'),
177
+ # specs.Array((1, ), np.float32, 'reward'),
178
+ # specs.Array((1, ), np.float32, 'discount'),
179
+ # ]
180
+
181
+ # 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())
182
+ self.eval_replay_storage = RosbagEvalReplayBufferStorage(self.work_dir)
183
+
184
+ self.video_recorder = VideoRecorder(
185
+ self.work_dir if self.cfg.save_video else None,
186
+ ros_enabled=True,
187
+ fps=self.cfg.agent.config.policy_frequency,
188
+ )
189
+
190
+ print('workspace setup complete')
191
+
192
+ @property
193
+ def global_step(self):
194
+ # return self._global_step
195
+ return self.eval_env.get_global_step()
196
+
197
+ @property
198
+ def global_episode(self):
199
+ return self._global_episode
200
+
201
+ @property
202
+ def global_frame(self):
203
+ return self.global_step * self.cfg.action_repeat
204
+
205
+ @property
206
+ def global_epoch(self):
207
+ return self._global_epoch
208
+
209
+ def reset(self, eval_idx):
210
+ if not self.eval_env.enable_arm:
211
+ return np.array([0,0,0], dtype=np.float32)
212
+ self.eval_env.arm_refresh(reset=False)
213
+ # Set start position
214
+ try:
215
+ self.eval_env.set_position(self.start_pos[eval_idx])
216
+ except:
217
+ self.eval_env.arm.set_position(self.start_pos[eval_idx])
218
+ if self.eval_env.arm.keep_gripper_closed:
219
+ self.eval_env.arm.close_gripper_fully()
220
+ else:
221
+ self.eval_env.arm.open_gripper_fully()
222
+ time.sleep(0.1)
223
+ time_step = self.eval_env.step(np.zeros(self.eval_env.action_spec().shape[0], dtype=np.float32),
224
+ np.zeros(self.eval_env.action_spec().shape[0], dtype=np.float32))
225
+ return time_step
226
+
227
+ def eval(self):
228
+ # before evals start, prompt user for name of grasped object and the left book of the slot location
229
+ grasped_obj_name = input("Enter the name of the grasped object: ")
230
+ left_book_slot = input("Enter the left book slot location: ")
231
+ # update wandb config
232
+ if self.cfg.use_wandb:
233
+ wandb.config.update({'grasped_obj_name': grasped_obj_name, 'left_book_slot': left_book_slot})
234
+
235
+ self.preempt_episode = False
236
+ self.exit_eval = False
237
+ self.restart_episode = False
238
+
239
+ self.continue_keypress_thread = True
240
+ self.proceed_after_env_reset_event = threading.Event()
241
+ self.keypress_input_thread = threading.Thread(target=self.check_for_key_press)
242
+ self.keypress_input_thread.start()
243
+
244
+ # # Set model to eval mode
245
+ # self.agent.train(False)
246
+
247
+ eval_until_episode = utils.Until(self.cfg.num_eval)
248
+
249
+ self.use_action_history = False
250
+ # if "dp" in repr(self.agent) and "observation.action_history" in self.cfg.agent.config.policy_cfg.input_shapes:
251
+ if "observation.action_history" in self.cfg.agent.config.policy_cfg.input_shapes:
252
+ self.use_action_history = True
253
+
254
+ # self.eval_replay_storage._new_eval_step(0)
255
+
256
+ # if 'vinn' in repr(self.agent) or 'openloop' in repr(self.agent):
257
+ # with open(self.cfg.expert_dataset, 'rb') as f:
258
+ # if self.cfg.obs_type == 'pixels':
259
+ # self.expert_demo, _, self.expert_action, self.expert_reward = pickle.load(f)
260
+ # elif self.cfg.obs_type == 'features':
261
+ # _, self.expert_demo, self.expert_action, self.expert_reward = pickle.load(f)
262
+
263
+ # if self.cfg.action_trajectories:
264
+ # with open(self.cfg.expert_action_trajectories, 'rb') as f:
265
+ # self.expert_action = pickle.load(f)
266
+
267
+ # if isinstance(self.cfg.train_demo_idxs_list_or_num, int):
268
+ # if self.cfg.train_demo_idxs_list_or_num == -1:
269
+ # self.cfg.train_demo_idxs_list_or_num = len(self.expert_demo)
270
+ # train_demo_idxs_list_or_num = list(range(self.cfg.train_demo_idxs_list_or_num))
271
+
272
+ # self.expert_demo = self.expert_demo[train_demo_idxs_list_or_num]
273
+ # self.expert_action = self.expert_action[train_demo_idxs_list_or_num]
274
+ # self.expert_reward = self.expert_reward[train_demo_idxs_list_or_num]
275
+ # # if self.cfg.action_plans:
276
+ # # self.expert_action_plans = self.expert_action_plans[self.cfg.train_demo_idxs_list_or_num]
277
+ # # self.expert_demo = self.expert_demo[:self.cfg.num_demos]
278
+ # # self.expert_action = self.expert_action[:self.cfg.num_demos]
279
+ # # self.expert_reward = self.expert_reward[:self.cfg.num_demos]
280
+
281
+ # self.expert_demo = np.concatenate(self.expert_demo, axis=0)
282
+ # self.expert_rgb_obs = np.ascontiguousarray(np.transpose(self.expert_demo, (0,2,3,1))[:, :,:,:3].astype(np.uint8))
283
+ # self.expert_action = np.concatenate(self.expert_action, axis=0)
284
+
285
+ # self.agent.save_representations(self.expert_demo, self.expert_action, 128, config=self.expert_demo_config)
286
+
287
+ # Get start points
288
+ if self.cfg.random_start:
289
+ eval_starts = Path(self.cfg.eval_starts) / 'starts.pkl'
290
+ if eval_starts.exists():
291
+ with eval_starts.open('rb') as f:
292
+ self.start_pos = pickle.load(f)
293
+ else:
294
+ eval_starts = Path(self.cfg.eval_starts)
295
+ eval_starts.mkdir(parents=True, exist_ok=True)
296
+
297
+ # Generate start points
298
+ self.start_pos = []
299
+ try:
300
+ for _ in range(self.cfg.num_eval):
301
+ self.start_pos.append(self.eval_env.get_random_pos())
302
+ except:
303
+ for _ in range(self.cfg.num_eval):
304
+ self.start_pos.append(self.eval_env.arm.get_random_pos())
305
+
306
+ # Save start points for the task
307
+ eval_starts = eval_starts / 'starts.pkl'
308
+ with eval_starts.open('wb') as f:
309
+ pickle.dump(self.start_pos, f)
310
+
311
+ time_step = self.eval_env.reset()
312
+ # replay_thread = None
313
+ while eval_until_episode(self.global_episode) and not self.exit_eval:
314
+ # self.video_recorder.init(self.eval_env, video_filename=f'{self.global_episode}_eval.mp4')
315
+ print(f"Starting episode {self.global_episode}")
316
+ time_step = self.eval_env.reset() #Leon: need to call reset twice in case objects are trapped
317
+ self.video_recorder.init(self.eval_env, video_filename=f'{self.global_episode}_eval.mp4')
318
+ # x = input("Press Enter to continue... after reseting env")
319
+ print("Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success")
320
+ self.proceed_after_env_reset_event.clear() # clear the event flag
321
+ self.proceed_after_env_reset_event.wait() # blocking wait for the event flag to be set
322
+ if self.global_episode > 0:
323
+ self.logger.log_metrics({'num_success': self.num_episode_successes}, self.global_step, 'eval', episode=self.global_episode)
324
+ self.logger.log_metrics({'success_rate': self.num_episode_successes/self.global_episode}, self.global_step, 'eval', episode=self.global_episode)
325
+
326
+ # log confidence intervals for success rate
327
+ k = self.num_episode_successes # number of successes
328
+ n = self.global_episode # number of trials
329
+
330
+ table_columns = []
331
+ table_data = []
332
+ for alpha in self.alpha_range:
333
+ lb = bc.binom_ci(k, n, alpha, 'lb')
334
+ ub = bc.binom_ci(k, n, alpha, 'ub')
335
+
336
+ self.logger.log_metrics({f'success_rate_lb_{alpha}': lb}, self.global_step, 'eval', episode=self.global_episode)
337
+ self.logger.log_metrics({f'success_rate_ub_{alpha}': ub}, self.global_step, 'eval', episode=self.global_episode)
338
+
339
+ time_step = self.eval_env.reset()
340
+ # debug_info_dict = self.eval_env.debug_info_dict
341
+ # if replay_thread is not None:
342
+ # # wait for the last replay thread to finish
343
+ # replay_thread.join()
344
+
345
+ # self.eval_replay_storage.add(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict)
346
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict))
347
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step, debug_info_dict))
348
+
349
+ # replay_thread.start()
350
+ if self.cfg.random_start:
351
+ time_step = self.reset(self.global_episode)
352
+ time.sleep(2) #5)
353
+ # if 'vinn' in repr(self.agent):
354
+ # self.agent.reset()
355
+ # # self.agent.buffer.reset()
356
+ # # if self.cfg.open_loop:
357
+ # # self.agent.current_step = 0
358
+ # if 'openloop' in repr(self.agent):
359
+ # self.agent.curr_step = 0
360
+ # at start of each episode, provide zero action for policies that use action history
361
+ # shape should be (T_o, T_a, action_dim)
362
+
363
+ # while not time_step.last() and not self.preempt_episode:
364
+ self.video_recorder.ros_start_recording()
365
+ self.eval_replay_storage.start_episode()
366
+ self.eval_env.start_policy_timer()
367
+ while not self.eval_env.episode_done() and not self.preempt_episode:
368
+ # with torch.no_grad(), utils.eval_mode(self.agent):
369
+ # # if self.cfg.agent.provide_topk:
370
+ # # action, vinn_action, topk = self.agent.act(
371
+ # # time_step.observation['pixels'],
372
+ # # self.global_step,
373
+ # # eval_mode=True)
374
+ # # elif self.cfg.agent.provide_obs:
375
+ # # action, vinn_action, obs = self.agent.act(
376
+ # # time_step.observation['pixels'],
377
+ # # self.global_step,
378
+ # # eval_mode=True)
379
+ # # else:
380
+ # action, vinn_action = self.agent.act(
381
+ # time_step.observation,
382
+ # self.global_step,
383
+ # eval_mode=True,
384
+ # obs_timestamp=time_step.observation['timestamp'],
385
+ # obs_seq=time_step.observation['seq'],
386
+ # action_history=action_history,
387
+ # action_history_start_timestamp=action_history_start_timestamp,
388
+ # )
389
+ # DONT WAIT FOR POLICY TO GET AN ACTION
390
+ # we dont want to slow down grabbing obs and passing to sam/contact features
391
+
392
+ self.eval_env.run_policy_threads() # this just does a rospy sleep
393
+
394
+ # if self.use_action_history:
395
+ # action_history_start_timestamp = time_step.observation['timestamp']
396
+ # # action_history = action[:self.cfg.agent.config.policy_cfg.action_history_encoder_config.history_length, ...]
397
+ # # add n_obs_steps dimension to action_history, for now we assume n_obs_steps = 1
398
+ # # TODO: handle n_obs_steps > 1
399
+ # action_history = action[np.newaxis, ...]
400
+
401
+ # time_step = self.eval_env.step(action, vinn_action) # obs, reward after action has been taken
402
+ # debug_info_dict = self.eval_env.debug_info_dict
403
+
404
+ # time_step = self.eval_env.ros_step()
405
+
406
+ # replay_thread.join()
407
+
408
+ # time how long it takes to execute the step
409
+ # time_before_add = time.perf_counter()
410
+ # self.eval_replay_storage.add(time_step._replace(observation=time_step.observation[self.cfg.obs_type]), debug_info_dict)
411
+ # use thread to call the add function in a separate thread
412
+ # 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))
413
+
414
+ # replay_thread = threading.Thread(target=self.eval_replay_storage.add, args=(time_step, debug_info_dict))
415
+ # replay_thread.start()
416
+
417
+ # print(f"Time to add to replay buffer: {time.perf_counter() - time_before_add}")
418
+
419
+ # self.video_recorder.record(self.eval_env)
420
+ # self._global_step += 1
421
+
422
+ self.eval_env.stop_policy_timer()
423
+
424
+ if self.restart_episode:
425
+ # means we should delete the current episode and start again
426
+ self.restart_episode = False
427
+ self.eval_replay_storage.reset_current_episode()
428
+ self.video_recorder.reset_current_episode()
429
+
430
+ else:
431
+ self.eval_replay_storage.store_current_episode()
432
+ video_filepath = self.video_recorder.save()
433
+ self.logger.log_video(f"eval/{video_filepath.name.rstrip('.mp4')}", video_filepath, self.global_step)
434
+ self._global_episode += 1
435
+
436
+ self.preempt_episode = False # reset preempt_episode flag
437
+
438
+ # self.video_recorder.save(f'{episode}_eval.mp4')
439
+ # get the video file and convert to video tensor to log
440
+
441
+ self.eval_env.reset()
442
+
443
+ print("Evaluation finished. To wrap up, rate prev episode, press 0 for failure and 1 for success")
444
+ self.proceed_after_env_reset_event.clear() # clear the event flag
445
+ self.proceed_after_env_reset_event.wait() # blocking wait for the event flag to be set
446
+ if self.global_episode > 0:
447
+ # self.logger.log_metrics({'num_success': self.num_episode_successes}, self.global_step, 'eval', episode=self.global_episode)
448
+ self.logger.log_metrics({'num_success': self.num_episode_successes}, self.global_step, 'eval', episode=self.global_episode)
449
+ self.logger.log_metrics({'success_rate': self.num_episode_successes/self.global_episode}, self.global_step, 'eval', episode=self.global_episode)
450
+
451
+ # log confidence intervals for success rate
452
+ k = self.num_episode_successes # number of successes
453
+ n = self.global_episode # number of trials
454
+
455
+ table_columns = ['success_rate']
456
+ table_data = [self.num_episode_successes/self.global_episode]
457
+ for alpha in self.alpha_range:
458
+ lb = bc.binom_ci(k, n, alpha, 'lb')
459
+ ub = bc.binom_ci(k, n, alpha, 'ub')
460
+
461
+ self.logger.log_metrics({f'success_rate_lb_{alpha}': lb}, self.global_step, 'eval', episode=self.global_episode)
462
+ self.logger.log_metrics({f'success_rate_ub_{alpha}': ub}, self.global_step, 'eval', episode=self.global_episode)
463
+
464
+ table_columns.extend([f'success_rate_lb_{alpha}', f'success_rate_ub_{alpha}'])
465
+ table_data.extend([lb, ub])
466
+
467
+ table_data = [table_data]
468
+
469
+ # seperately log as a table
470
+ wandb.log({
471
+ "eval/success_rate_ci": wandb.Table(data=table_data, columns=table_columns)
472
+ })
473
+
474
+ # also accumulate eval metrics across previous eval runs
475
+ # TODO: change wandb init to resume from an existing run!!!
476
+ run_filter={
477
+ "jobType": "eval",
478
+ "config.wandb_run_id": self.cfg.wandb_run_id,
479
+ "summary_metrics.episode": {"$gte": 5},
480
+ "config.checkpoint_epoch": self.cfg.checkpoint_epoch,
481
+ "state": "finished",
482
+ # "config.grasped_obj_name": grasped_obj_name,
483
+ # "config.left_book_slot": left_book_slot,
484
+ }
485
+
486
+ api = wandb.Api()
487
+ filtered_runs = api.runs("serialexperimentsleon/extrinsic_contact_downstream", filters=run_filter)
488
+ total_num_successes = self.num_episode_successes
489
+ total_num_episodes = self.global_episode
490
+ list_of_historical_run_ids = []
491
+ if len(filtered_runs) > 0:
492
+ for filtered_run in filtered_runs:
493
+ total_num_successes += filtered_run.summary_metrics['eval/num_success']
494
+ # total_num_episodes += filtered_run.summary_metrics['episode']
495
+ total_num_episodes += filtered_run.config['num_eval']
496
+ list_of_historical_run_ids.append(filtered_run.id)
497
+
498
+ wandb.summary['total_num_successes'] = total_num_successes
499
+ wandb.summary['total_num_episodes'] = total_num_episodes
500
+ wandb.summary['total_success_rate'] = total_num_successes/total_num_episodes
501
+
502
+ # log the accumulated metrics as a table
503
+ total_table_columns = ['total_num_successes', 'total_num_episodes', 'total_success_rate']
504
+ total_table_data = [total_num_successes, total_num_episodes, total_num_successes/total_num_episodes]
505
+ self.logger.log_metrics({'total_success_rate': total_num_successes/total_num_episodes}, self.global_step, 'eval', episode=total_num_episodes)
506
+
507
+ for alpha in self.alpha_range:
508
+ lb = bc.binom_ci(total_num_successes, total_num_episodes, alpha, 'lb')
509
+ ub = bc.binom_ci(total_num_successes, total_num_episodes, alpha, 'ub')
510
+ total_table_columns.extend([f'total_success_rate_lb_{alpha}', f'total_success_rate_ub_{alpha}'])
511
+ total_table_data.extend([lb, ub])
512
+ wandb.summary[f'total_success_rate_lb_{alpha}'] = lb
513
+ wandb.summary[f'total_success_rate_ub_{alpha}'] = ub
514
+
515
+ self.logger.log_metrics({f'total_success_rate_lb_{alpha}': lb}, self.global_step, 'eval', episode=total_num_episodes)
516
+ self.logger.log_metrics({f'total_success_rate_ub_{alpha}': ub}, self.global_step, 'eval', episode=total_num_episodes)
517
+
518
+ total_table_data = [total_table_data]
519
+ wandb.log({
520
+ 'eval/total_success_rate_ci': wandb.Table(data=total_table_data, columns=total_table_columns)
521
+ })
522
+
523
+ self.continue_keypress_thread = False # will stop the keypress thread
524
+ self.keypress_input_thread.join() # wait for the keypress thread to finish
525
+
526
+ def load_checkpoint_conf(self, snapshot_path):
527
+ config_path = snapshot_path.parent / 'config.yaml'
528
+ if not config_path.exists():
529
+ raise FileNotFoundError(f'No snapshot conf found at {config_path}')
530
+ else:
531
+ # load the omegaconf config
532
+ hydra.core.global_hydra.GlobalHydra.instance().clear()
533
+ hydra.initialize(
534
+ str(_relative_path_between(Path(config_path).absolute().parent, Path(__file__).absolute().parent)),
535
+ )
536
+ cfg = hydra.compose(Path(config_path).stem)
537
+ from deepdiff import DeepDiff
538
+ from omegaconf import open_dict
539
+ diff = DeepDiff(OmegaConf.to_container(cfg), OmegaConf.to_container(self.cfg)) # old, new
540
+ # import re
541
+ 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']"]]
542
+ if "values_changed" in diff:
543
+ # 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
544
+ # for keys above, overwrite the old config with the new config
545
+ for k, v in diff['values_changed'].items():
546
+ # replace any keys that are under "root['suite']"
547
+ if k in overwriteable_keys or k.startswith("root['suite']"):
548
+ print(f"Found changed key {k} with value {v}. Overwriting old checkpoint config")
549
+ if k == "root['agent']['config']['compile']":
550
+ if diff['values_changed'][k]['new_value']:
551
+ self.loading_uncompiled_checkpoint_with_compile = True
552
+ elif not diff['values_changed'][k]['new_value']:
553
+ # raise ValueError("Cannot load a compiled checkpoint without compile")
554
+ self.loading_compiled_checkpoint_with_no_compile = True
555
+ exec(f"{k.replace('root[', 'cfg[')} = {k.replace('root[', 'self.cfg[')}")
556
+ # for any new values, update the old checkpoint config
557
+ if "dictionary_item_added" in diff:
558
+ for new_key in diff['dictionary_item_added']: # this is a list
559
+ # if new_key == "root['suite']['task_make_fn']['observation_cfg']":
560
+ if new_key == "root['suite']['task_make_fn']['agent_policy_cfg']":
561
+ # pass the agents observation_cfg to the suite task_make_fn
562
+ with open_dict(cfg): # to allow addition of non-existing keys
563
+ # cfg.suite.task_make_fn.observation_cfg = cfg.agent.config.observation_cfg
564
+ cfg.suite.task_make_fn.agent_policy_cfg = cfg.agent.config
565
+ continue
566
+ elif "['agent']['config']['policy_cfg']['input_shapes']" in new_key:
567
+ # skip adding the new key if it is the input_shapes of the policy_cfg
568
+ continue
569
+ else:
570
+ print(f"Found new key {new_key} with value {eval(new_key.replace('root[', 'self.cfg['))}. Adding to checkpoint config")
571
+ # eval(new_key.replace('root', 'cfg')) = eval(new_key.replace('root', 'self.cfg'))
572
+ if new_key == "root['agent']['config']['compile']":
573
+ if self.cfg.agent.config.compile:
574
+ self.loading_uncompiled_checkpoint_with_compile = True
575
+
576
+ with open_dict(cfg):
577
+ exec(f"{new_key.replace('root[', 'cfg[')}={new_key.replace('root[', 'self.cfg[')}")
578
+ self.cfg = cfg
579
+
580
+ def load_checkpoint(self, snapshot_path, bc=False):
581
+ print(f'resuming {repr(self.agent)}: {snapshot_path}')
582
+ with snapshot_path.open('rb') as f:
583
+ payload = torch.load(f)
584
+ agent_payload = {}
585
+ for k, v in payload.items():
586
+ if k not in self.__dict__:
587
+ agent_payload[k] = v
588
+ elif k == '_global_epoch':
589
+ self._global_epoch = v
590
+ print(f'loaded epoch: {v}')
591
+ if self.cfg.use_wandb:
592
+ # add to config of wandb
593
+ wandb.config.update({'epoch': v})
594
+
595
+ # self.agent.load_snapshot_eval(agent_payload, bc)
596
+
597
+ @hydra.main(config_path='cfgs', config_name='config_eval')
598
+ def main(cfg):
599
+ from eval_robot import Workspace as W
600
+ root_dir = Path.cwd()
601
+ workspace = W(cfg)
602
+
603
+ workspace.eval()
604
+
605
+ if __name__ == '__main__':
606
+ main()
1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/table/eval/success_rate_ci_5_e4f3d858401fb0f04765.table.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"columns": ["success_rate", "success_rate_lb_0.01", "success_rate_ub_0.01", "success_rate_lb_0.025", "success_rate_ub_0.025", "success_rate_lb_0.05", "success_rate_ub_0.05", "success_rate_lb_0.1", "success_rate_ub_0.1"], "data": [[0.4, 0.05313029894229448, 0.8694285749650242, 0.07380302258909224, 0.8284014164744656, 0.14315149940236715, 0.754450425454748, 0.12242479629915548, 0.6598483770766043]]}
1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/table/eval/total_success_rate_ci_6_06392b86e92c89b6b251.table.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"columns": ["total_num_successes", "total_num_episodes", "total_success_rate", "total_success_rate_lb_0.01", "total_success_rate_ub_0.01", "total_success_rate_lb_0.025", "total_success_rate_ub_0.025", "total_success_rate_lb_0.05", "total_success_rate_ub_0.05", "total_success_rate_lb_0.1", "total_success_rate_ub_0.1"], "data": [[10, 20, 0.5, 0.2775932848898335, 0.7460466026767734, 0.3081446737434721, 0.7174153923553511, 0.3230885789152155, 0.6829789429537072, 0.3550793528846665, 0.6282084360462309]]}
1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/videos/eval/0_eval_0_6d4609e89d3ba1e1c763.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6d4609e89d3ba1e1c763d7eb0ec112a8c34479fbc6b28c43c867a6501ad50990
3
+ size 1562624
1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/videos/eval/1_eval_1_e6e0be02eedcefa21d59.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e6e0be02eedcefa21d59a5b50479ceefd38236aa85cb872ea490559629138b67
3
+ size 1512993
1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/videos/eval/2_eval_2_941ccc9a5f52aef980c0.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:941ccc9a5f52aef980c0fa54fba565d745079da7a8e524f2dca8c0f882ee6bee
3
+ size 1505327
1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/videos/eval/3_eval_3_56c00d964e4ff84c9625.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:56c00d964e4ff84c96255a775a3ecd34a00f156a18f72e4b1d9942ba4eeaee52
3
+ size 853060
1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/media/videos/eval/4_eval_4_92faad0d5acbe7e41d66.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:92faad0d5acbe7e41d66e6f8ad175a9379c31c73d7d97f545eef706643b2d096
3
+ size 1012519
1rhki7g4/wandb/run-20250121_222218-1rhki7g4/files/output.log ADDED
@@ -0,0 +1,276 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ loaded agent with feature_type: 180x240_crpdstlhw24x51x130x130_1_D_2.0_msk_channels_EE_obj_mask_cntct_0.1_DTC_clmpd_lrnbl_nrmls_DTCmask_adpt_lrnbl_both_lr_0.0001_wd_0.0_local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9_acthist_hst6_out32_dwnkrnl3_dwnstrd2_dwnpd1
3
+ [INFO] [1737516149.135694]: resetting environment
4
+ [INFO] [1737516149.143265]: cleared current plan
5
+ [INFO] [1737516149.144647]: moving to home
6
+ [INFO] [1737516150.146741]: reached home
7
+ [INFO] [1737516150.148073]: reset action history
8
+ [INFO] [1737516152.856019]: environment reset
9
+ Starting episode 0
10
+ [INFO] [1737516152.860503]: resetting environment
11
+ [INFO] [1737516152.867316]: cleared current plan
12
+ [INFO] [1737516152.868812]: moving to home
13
+ [INFO] [1737516153.871327]: reached home
14
+ [INFO] [1737516153.872981]: reset action history
15
+ [INFO] [1737516156.580980]: environment reset
16
+ Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success
17
+ proceeding to start episode!
18
+ [INFO] [1737516163.150581]: resetting environment
19
+ [INFO] [1737516163.154760]: cleared current plan
20
+ [INFO] [1737516163.155791]: moving to home
21
+ [INFO] [1737516164.158092]: reached home
22
+ [INFO] [1737516164.159529]: reset action history
23
+ [INFO] [1737516166.866961]: environment reset
24
+ bag_path_name:=/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_2/1rhki7g4/episode_rosbags/episode_0_2025-01-21-22-22-46.bag
25
+ ... logging to /home/leonmkim/.ros/log/1b77c894-d3af-11ef-96d2-5defea869005/roslaunch-leonmkim-ROG-Strix-G15CS-G15CS-2665365.log
26
+ started roslaunch server http://158.130.50.37:40345/
27
+ SUMMARY
28
+ ========
29
+ PARAMETERS
30
+ * /rosdistro: noetic
31
+ * /rosversion: 1.16.0
32
+ NODES
33
+ /
34
+ print_text (rostopic/rostopic)
35
+ pub_text (rostopic/rostopic)
36
+ rosbag_record (rosbag/record)
37
+ ROS_MASTER_URI=http://localhost:11311
38
+ process[pub_text-1]: started with pid [2665671]
39
+ process[print_text-2]: started with pid [2665695]
40
+ process[rosbag_record-3]: started with pid [2665696]
41
+ started bagging!
42
+ For topic gripper_width: timestamp difference is 110064886 for nearest: 1737516171079123638 - target: 1737516170969058752 at idx 55
43
+ preempting episode
44
+ [INFO] [1737516201.979532]: Storing episode...
45
+ [rosbag_record-3] killing on exit
46
+ [print_text-2] killing on exit
47
+ [pub_text-1] killing on exit
48
+ [INFO] [1737516202.730498]: Stored episode 1.
49
+ [INFO] [1737516202.731922]: Saving video...
50
+ [INFO] [1737516202.956420]: Video saved!
51
+ Starting episode 1
52
+ [INFO] [1737516202.970316]: resetting environment
53
+ [INFO] [1737516202.980547]: cleared current plan
54
+ [INFO] [1737516202.980791]: moving to home
55
+ [INFO] [1737516206.583472]: reached home
56
+ [INFO] [1737516206.583888]: reset action history
57
+ [INFO] [1737516209.294003]: environment reset
58
+ Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success
59
+ proceeding to start episode!
60
+ Comuting lower confidence bound
61
+ Comuting upper confidence bound
62
+ Comuting lower confidence bound
63
+ Comuting upper confidence bound
64
+ Comuting lower confidence bound
65
+ Comuting upper confidence bound
66
+ Comuting lower confidence bound
67
+ Comuting upper confidence bound
68
+ [INFO] [1737516210.762986]: resetting environment
69
+ [INFO] [1737516210.776844]: cleared current plan
70
+ [INFO] [1737516210.777546]: moving to home
71
+ [INFO] [1737516211.778971]: reached home
72
+ [INFO] [1737516211.779889]: reset action history
73
+ [INFO] [1737516214.489979]: environment reset
74
+ bag_path_name:=/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_2/1rhki7g4/episode_rosbags/episode_1_2025-01-21-22-23-34.bag
75
+ ... logging to /home/leonmkim/.ros/log/1b77c894-d3af-11ef-96d2-5defea869005/roslaunch-leonmkim-ROG-Strix-G15CS-G15CS-2665365.log
76
+ started roslaunch server http://158.130.50.37:37589/
77
+ SUMMARY
78
+ ========
79
+ PARAMETERS
80
+ * /rosdistro: noetic
81
+ * /rosversion: 1.16.0
82
+ NODES
83
+ /
84
+ print_text (rostopic/rostopic)
85
+ pub_text (rostopic/rostopic)
86
+ rosbag_record (rosbag/record)
87
+ ROS_MASTER_URI=http://localhost:11311
88
+ process[pub_text-4]: started with pid [2665841]
89
+ process[print_text-5]: started with pid [2665842]
90
+ process[rosbag_record-6]: started with pid [2665843]
91
+ started bagging!
92
+ For topic gripper_width: timestamp difference is -106400454 for nearest: 1737516232812479532 - target: 1737516232918879986 at idx 234
93
+ For topic gripper_width: timestamp difference is 102096884 for nearest: 1737516246912458269 - target: 1737516246810361385 at idx 249
94
+ [INFO] [1737516249.953817]: Storing episode...
95
+ [rosbag_record-6] killing on exit
96
+ [print_text-5] killing on exit[pub_text-4] killing on exit
97
+ [INFO] [1737516250.725854]: Stored episode 2.
98
+ [INFO] [1737516250.726133]: Saving video...
99
+ [INFO] [1737516250.947639]: Video saved!
100
+ Starting episode 2
101
+ [INFO] [1737516251.006616]: resetting environment
102
+ [INFO] [1737516251.059207]: cleared current plan
103
+ [INFO] [1737516251.064488]: moving to home
104
+ [INFO] [1737516254.671930]: reached home
105
+ [INFO] [1737516254.676264]: reset action history
106
+ [INFO] [1737516257.409161]: environment reset
107
+ Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success
108
+ proceeding to start episode!Comuting lower confidence bound
109
+ Comuting upper confidence bound
110
+ Comuting lower confidence bound
111
+ Comuting upper confidence bound
112
+ Comuting lower confidence bound
113
+ Comuting upper confidence bound
114
+ Comuting lower confidence bound
115
+ Comuting upper confidence bound
116
+ [INFO] [1737516267.126783]: resetting environment
117
+ [INFO] [1737516267.150030]: cleared current plan
118
+ [INFO] [1737516267.152612]: moving to home
119
+ [INFO] [1737516268.163365]: reached home
120
+ [INFO] [1737516268.174141]: reset action history
121
+ [INFO] [1737516270.956584]: environment reset
122
+ bag_path_name:=/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_2/1rhki7g4/episode_rosbags/episode_2_2025-01-21-22-24-30.bag
123
+ ... logging to /home/leonmkim/.ros/log/1b77c894-d3af-11ef-96d2-5defea869005/roslaunch-leonmkim-ROG-Strix-G15CS-G15CS-2665365.log
124
+ started roslaunch server http://158.130.50.37:35407/
125
+ SUMMARY
126
+ ========
127
+ PARAMETERS
128
+ * /rosdistro: noetic
129
+ * /rosversion: 1.16.0
130
+ NODES
131
+ /
132
+ print_text (rostopic/rostopic)
133
+ pub_text (rostopic/rostopic)
134
+ rosbag_record (rosbag/record)
135
+ ROS_MASTER_URI=http://localhost:11311
136
+ process[pub_text-7]: started with pid [2665983]
137
+ process[print_text-8]: started with pid [2665984]
138
+ process[rosbag_record-9]: started with pid [2665985]
139
+ started bagging!
140
+ For topic gripper_width: timestamp difference is 101455540 for nearest: 1737516279912456841 - target: 1737516279811001301 at idx 116
141
+ For topic gripper_width: timestamp difference is 115330520 for nearest: 1737516301412455621 - target: 1737516301297125101 at idx 249
142
+ [INFO] [1737516306.081316]: Storing episode...
143
+ [pub_text-7] killing on exit
144
+ [print_text-8] killing on exit
145
+ [rosbag_record-9] killing on exit
146
+ [INFO] [1737516306.946106]: Stored episode 3.
147
+ [INFO] [1737516306.950332]: Saving video...
148
+ [INFO] [1737516307.157732]: Video saved!
149
+ Starting episode 3
150
+ [INFO] [1737516307.209577]: resetting environment
151
+ [INFO] [1737516307.228461]: cleared current plan
152
+ [INFO] [1737516307.228684]: moving to home
153
+ [INFO] [1737516310.837595]: reached home
154
+ [INFO] [1737516310.845876]: reset action history
155
+ [INFO] [1737516313.630237]: environment reset
156
+ Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success
157
+ proceeding to start episode!Comuting lower confidence bound
158
+ Comuting upper confidence bound
159
+ Comuting lower confidence bound
160
+ Comuting upper confidence bound
161
+ Comuting lower confidence bound
162
+ Comuting upper confidence bound
163
+ Comuting lower confidence bound
164
+ Comuting upper confidence bound
165
+ [INFO] [1737516317.066283]: resetting environment
166
+ [INFO] [1737516317.103449]: cleared current plan
167
+ [INFO] [1737516317.105618]: moving to home
168
+ [INFO] [1737516318.107488]: reached home
169
+ [INFO] [1737516318.110751]: reset action history
170
+ [INFO] [1737516320.897795]: environment reset
171
+ bag_path_name:=/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_2/1rhki7g4/episode_rosbags/episode_3_2025-01-21-22-25-20.bag
172
+ ... logging to /home/leonmkim/.ros/log/1b77c894-d3af-11ef-96d2-5defea869005/roslaunch-leonmkim-ROG-Strix-G15CS-G15CS-2665365.log
173
+ started roslaunch server http://158.130.50.37:42115/
174
+ SUMMARY
175
+ ========
176
+ PARAMETERS
177
+ * /rosdistro: noetic
178
+ * /rosversion: 1.16.0
179
+ NODES
180
+ /
181
+ print_text (rostopic/rostopic)
182
+ pub_text (rostopic/rostopic)
183
+ rosbag_record (rosbag/record)
184
+ ROS_MASTER_URI=http://localhost:11311
185
+ process[pub_text-10]: started with pid [2666126]
186
+ process[print_text-11]: started with pid [2666127]
187
+ process[rosbag_record-12]: started with pid [2666128]
188
+ started bagging!
189
+ For topic gripper_width: timestamp difference is 102846931 for nearest: 1737516327212481092 - target: 1737516327109634161 at idx 88
190
+ preempting episode
191
+ [INFO] [1737516338.480609]: Storing episode...
192
+ [rosbag_record-12] killing on exit
193
+ [print_text-11] killing on exit
194
+ [pub_text-10] killing on exit
195
+ [INFO] [1737516339.283823]: Stored episode 4.
196
+ [INFO] [1737516339.289276]: Saving video...
197
+ [INFO] [1737516339.526241]: Video saved!
198
+ Starting episode 4
199
+ [INFO] [1737516339.625920]: resetting environment
200
+ [INFO] [1737516339.651588]: cleared current plan
201
+ [INFO] [1737516339.651870]: moving to home
202
+ [INFO] [1737516343.257771]: reached home
203
+ [INFO] [1737516343.277084]: reset action history
204
+ [INFO] [1737516346.088756]: environment reset
205
+ Press Enter to continue... after reseting env. To rate prev episode, press 0 for failure and 1 for success
206
+ proceeding to start episode!Comuting lower confidence bound
207
+ Comuting upper confidence bound
208
+ Comuting lower confidence bound
209
+ Comuting upper confidence bound
210
+ Comuting lower confidence bound
211
+ Comuting upper confidence bound
212
+ Comuting lower confidence bound
213
+ Comuting upper confidence bound
214
+ [INFO] [1737516347.012518]: resetting environment
215
+ [INFO] [1737516347.033127]: cleared current plan
216
+ [INFO] [1737516347.037335]: moving to home
217
+ [INFO] [1737516348.043022]: reached home
218
+ [INFO] [1737516348.047428]: reset action history
219
+ [INFO] [1737516350.837108]: environment reset
220
+ bag_path_name:=/home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_2/1rhki7g4/episode_rosbags/episode_4_2025-01-21-22-25-50.bag
221
+ ... logging to /home/leonmkim/.ros/log/1b77c894-d3af-11ef-96d2-5defea869005/roslaunch-leonmkim-ROG-Strix-G15CS-G15CS-2665365.log
222
+ started roslaunch server http://158.130.50.37:36343/
223
+ SUMMARY
224
+ ========
225
+ PARAMETERS
226
+ * /rosdistro: noetic
227
+ * /rosversion: 1.16.0
228
+ NODES
229
+ /
230
+ print_text (rostopic/rostopic)
231
+ pub_text (rostopic/rostopic)
232
+ rosbag_record (rosbag/record)
233
+ ROS_MASTER_URI=http://localhost:11311
234
+ process[pub_text-13]: started with pid [2666265]
235
+ process[print_text-14]: started with pid [2666266]
236
+ process[rosbag_record-15]: started with pid [2666267]
237
+ started bagging!
238
+ For topic gripper_width: timestamp difference is -137883258 for nearest: 1737516359112474131 - target: 1737516359250357389 at idx 122
239
+ For topic gripper_width: timestamp difference is 100814234 for nearest: 1737516366112415444 - target: 1737516366011601210 at idx 221
240
+ For topic gripper_width: timestamp difference is 101076354 for nearest: 1737516366379121531 - target: 1737516366278045177 at idx 223
241
+ For topic gripper_width: timestamp difference is 105328862 for nearest: 1737516371579123561 - target: 1737516371473794699 at idx 249
242
+ preempting episode
243
+ [INFO] [1737516373.096524]: Storing episode...
244
+ [print_text-14] killing on exit
245
+ [pub_text-13] killing on exit
246
+ [rosbag_record-15] killing on exit
247
+ [INFO] [1737516373.921782]: Stored episode 5.
248
+ [INFO] [1737516373.926294]: Saving video...
249
+ [INFO] [1737516374.160170]: Video saved!
250
+ [INFO] [1737516374.230728]: resetting environment
251
+ [INFO] [1737516374.266302]: cleared current plan
252
+ [INFO] [1737516374.266762]: moving to home
253
+ [WARN] [1737516374.179367]: Plan exhausted
254
+ [WARN] [1737516374.219911]: Plan exhausted
255
+ [WARN] [1737516374.257066]: Plan exhausted
256
+ [INFO] [1737516377.770577]: reached home
257
+ [INFO] [1737516377.779978]: reset action history
258
+ [INFO] [1737516380.665365]: environment reset
259
+ Evaluation finished. To wrap up, rate prev episode, press 0 for failure and 1 for success
260
+ proceeding to start episode!Comuting lower confidence bound
261
+ Comuting upper confidence bound
262
+ Comuting lower confidence bound
263
+ Comuting upper confidence bound
264
+ Comuting lower confidence bound
265
+ Comuting upper confidence bound
266
+ Comuting lower confidence bound
267
+ Comuting upper confidence bound
268
+ Comuting lower confidence bound
269
+ Comuting upper confidence bound
270
+ Comuting lower confidence bound
271
+ Comuting upper confidence bound
272
+ Comuting lower confidence bound
273
+ Comuting upper confidence bound
274
+ Comuting lower confidence bound
275
+ Comuting upper confidence bound
276
+ proceeding to start episode!
1rhki7g4/wandb/run-20250121_222218-1rhki7g4/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": "2025-01-22T03:22:19.286582",
5
+ "startedAt": "2025-01-22T03:22:18.897530",
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": "dc9da9fa0ef2996c7fec8d105e7933e728cd952f"
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": 3561.5865,
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": 4499.929,
41
+ "min": 800.0,
42
+ "max": 4700.0
43
+ },
44
+ {
45
+ "current": 4492.694,
46
+ "min": 800.0,
47
+ "max": 4700.0
48
+ },
49
+ {
50
+ "current": 4499.999,
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": 3000.0,
71
+ "min": 800.0,
72
+ "max": 4700.0
73
+ }
74
+ ],
75
+ "disk": {
76
+ "/": {
77
+ "total": 915.3232879638672,
78
+ "used": 477.7547721862793
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
+ }
1rhki7g4/wandb/run-20250121_222218-1rhki7g4/logs/debug-internal.log ADDED
The diff for this file is too large to render. See raw diff
 
1rhki7g4/wandb/run-20250121_222218-1rhki7g4/logs/debug.log ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 2025-01-21 22:22:18,903 INFO MainThread:2665365 [wandb_setup.py:_flush():76] Current SDK version is 0.17.5
2
+ 2025-01-21 22:22:18,903 INFO MainThread:2665365 [wandb_setup.py:_flush():76] Configure stats pid to 2665365
3
+ 2025-01-21 22:22:18,903 INFO MainThread:2665365 [wandb_setup.py:_flush():76] Loading settings from /home/leonmkim/.config/wandb/settings
4
+ 2025-01-21 22:22:18,903 INFO MainThread:2665365 [wandb_setup.py:_flush():76] Loading settings from /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_2/1rhki7g4/wandb/settings
5
+ 2025-01-21 22:22:18,903 INFO MainThread:2665365 [wandb_setup.py:_flush():76] Loading settings from environment variables: {}
6
+ 2025-01-21 22:22:18,903 INFO MainThread:2665365 [wandb_setup.py:_flush():76] Applying setup settings: {'_disable_service': False}
7
+ 2025-01-21 22:22:18,903 INFO MainThread:2665365 [wandb_setup.py:_flush():76] Inferring run settings from compute environment: {'program_relpath': 'FISH/eval_robot.py', 'program_abspath': '/home/leonmkim/fish_leon/FISH/eval_robot.py', 'program': '/home/leonmkim/fish_leon/FISH/eval_robot.py'}
8
+ 2025-01-21 22:22:18,903 INFO MainThread:2665365 [wandb_setup.py:_flush():76] Applying login settings: {}
9
+ 2025-01-21 22:22:18,903 INFO MainThread:2665365 [wandb_init.py:_log_setup():529] Logging user logs to /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_2/1rhki7g4/wandb/run-20250121_222218-1rhki7g4/logs/debug.log
10
+ 2025-01-21 22:22:18,904 INFO MainThread:2665365 [wandb_init.py:_log_setup():530] Logging internal logs to /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_2/1rhki7g4/wandb/run-20250121_222218-1rhki7g4/logs/debug-internal.log
11
+ 2025-01-21 22:22:18,904 INFO MainThread:2665365 [wandb_init.py:init():569] calling init triggers
12
+ 2025-01-21 22:22:18,904 INFO MainThread:2665365 [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': 2, 'dataset_shuffle_seed': 0, 'device': 'cuda', 'save_video': True, 'save_train_video': True, 'use_tb': True, 'use_wandb': True, 'wandb_run_id': '4295_2', 'wandb_notes': '4295_2_restarted_1', 'eval': True, 'true_action_history': False, 'train_pad_after': 4, 'process_contact_features': True, 'obs_type': 'pixels', 'use_color': False, 'use_depth': True, 'use_masks': True, 'mask_list': ['EE_obj_mask'], 'mask_representation': 'channels', 'crop_hw': [144, 144], 'crop_down_offset': 48, 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'add_crop_binary_mask': False, 'add_coord_conv_map': False, 'use_context_color': False, 'use_context_depth': False, 'use_context_segmask': False, 'context_color_crop_type': None, 'context_depth_crop_type': None, 'context_segmask_crop_type': None, 'context_add_crop_binary_mask': False, 'context_add_coord_conv_map': False, 'use_contact_map': True, 'use_sdf_maps': True, 'use_normals_maps': True, 'which_objects': 'both', 'max_contact_prob': 0.1, 'max_depth': 2.0, 'grasped_dtc_max_value': 0.2, 'env_dtc_max_value': 0.4, 'grasped_normals_mask_max_dtc_value': 0.2, 'env_normals_mask_max_dtc_value': 0.4, 'clamp_dtc': True, 'dtc_adaptive_normalization': False, 'mask_normals_within_sdf': True, 'adaptive_normals_mask': True, 'learnable_contact_preprocess_params': True, 'contact_model_name': 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9', 'contact_estimation_model_ckpt_path': '~/fish_leon/contact_estimation/artifacts/175604_2/checkpoints/epoch=09-val_loss=0.00.ckpt', 'encoder_type': 'small', 'debug_timestamps': False, 'open_loop': False, 'action_trajectories': True, 'stop_after_action': False, 'interpolation_frequency': 25, 'policy_frequency': 5, 'wait_for_new_camera_frames': True, 'baseline': False, 'train_demo_idxs_list_or_num': -1, 'log_train_every_steps': 25, 'name_of_expert_demo': '120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'expert_dataset_dirpath': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'store_dataset_in_memory': False, 'expert_dataset': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'action_key': 'action_trajectory_25hz', 'semantic_demo_grouping_name': 'semantic_demo_grouping.yaml', 'semantic_demo_grouping': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/semantic_demo_grouping.yaml', 'include_groups_list': 'all', 'expert_dataset_config': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demo_config.yaml', 'name_of_valid_demo': '120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'valid_dataset_dir': '/home/leonmkim/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/120_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'valid_demo_idxs_list_or_num': None, 'val_num_groups': 7, 'load_bc': True, 'checkpoint_epoch_list': [99, 199, 299, 399, 499, 599, 699, 799, 899, 999, 1249, 1499, 1749, 1999, 2999, 3999, 4999, 5999, 6999, 7999, 8999, 9999], 'snapshot_root_dir': '/mnt/grasp_high_usage/leonmkim/contact_estimation/FISH', 'save_snapshot': True, 'save_last_snapshot': True, 'save_snapshot_when_done': True, 'top_k_checkpoints': 5, 'save_snapshot_link_to_weights_dir': 'deprecated', 'restore_missing_checkpoint': None, 'bc_regularize': False, 'bc_weight_type': 'qfilter', 'experiment_dir': './exp_local/frankagym_pixels/FrankaInsertion-v1/4295_2', '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', 'crop_distractors_tlhw': [32, 68, 174, 174], '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': False, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': True, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}, 'context_input_config': {'_target_': 'agent.encoder.ContextInputConfig', 'use_color': False, 'use_depth': False, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': False, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}}, 'mask_soft_approx_scheduler_config': {'_target_': 'agent.encoder.MaskSoftApproxSchedulerConfig', 'num_steps': 40000, 'initial_value': 10.0, 'final_value': 1000.0, 'interpolation_scheme': 'cosine'}, 'use_contact_map': True, 'use_sdf_maps': True, 'use_normals_maps': True, 'which_objects': 'both', 'grasped_dtc_max_value': 0.2, 'env_dtc_max_value': 0.4, 'grasped_normals_mask_max_dtc_value': 0.2, 'env_normals_mask_max_dtc_value': 0.4, 'clamp_dtc': True, 'max_contact_prob': 0.1, 'mask_normals_within_sdf': True, 'dtc_adaptive_normalization': False, 'adaptive_normals_mask': True, 'max_depth': 2.0, 'image_shape': [13, 180, 240], 'learnable_contact_preprocess_params': True, 'learning_rate': 0.0001, 'weight_decay': 0.0, 'contact_model_name': 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9', 'zero_centered': False, 'crop_distractors_tlhw': [32, 68, 174, 174]}}}, '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': 2, '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', 'crop_distractors_tlhw': [32, 68, 174, 174], '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': False, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': True, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}, 'context_input_config': {'_target_': 'agent.encoder.ContextInputConfig', 'use_color': False, 'use_depth': False, 'mask_input_dict': {'_target_': 'agent.encoder.MaskInputDict', 'enable': False, 'representation': 'channels', 'mask_list': ['EE_obj_mask']}, 'crop_input_config': {'_target_': 'agent.encoder.CropInputConfig', 'color_crop_type': None, 'depth_crop_type': None, 'segmask_crop_type': None, 'crop_hw': [144, 144], 'crop_down_offset': 48, 'add_crop_binary_mask': False, 'add_coord_conv_map': False}}, 'mask_soft_approx_scheduler_config': {'_target_': 'agent.encoder.MaskSoftApproxSchedulerConfig', 'num_steps': 40000, 'initial_value': 10.0, 'final_value': 1000.0, 'interpolation_scheme': 'cosine'}, 'use_contact_map': True, 'use_sdf_maps': True, 'use_normals_maps': True, 'which_objects': 'both', 'grasped_dtc_max_value': 0.2, 'env_dtc_max_value': 0.4, 'grasped_normals_mask_max_dtc_value': 0.2, 'env_normals_mask_max_dtc_value': 0.4, 'clamp_dtc': True, 'max_contact_prob': 0.1, 'mask_normals_within_sdf': True, 'dtc_adaptive_normalization': False, 'adaptive_normals_mask': True, 'max_depth': 2.0, 'image_shape': [13, 180, 240], 'learnable_contact_preprocess_params': True, 'learning_rate': 0.0001, 'weight_decay': 0.0, 'contact_model_name': 'local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9', 'zero_centered': False, 'crop_distractors_tlhw': [32, 68, 174, 174]}}, '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', 'test': {'username': 'leonmkim', 'hostname': 'grasp-login1', 'name_of_expert_demo': '112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'root_dir': '~/fish_leon', 'expert_dataset_dirpath': '~/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act', 'expert_dataset': '~/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/demos.zarr', 'semantic_demo_grouping_name': 'semantic_demo_grouping.yaml', 'semantic_demo_grouping': '~/fish_leon/FISH/expert_demos/frankagym/FrankaInsertion-v1/112_240x320_all_twodim_left_to_right_annotated_start_idx_5hz_zstd7_EE_pxl_coords_expert_demos_imp_act/semantic_demo_grouping.yaml', 'include_groups_list': 'all', 'batch_size': 128, 'store_dataset_in_memory': False, 'use_tb': True, 'local_snapshot_root_dir': '/mnt/bighdd/fish_contact_backup', 'local_snapshot_dir': '/mnt/bighdd/fish_contact_backup/exp_local/frankagym_pixels/FrankaInsertion-v1', 'resume_wandb_run': False}, 'feature_type': '180x240_crpdstlhw24x51x130x130_1_D_2.0_msk_channels_EE_obj_mask_cntct_0.1_DTC_clmpd_lrnbl_nrmls_DTCmask_adpt_lrnbl_both_lr_0.0001_wd_0.0_local_multitask_outhd64all_home_crop_h144w144d48_mask_ctxtmask_seed_220979_epoch_9_acthist_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': 7500, '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/4295_2', 'residual_weight': '/home/leonmkim/fish_leon/FISH/weights/frankagym_pixels/FrankaInsertion-v1/weight.pt', 'final_experiment_dir': './exp_local/frankagym_pixels/FrankaInsertion-v1/4295_2/1rhki7g4'}
14
+ 2025-01-21 22:22:18,904 INFO MainThread:2665365 [wandb_init.py:init():619] starting backend
15
+ 2025-01-21 22:22:18,904 INFO MainThread:2665365 [wandb_init.py:init():623] setting up manager
16
+ 2025-01-21 22:22:18,908 INFO MainThread:2665365 [backend.py:_multiprocessing_setup():105] multiprocessing start_methods=fork,spawn,forkserver, using: spawn
17
+ 2025-01-21 22:22:18,909 INFO MainThread:2665365 [wandb_init.py:init():631] backend started and connected
18
+ 2025-01-21 22:22:18,923 INFO MainThread:2665365 [wandb_init.py:init():720] updated telemetry
19
+ 2025-01-21 22:22:18,930 INFO MainThread:2665365 [wandb_init.py:init():753] communicating run to backend with 90.0 second timeout
20
+ 2025-01-21 22:22:19,195 INFO MainThread:2665365 [wandb_run.py:_on_init():2435] communicating current version
21
+ 2025-01-21 22:22:19,263 INFO MainThread:2665365 [wandb_run.py:_on_init():2444] got version response upgrade_message: "wandb version 0.19.4 is available! To upgrade, please run:\n $ pip install wandb --upgrade"
22
+
23
+ 2025-01-21 22:22:19,263 INFO MainThread:2665365 [wandb_init.py:init():804] starting run threads in backend
24
+ 2025-01-21 22:22:19,613 INFO MainThread:2665365 [wandb_run.py:_console_start():2413] atexit reg
25
+ 2025-01-21 22:22:19,613 INFO MainThread:2665365 [wandb_run.py:_redirect():2255] redirect: wrap_raw
26
+ 2025-01-21 22:22:19,613 INFO MainThread:2665365 [wandb_run.py:_redirect():2320] Wrapping output streams.
27
+ 2025-01-21 22:22:19,613 INFO MainThread:2665365 [wandb_run.py:_redirect():2345] Redirects installed.
28
+ 2025-01-21 22:22:19,615 INFO MainThread:2665365 [wandb_init.py:init():847] run started, returning control to user process
29
+ 2025-01-21 22:22:19,616 INFO MainThread:2665365 [wandb_run.py:_tensorboard_callback():1544] tensorboard callback: /home/leonmkim/fish_leon/FISH/exp_local/frankagym_pixels/FrankaInsertion-v1/4295_2/1rhki7g4/tb, True
30
+ 2025-01-21 22:22:29,135 INFO MainThread:2665365 [wandb_run.py:_config_callback():1382] config_cb None None {'grasped_obj_name': 'greece', 'left_book_slot': 'twodim'}
31
+ 2025-01-21 22:26:55,123 WARNING MsgRouterThr:2665365 [router.py:message_loop():77] message_loop has been closed
snapshot_10500.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e8f1af61406c7cad1891e3934fed322e36f5c02bdf3f36b3bfd2b4918960a1aa
3
+ size 910332934
snapshot_4500.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:abe864f2ed9503cda05ba223fbe1ba6527d482ac8190d4e40ec4856ba3180940
3
+ size 910332424
snapshot_6000.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5ddc1fdf8a9336d1df729fe4e53e209fb1c085dab5c94eec70ea8ed01cc56062
3
+ size 910332424