Timsty commited on
Commit
3aeb818
·
verified ·
1 Parent(s): 1014a9a

Add files using upload-large-folder tool

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +364 -0
  2. Isaac-GR00T/demo_data/cube_to_bowl_5/data/chunk-000/episode_000000.parquet +3 -0
  3. Isaac-GR00T/demo_data/cube_to_bowl_5/data/chunk-000/episode_000001.parquet +3 -0
  4. Isaac-GR00T/demo_data/cube_to_bowl_5/data/chunk-000/episode_000002.parquet +3 -0
  5. Isaac-GR00T/demo_data/cube_to_bowl_5/data/chunk-000/episode_000003.parquet +3 -0
  6. Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.front/episode_000000.mp4 +3 -0
  7. Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.front/episode_000001.mp4 +3 -0
  8. Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.front/episode_000002.mp4 +3 -0
  9. Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.front/episode_000003.mp4 +3 -0
  10. Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.front/episode_000004.mp4 +3 -0
  11. Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.wrist/episode_000000.mp4 +3 -0
  12. Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.wrist/episode_000001.mp4 +3 -0
  13. Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.wrist/episode_000002.mp4 +3 -0
  14. Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.wrist/episode_000003.mp4 +3 -0
  15. Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.wrist/episode_000004.mp4 +3 -0
  16. Isaac-GR00T/demo_data/cube_to_bowl_5_with_mask/data/chunk-000/episode_000000.parquet +3 -0
  17. Isaac-GR00T/demo_data/cube_to_bowl_5_with_mask/masks/chunk-000/observation.images.front/episode_000000_masks.npz +3 -0
  18. Isaac-GR00T/demo_data/cube_to_bowl_5_with_mask/masks/chunk-000/observation.images.wrist/episode_000000_masks.npz +3 -0
  19. Isaac-GR00T/demo_data/cube_to_bowl_5_with_mask/videos/chunk-000/observation.images.front/episode_000000.mp4 +3 -0
  20. Isaac-GR00T/demo_data/cube_to_bowl_5_with_mask/videos/chunk-000/observation.images.wrist/episode_000000.mp4 +3 -0
  21. Isaac-GR00T/demo_data/droid_sample/data/chunk-000/episode_000000.parquet +3 -0
  22. Isaac-GR00T/demo_data/droid_sample/data/chunk-000/episode_000001.parquet +3 -0
  23. Isaac-GR00T/demo_data/droid_sample/data/chunk-000/episode_000002.parquet +3 -0
  24. Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.exterior_1_left/episode_000000.mp4 +3 -0
  25. Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.exterior_1_left/episode_000001.mp4 +3 -0
  26. Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.exterior_1_left/episode_000002.mp4 +3 -0
  27. Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.wrist_left/episode_000000.mp4 +3 -0
  28. Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.wrist_left/episode_000001.mp4 +3 -0
  29. Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.wrist_left/episode_000002.mp4 +3 -0
  30. Isaac-GR00T/demo_data/simplerenv_bridge_sample/data/chunk-000/episode_000000.parquet +3 -0
  31. Isaac-GR00T/demo_data/simplerenv_bridge_sample/data/chunk-000/episode_000001.parquet +3 -0
  32. Isaac-GR00T/demo_data/simplerenv_bridge_sample/data/chunk-000/episode_000002.parquet +3 -0
  33. Isaac-GR00T/demo_data/simplerenv_bridge_sample/videos/chunk-000/observation.images.image_0/episode_000000.mp4 +3 -0
  34. Isaac-GR00T/demo_data/simplerenv_bridge_sample/videos/chunk-000/observation.images.image_0/episode_000001.mp4 +3 -0
  35. Isaac-GR00T/demo_data/simplerenv_bridge_sample/videos/chunk-000/observation.images.image_0/episode_000002.mp4 +3 -0
  36. Isaac-GR00T/examples/DROID/README.md +110 -0
  37. Isaac-GR00T/examples/DROID/main_gr00t.py +503 -0
  38. Isaac-GR00T/examples/DROID/server_client.py +395 -0
  39. Isaac-GR00T/examples/DROID/utils.py +81 -0
  40. Isaac-GR00T/examples/GR00TWholeBodyControl/README.md +115 -0
  41. Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_apple_01_retry_success.jpg +0 -0
  42. Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_apple_02_adjust_success.jpg +0 -0
  43. Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_flashlight_01_smooth_success.jpg +0 -0
  44. Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_flashlight_02_pickup_success.jpg +0 -0
  45. Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_fruit_01_pickup_success.jpg +0 -0
  46. Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_fruit_02_regrasp_success.jpg +0 -0
  47. Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_lamp_01_pickup_success.jpg +0 -0
  48. Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_lamp_02_base_grasp_success.jpg +0 -0
  49. Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_scoop_01_pickup_success.jpg +0 -0
  50. Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_scoop_02_noisy_success.jpg +0 -0
.gitattributes CHANGED
@@ -791,3 +791,367 @@ GR00T-WholeBodyControl/decoupled_wbc/dexmg/gr00trobocasa/robocasa/models/assets/
791
  GR00T-WholeBodyControl/decoupled_wbc/dexmg/gr00trobocasa/robocasa/models/assets/robots/unitree_g1/meshes/logo_link.STL filter=lfs diff=lfs merge=lfs -text
792
  GR00T-WholeBodyControl/decoupled_wbc/dexmg/gr00trobocasa/robocasa/models/assets/robots/unitree_g1/meshes/right_shoulder_yaw_link.STL filter=lfs diff=lfs merge=lfs -text
793
  GR00T-WholeBodyControl/decoupled_wbc/dexmg/gr00trobocasa/robocasa/models/assets/robots/unitree_g1/meshes/waist_yaw_link_rev_1_0.STL filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
791
  GR00T-WholeBodyControl/decoupled_wbc/dexmg/gr00trobocasa/robocasa/models/assets/robots/unitree_g1/meshes/logo_link.STL filter=lfs diff=lfs merge=lfs -text
792
  GR00T-WholeBodyControl/decoupled_wbc/dexmg/gr00trobocasa/robocasa/models/assets/robots/unitree_g1/meshes/right_shoulder_yaw_link.STL filter=lfs diff=lfs merge=lfs -text
793
  GR00T-WholeBodyControl/decoupled_wbc/dexmg/gr00trobocasa/robocasa/models/assets/robots/unitree_g1/meshes/waist_yaw_link_rev_1_0.STL filter=lfs diff=lfs merge=lfs -text
794
+ Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/videos/mixed_pickup_lamp_01_pickup_success.mp4 filter=lfs diff=lfs merge=lfs -text
795
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/textures/yellow_linen_wall_texture.png filter=lfs diff=lfs merge=lfs -text
796
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/textures/smooth_light_gray_plaster.png filter=lfs diff=lfs merge=lfs -text
797
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/textures/brown_ceramic_tile.png filter=lfs diff=lfs merge=lfs -text
798
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/textures/martin_novak_wood_table.png filter=lfs diff=lfs merge=lfs -text
799
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/textures/light_floor.png filter=lfs diff=lfs merge=lfs -text
800
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/textures/white_marble_floor.png filter=lfs diff=lfs merge=lfs -text
801
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/textures/new_light_gray_plaster.png filter=lfs diff=lfs merge=lfs -text
802
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/white_storage_box/ceramic.png filter=lfs diff=lfs merge=lfs -text
803
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/black_book/black_book_texture.png filter=lfs diff=lfs merge=lfs -text
804
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/wine_rack_stand/metal.png filter=lfs diff=lfs merge=lfs -text
805
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/moka_pot/metal_diff.png filter=lfs diff=lfs merge=lfs -text
806
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/moka_pot/rubber_black.png filter=lfs diff=lfs merge=lfs -text
807
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/wine_rack/light-wood.png filter=lfs diff=lfs merge=lfs -text
808
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/wine_rack/light_yellow_metal.png filter=lfs diff=lfs merge=lfs -text
809
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/wine_rack/metal.png filter=lfs diff=lfs merge=lfs -text
810
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/bowl_drainer/ceramic.png filter=lfs diff=lfs merge=lfs -text
811
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/red_coffee_mug/red_coffee_mug_texture.png filter=lfs diff=lfs merge=lfs -text
812
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/white_yellow_mug/white_yellow_mug_texture.png filter=lfs diff=lfs merge=lfs -text
813
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/porcelain_mug/porcelain_mug_texture.png filter=lfs diff=lfs merge=lfs -text
814
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/dining_set_group/white_linen_texture.png filter=lfs diff=lfs merge=lfs -text
815
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/wooden_tray/crate_mat_BaseColor.png filter=lfs diff=lfs merge=lfs -text
816
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/dining_set_group/metal.png filter=lfs diff=lfs merge=lfs -text
817
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/wine_bottle/cork_texture.png filter=lfs diff=lfs merge=lfs -text
818
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/wine_bottle/label_wine.png filter=lfs diff=lfs merge=lfs -text
819
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/flat_stove/stove_knob_button/button_dark_texture.png filter=lfs diff=lfs merge=lfs -text
820
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/short_fridge/base/visual/base_vis.msh filter=lfs diff=lfs merge=lfs -text
821
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/basin_faucet/basin_faucet_base/visual/basin_faucet_base_vis.msh filter=lfs diff=lfs merge=lfs -text
822
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/short_cabinet/base/dark-wood.png filter=lfs diff=lfs merge=lfs -text
823
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/short_cabinet/drawer_low/visual/drawer_low_vis.msh filter=lfs diff=lfs merge=lfs -text
824
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/short_cabinet/drawer_middle/visual/drawer_middle_vis.msh filter=lfs diff=lfs merge=lfs -text
825
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/short_cabinet/drawer_high/visual/drawer_high_vis.msh filter=lfs diff=lfs merge=lfs -text
826
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/chefmate_8_frypan/texture.png filter=lfs diff=lfs merge=lfs -text
827
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/basket/texture.png filter=lfs diff=lfs merge=lfs -text
828
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/wine_bottle/Cork_Texture_by_faycop.jpg filter=lfs diff=lfs merge=lfs -text
829
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/desk_caddy/desk_caddy_texture.png filter=lfs diff=lfs merge=lfs -text
830
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/desk_caddy/visual/desk_caddy_vis.msh filter=lfs diff=lfs merge=lfs -text
831
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/wine_bottle/visual/wine_bottle_red_main_vis.msh filter=lfs diff=lfs merge=lfs -text
832
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/dining_set_group/visual/dining_set_utensils_vis.msh filter=lfs diff=lfs merge=lfs -text
833
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/porcelain_mug/visual/porcelain_mug_vis.msh filter=lfs diff=lfs merge=lfs -text
834
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/white_yellow_mug/visual/white_yellow_mug_vis.msh filter=lfs diff=lfs merge=lfs -text
835
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/red_coffee_mug/visual/red_coffee_mug_vis.msh filter=lfs diff=lfs merge=lfs -text
836
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/bowl_drainer/visual/bowl_drainer_vis.msh filter=lfs diff=lfs merge=lfs -text
837
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/moka_pot/visual/moka_pot_body_vis.msh filter=lfs diff=lfs merge=lfs -text
838
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/yellow_book/visual/yellow_book_vis.msh filter=lfs diff=lfs merge=lfs -text
839
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/turbosquid_objects/black_book/visual/black_book_vis.msh filter=lfs diff=lfs merge=lfs -text
840
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/short_fridge/metal.png filter=lfs diff=lfs merge=lfs -text
841
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/basin_faucet/ceramic.png filter=lfs diff=lfs merge=lfs -text
842
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/textures/metal1.png filter=lfs diff=lfs merge=lfs -text
843
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/textures/metal2.png filter=lfs diff=lfs merge=lfs -text
844
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/white_cabinet/metal.png filter=lfs diff=lfs merge=lfs -text
845
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/flat_stove/metal.png filter=lfs diff=lfs merge=lfs -text
846
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/white_cabinet/white_wood.png filter=lfs diff=lfs merge=lfs -text
847
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/flat_stove/button_dark_texture.png filter=lfs diff=lfs merge=lfs -text
848
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/flat_stove/steel-scratched.png filter=lfs diff=lfs merge=lfs -text
849
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/wooden_cabinet/metal.png filter=lfs diff=lfs merge=lfs -text
850
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/wooden_cabinet/wooden_cabinet_top_handle/metal.png filter=lfs diff=lfs merge=lfs -text
851
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/wooden_cabinet/wooden_cabinet_middle_handle/metal.png filter=lfs diff=lfs merge=lfs -text
852
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/flat_stove/stove_knob_base/steel-scratched.png filter=lfs diff=lfs merge=lfs -text
853
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/articulated_objects/flat_stove/stove_knob_button/steel-scratched.png filter=lfs diff=lfs merge=lfs -text
854
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/plate/texture.png filter=lfs diff=lfs merge=lfs -text
855
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/white_bowl/texture.png filter=lfs diff=lfs merge=lfs -text
856
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/glazed_rim_porcelain_ramekin/texture.png filter=lfs diff=lfs merge=lfs -text
857
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/akita_black_bowl/texture.png filter=lfs diff=lfs merge=lfs -text
858
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/red_bowl/visual/model_vis.msh filter=lfs diff=lfs merge=lfs -text
859
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/basin_faucet_base/visual/basin_faucet_base_vis.msh filter=lfs diff=lfs merge=lfs -text
860
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/red_bowl/texture.png filter=lfs diff=lfs merge=lfs -text
861
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/simple_rack/visual/simple_rack_vis.msh filter=lfs diff=lfs merge=lfs -text
862
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/glazed_rim_porcelain_ramekin/visual/glazed_rim_porcelain_ramekin_vis.msh filter=lfs diff=lfs merge=lfs -text
863
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/akita_black_bowl/visual/akita_black_bowl_vis.msh filter=lfs diff=lfs merge=lfs -text
864
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/white_bowl/visual/model_vis.msh filter=lfs diff=lfs merge=lfs -text
865
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/plate/visual/model_vis.msh filter=lfs diff=lfs merge=lfs -text
866
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/chefmate_8_frypan/visual/chefmate_8_frypan_vis.msh filter=lfs diff=lfs merge=lfs -text
867
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_scanned_objects/basket/visual/basket_vis.msh filter=lfs diff=lfs merge=lfs -text
868
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/orange_juice/texture_map.png filter=lfs diff=lfs merge=lfs -text
869
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/ketchup/texture_map.png filter=lfs diff=lfs merge=lfs -text
870
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/macaroni_and_cheese/texture_map.png filter=lfs diff=lfs merge=lfs -text
871
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/alphabet_soup/texture_map.png filter=lfs diff=lfs merge=lfs -text
872
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/cookies/texture_map.png filter=lfs diff=lfs merge=lfs -text
873
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/chocolate_pudding/texture_map.png filter=lfs diff=lfs merge=lfs -text
874
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/cream_cheese/texture_map.png filter=lfs diff=lfs merge=lfs -text
875
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/new_salad_dressing/texture_map.png filter=lfs diff=lfs merge=lfs -text
876
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/salad_dressing/texture_map.png filter=lfs diff=lfs merge=lfs -text
877
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/butter/texture_map.png filter=lfs diff=lfs merge=lfs -text
878
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/milk/texture_map.png filter=lfs diff=lfs merge=lfs -text
879
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/tomato_sauce/texture_map.png filter=lfs diff=lfs merge=lfs -text
880
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/popcorn/texture_map.png filter=lfs diff=lfs merge=lfs -text
881
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/bbq_sauce/texture_map.png filter=lfs diff=lfs merge=lfs -text
882
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/bbq_sauce/visual/bbq_sauce_vis.msh filter=lfs diff=lfs merge=lfs -text
883
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/popcorn/visual/popcorn_vis.msh filter=lfs diff=lfs merge=lfs -text
884
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/tomato_sauce/visual/textured_vis.msh filter=lfs diff=lfs merge=lfs -text
885
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/milk/visual/textured_vis.msh filter=lfs diff=lfs merge=lfs -text
886
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/butter/visual/butter_vis.msh filter=lfs diff=lfs merge=lfs -text
887
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/salad_dressing/visual/textured_vis.msh filter=lfs diff=lfs merge=lfs -text
888
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/new_salad_dressing/visual/textured_vis.msh filter=lfs diff=lfs merge=lfs -text
889
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/chocolate_pudding/visual/textured_vis.msh filter=lfs diff=lfs merge=lfs -text
890
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/cream_cheese/visual/cream_cheese_vis.msh filter=lfs diff=lfs merge=lfs -text
891
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/cookies/visual/cookies_vis.msh filter=lfs diff=lfs merge=lfs -text
892
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/alphabet_soup/visual/textured_vis.msh filter=lfs diff=lfs merge=lfs -text
893
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/ketchup/visual/textured_vis.msh filter=lfs diff=lfs merge=lfs -text
894
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/macaroni_and_cheese/visual/textured_vis.msh filter=lfs diff=lfs merge=lfs -text
895
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/stable_hope_objects/orange_juice/visual/textured_vis.msh filter=lfs diff=lfs merge=lfs -text
896
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/short_coffee_table/Marble062_COL_4K.png filter=lfs diff=lfs merge=lfs -text
897
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/coffee_table_seats/FabricLeatherBuffaloRustic001_COL_VAR1_4K.png filter=lfs diff=lfs merge=lfs -text
898
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/desk/desk_texture.png filter=lfs diff=lfs merge=lfs -text
899
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/black_book/black_book_texture.png filter=lfs diff=lfs merge=lfs -text
900
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/study_background/study_background.png filter=lfs diff=lfs merge=lfs -text
901
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/wall_decoration/wall_decoration_texture.jpg filter=lfs diff=lfs merge=lfs -text
902
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/kitchen_background/kitchen_background.png filter=lfs diff=lfs merge=lfs -text
903
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/wall_decoration/wall_decoration_texture.png filter=lfs diff=lfs merge=lfs -text
904
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/plant/plant_texture.png filter=lfs diff=lfs merge=lfs -text
905
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/fridge/metal.png filter=lfs diff=lfs merge=lfs -text
906
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/fridge/steel-scratched.png filter=lfs diff=lfs merge=lfs -text
907
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/living_room_table/living_room_table_texture.png filter=lfs diff=lfs merge=lfs -text
908
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/study_wall_painting/study_wall_painting.png filter=lfs diff=lfs merge=lfs -text
909
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/office_book_shelf/ceramic.png filter=lfs diff=lfs merge=lfs -text
910
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/kitchen_background_hot_pot/visual/kitchen_background_hot_pot_vis.msh filter=lfs diff=lfs merge=lfs -text
911
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/living_room_table/collision/living_room_table_ch.stl filter=lfs diff=lfs merge=lfs -text
912
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/living_room_table/visual/living_room_table_vis.msh filter=lfs diff=lfs merge=lfs -text
913
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/fridge/visual/fridge_vis.msh filter=lfs diff=lfs merge=lfs -text
914
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/kitchen_background_pot/collision/kitchen_background_pot_ch.stl filter=lfs diff=lfs merge=lfs -text
915
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/plant/visual/plant_vis.msh filter=lfs diff=lfs merge=lfs -text
916
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/kitchen_background_stove/visual/kitchen_background_stove_vis.msh filter=lfs diff=lfs merge=lfs -text
917
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/kitchen_background_pot/visual/kitchen_background_pot_vis.msh filter=lfs diff=lfs merge=lfs -text
918
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/study_background/visual/study_background_vis.msh filter=lfs diff=lfs merge=lfs -text
919
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/kitchen_background/visual/kitchen_background_vis.msh filter=lfs diff=lfs merge=lfs -text
920
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/floor_lamp/collision/floor_lamp_ch.stl filter=lfs diff=lfs merge=lfs -text
921
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/floor_lamp/visual/floor_lamp_vis.msh filter=lfs diff=lfs merge=lfs -text
922
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/black_book/visual/black_book_vis.msh filter=lfs diff=lfs merge=lfs -text
923
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/living_room/visual/living_room_vis.msh filter=lfs diff=lfs merge=lfs -text
924
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/desk/visual/desk_vis.msh filter=lfs diff=lfs merge=lfs -text
925
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/coffee_table_seats/collision/coffee_table_seats_ch.stl filter=lfs diff=lfs merge=lfs -text
926
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/scenes/coffee_table_seats/visual/coffee_table_seats_vis.msh filter=lfs diff=lfs merge=lfs -text
927
+ Isaac-GR00T/external_dependencies/robocasa-gr1-tabletop-tasks/images/fig_task_v6.png filter=lfs diff=lfs merge=lfs -text
928
+ Isaac-GR00T/external_dependencies/robocasa-gr1-tabletop-tasks/images/fig_task_v6.pdf filter=lfs diff=lfs merge=lfs -text
929
+ Isaac-GR00T/external_dependencies/robocasa/docs/images/styles.png filter=lfs diff=lfs merge=lfs -text
930
+ Isaac-GR00T/external_dependencies/robocasa/docs/images/layouts.png filter=lfs diff=lfs merge=lfs -text
931
+ Isaac-GR00T/external_dependencies/robocasa/docs/images/robocasa-banner.jpg filter=lfs diff=lfs merge=lfs -text
932
+ Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.wrist/episode_000002.mp4 filter=lfs diff=lfs merge=lfs -text
933
+ Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.wrist/episode_000000.mp4 filter=lfs diff=lfs merge=lfs -text
934
+ Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.wrist/episode_000004.mp4 filter=lfs diff=lfs merge=lfs -text
935
+ Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.wrist/episode_000003.mp4 filter=lfs diff=lfs merge=lfs -text
936
+ Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.wrist/episode_000001.mp4 filter=lfs diff=lfs merge=lfs -text
937
+ Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.front/episode_000000.mp4 filter=lfs diff=lfs merge=lfs -text
938
+ Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.front/episode_000002.mp4 filter=lfs diff=lfs merge=lfs -text
939
+ Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.front/episode_000004.mp4 filter=lfs diff=lfs merge=lfs -text
940
+ Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.front/episode_000001.mp4 filter=lfs diff=lfs merge=lfs -text
941
+ Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.front/episode_000003.mp4 filter=lfs diff=lfs merge=lfs -text
942
+ Isaac-GR00T/demo_data/simplerenv_bridge_sample/videos/chunk-000/observation.images.image_0/episode_000000.mp4 filter=lfs diff=lfs merge=lfs -text
943
+ Isaac-GR00T/demo_data/simplerenv_bridge_sample/videos/chunk-000/observation.images.image_0/episode_000002.mp4 filter=lfs diff=lfs merge=lfs -text
944
+ Isaac-GR00T/demo_data/simplerenv_bridge_sample/videos/chunk-000/observation.images.image_0/episode_000001.mp4 filter=lfs diff=lfs merge=lfs -text
945
+ Isaac-GR00T/demo_data/cube_to_bowl_5_with_mask/videos/chunk-000/observation.images.wrist/episode_000000.mp4 filter=lfs diff=lfs merge=lfs -text
946
+ Isaac-GR00T/demo_data/cube_to_bowl_5_with_mask/videos/chunk-000/observation.images.front/episode_000000.mp4 filter=lfs diff=lfs merge=lfs -text
947
+ Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.wrist_left/episode_000000.mp4 filter=lfs diff=lfs merge=lfs -text
948
+ Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.wrist_left/episode_000001.mp4 filter=lfs diff=lfs merge=lfs -text
949
+ Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.wrist_left/episode_000002.mp4 filter=lfs diff=lfs merge=lfs -text
950
+ Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.exterior_1_left/episode_000000.mp4 filter=lfs diff=lfs merge=lfs -text
951
+ Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.exterior_1_left/episode_000001.mp4 filter=lfs diff=lfs merge=lfs -text
952
+ Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.exterior_1_left/episode_000002.mp4 filter=lfs diff=lfs merge=lfs -text
953
+ Isaac-GR00T/scripts/deployment/spark/wheels/torchcodec-0.10.0a0-cp312-cp312-linux_aarch64.whl filter=lfs diff=lfs merge=lfs -text
954
+ Isaac-GR00T/scripts/deployment/dgpu/wheels/torchcodec-0.8.0-cp312-cp312-linux_aarch64.whl filter=lfs diff=lfs merge=lfs -text
955
+ Isaac-GR00T/scripts/deployment/orin/wheels/torchcodec-0.10.0a0-cp310-cp310-linux_aarch64.whl filter=lfs diff=lfs merge=lfs -text
956
+ Isaac-GR00T/scripts/deployment/thor/wheels/torchcodec-0.10.0a0-cp312-cp312-linux_aarch64.whl filter=lfs diff=lfs merge=lfs -text
957
+ Isaac-GR00T/scripts/deployment/spark/wheels/flash_attn-2.8.3-cp312-cp312-linux_aarch64.whl filter=lfs diff=lfs merge=lfs -text
958
+ Isaac-GR00T/external_dependencies/SimplerEnv/images/fSpy_calibration_example.png filter=lfs diff=lfs merge=lfs -text
959
+ Isaac-GR00T/external_dependencies/SimplerEnv/images/teaser.png filter=lfs diff=lfs merge=lfs -text
960
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/open_drawer_b2.png filter=lfs diff=lfs merge=lfs -text
961
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/open_drawer_c1.png filter=lfs diff=lfs merge=lfs -text
962
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/open_drawer_c0.png filter=lfs diff=lfs merge=lfs -text
963
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/open_drawer_a0.png filter=lfs diff=lfs merge=lfs -text
964
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/bridge_sink.png filter=lfs diff=lfs merge=lfs -text
965
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/open_drawer_c2.png filter=lfs diff=lfs merge=lfs -text
966
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/open_drawer_b0.png filter=lfs diff=lfs merge=lfs -text
967
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/bridge_real_eval_2.png filter=lfs diff=lfs merge=lfs -text
968
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/open_drawer_a2.png filter=lfs diff=lfs merge=lfs -text
969
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/open_drawer_b1.png filter=lfs diff=lfs merge=lfs -text
970
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/bridge_real_eval_1.png filter=lfs diff=lfs merge=lfs -text
971
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/open_drawer_a1.png filter=lfs diff=lfs merge=lfs -text
972
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/google_move_near_real_eval_1.png filter=lfs diff=lfs merge=lfs -text
973
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/debug/bridge_real_1.mp4 filter=lfs diff=lfs merge=lfs -text
974
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/debug/bridge_real_2_cleanup.png filter=lfs diff=lfs merge=lfs -text
975
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/debug/bridge_real_2.mp4 filter=lfs diff=lfs merge=lfs -text
976
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/debug/bridge_real_1_cleanup.png filter=lfs diff=lfs merge=lfs -text
977
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/hab2_bench_assets/stages/frl_apartment_stage_simple.glb filter=lfs diff=lfs merge=lfs -text
978
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/hab2_bench_assets/stages/Baked_sc1_staging_objaverse_cabinet2_h870.glb filter=lfs diff=lfs merge=lfs -text
979
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/hab2_bench_assets/stages/google_pick_coke_can_1_v4_alt_background_2.glb filter=lfs diff=lfs merge=lfs -text
980
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/hab2_bench_assets/stages/google_pick_coke_can_1_v4_no_roof.glb filter=lfs diff=lfs merge=lfs -text
981
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/hab2_bench_assets/stages/google_pick_coke_can_1_v4_alt_background.glb filter=lfs diff=lfs merge=lfs -text
982
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/hab2_bench_assets/stages/bridge_table_1_v2.glb filter=lfs diff=lfs merge=lfs -text
983
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/hab2_bench_assets/stages/minimalistic_modern_bedroom.glb filter=lfs diff=lfs merge=lfs -text
984
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/hab2_bench_assets/stages/google_pick_coke_can_1_v4.glb filter=lfs diff=lfs merge=lfs -text
985
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/hab2_bench_assets/stages/modern_office.glb filter=lfs diff=lfs merge=lfs -text
986
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/hab2_bench_assets/stages/Baked_sc1_staging_objaverse_cabinet1_h870.glb filter=lfs diff=lfs merge=lfs -text
987
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/hab2_bench_assets/stages/fractal_traj73_table.glb filter=lfs diff=lfs merge=lfs -text
988
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/hab2_bench_assets/stages/fractal_traj11_table.glb filter=lfs diff=lfs merge=lfs -text
989
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/hab2_bench_assets/stages/modern_bedroom_no_roof.glb filter=lfs diff=lfs merge=lfs -text
990
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/hab2_bench_assets/stages/modern_office_no_roof.glb filter=lfs diff=lfs merge=lfs -text
991
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/fractal/3289_0_cleanup.png filter=lfs diff=lfs merge=lfs -text
992
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/fractal/73_table_brighter.png filter=lfs diff=lfs merge=lfs -text
993
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/hab2_bench_assets/stages/bridge_table_1_v1.glb filter=lfs diff=lfs merge=lfs -text
994
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/fractal/805_0_cleanup_no_coke_can.png filter=lfs diff=lfs merge=lfs -text
995
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/fractal/1991_0_cleanup.png filter=lfs diff=lfs merge=lfs -text
996
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/fractal/805_0_cleanup.png filter=lfs diff=lfs merge=lfs -text
997
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/fractal/1495_0_cleanup.png filter=lfs diff=lfs merge=lfs -text
998
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/fractal/1539_0_cleanup_no_coke_can.png filter=lfs diff=lfs merge=lfs -text
999
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/fractal/another_counter_1.png filter=lfs diff=lfs merge=lfs -text
1000
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/fractal/1495_0_cleanup_no_coke_can.png filter=lfs diff=lfs merge=lfs -text
1001
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/fractal/1539_0_cleanup.png filter=lfs diff=lfs merge=lfs -text
1002
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/fractal/3289_0_cleanup_no_coke_can.png filter=lfs diff=lfs merge=lfs -text
1003
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/fractal/1257_0_cleanup.png filter=lfs diff=lfs merge=lfs -text
1004
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/fractal/1991_0_cleanup_no_coke_can.png filter=lfs diff=lfs merge=lfs -text
1005
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/bridge/bridge_sink_calibrate.png filter=lfs diff=lfs merge=lfs -text
1006
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/bridge/bridge_1_cleanup.png filter=lfs diff=lfs merge=lfs -text
1007
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/bridge/bridge_calibration.png filter=lfs diff=lfs merge=lfs -text
1008
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/bridge/stack_cube_1st_frame.png filter=lfs diff=lfs merge=lfs -text
1009
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/bridge/debug.png filter=lfs diff=lfs merge=lfs -text
1010
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/pick_coke_can_real_misc/google_standing_coke_can_c0_cleanup.png filter=lfs diff=lfs merge=lfs -text
1011
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/pick_coke_can_real_misc/google_coke_can_real_eval_1_brighter.png filter=lfs diff=lfs merge=lfs -text
1012
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/move_near_real_obj_variants/move_near_real_5_2.png filter=lfs diff=lfs merge=lfs -text
1013
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/move_near_real_obj_variants/move_near_real_1_2.png filter=lfs diff=lfs merge=lfs -text
1014
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/move_near_real_obj_variants/move_near_real_1_1.png filter=lfs diff=lfs merge=lfs -text
1015
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/move_near_real_obj_variants/move_near_real_3_1.png filter=lfs diff=lfs merge=lfs -text
1016
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/move_near_real_obj_variants/move_near_real_2_2.png filter=lfs diff=lfs merge=lfs -text
1017
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/move_near_real_obj_variants/move_near_real_4_1.png filter=lfs diff=lfs merge=lfs -text
1018
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/move_near_real_obj_variants/move_near_real_3_2.png filter=lfs diff=lfs merge=lfs -text
1019
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/move_near_real_obj_variants/move_near_real_4_2.png filter=lfs diff=lfs merge=lfs -text
1020
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/move_near_real_obj_variants/move_near_real_5_1.png filter=lfs diff=lfs merge=lfs -text
1021
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/real_inpainting/move_near_real_obj_variants/move_near_real_2_1.png filter=lfs diff=lfs merge=lfs -text
1022
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/stone_tabletop.glb filter=lfs diff=lfs merge=lfs -text
1023
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/7up_can/Pepsi1.001_baseColor.png filter=lfs diff=lfs merge=lfs -text
1024
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_orange_v2/textured.glb filter=lfs diff=lfs merge=lfs -text
1025
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_orange_v2/textured.baked.zero123plus.png filter=lfs diff=lfs merge=lfs -text
1026
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_orange_v2/textured.vis.glb filter=lfs diff=lfs merge=lfs -text
1027
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_coke_can/textured_cand1.glb filter=lfs diff=lfs merge=lfs -text
1028
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_coke_can/textured.glb filter=lfs diff=lfs merge=lfs -text
1029
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_coke_can/textured_toobright.glb filter=lfs diff=lfs merge=lfs -text
1030
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_coke_can/textured_bkup.glb filter=lfs diff=lfs merge=lfs -text
1031
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/opened_coke_can/Image_2.004.jpg filter=lfs diff=lfs merge=lfs -text
1032
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/bridge_spoon_generated_modified/Image_0.003.jpg filter=lfs diff=lfs merge=lfs -text
1033
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_redbull_can_v2_alt/textured.glb filter=lfs diff=lfs merge=lfs -text
1034
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_redbull_can_v2_alt/textured.baked.glb filter=lfs diff=lfs merge=lfs -text
1035
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_redbull_can_v2_alt/textured.baked.zero123plus.png filter=lfs diff=lfs merge=lfs -text
1036
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_apple/textured_cand1.glb filter=lfs diff=lfs merge=lfs -text
1037
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_redbull_can_v2_alt/textured.vis.glb filter=lfs diff=lfs merge=lfs -text
1038
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_apple/textured.glb filter=lfs diff=lfs merge=lfs -text
1039
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_apple/textured_toobright.glb filter=lfs diff=lfs merge=lfs -text
1040
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_apple/textured_bkup.glb filter=lfs diff=lfs merge=lfs -text
1041
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_coke_can_v2/textured.glb filter=lfs diff=lfs merge=lfs -text
1042
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_coke_can_v2/textured.baked.zero123plus.png filter=lfs diff=lfs merge=lfs -text
1043
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_coke_can_v2/textured.baked.glb filter=lfs diff=lfs merge=lfs -text
1044
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/coke_can/Image_2.004.jpg filter=lfs diff=lfs merge=lfs -text
1045
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_coke_can_v2/textured.vis.glb filter=lfs diff=lfs merge=lfs -text
1046
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_7up_can/textured_cand1.glb filter=lfs diff=lfs merge=lfs -text
1047
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_7up_can/textured.glb filter=lfs diff=lfs merge=lfs -text
1048
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_7up_can/textured_toobright.glb filter=lfs diff=lfs merge=lfs -text
1049
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_7up_can/textured_bkup.glb filter=lfs diff=lfs merge=lfs -text
1050
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_apple_v2/textured.glb filter=lfs diff=lfs merge=lfs -text
1051
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_apple_v2/textured.baked.zero123plus.png filter=lfs diff=lfs merge=lfs -text
1052
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_apple_v2/textured.vis.glb filter=lfs diff=lfs merge=lfs -text
1053
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_blue_plastic_bottle_v2/textured.glb filter=lfs diff=lfs merge=lfs -text
1054
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_blue_plastic_bottle_v2/textured.baked.glb filter=lfs diff=lfs merge=lfs -text
1055
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_blue_plastic_bottle_v2/textured.baked.zero123plus.png filter=lfs diff=lfs merge=lfs -text
1056
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_blue_plastic_bottle_v2/textured.vis.glb filter=lfs diff=lfs merge=lfs -text
1057
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_blue_plastic_bottle/textured.glb filter=lfs diff=lfs merge=lfs -text
1058
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_7up_can_v2/textured.glb filter=lfs diff=lfs merge=lfs -text
1059
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_7up_can_v2/textured.baked.zero123plus.png filter=lfs diff=lfs merge=lfs -text
1060
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/opened_redbull_can/Image_0.004.png filter=lfs diff=lfs merge=lfs -text
1061
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_7up_can_v2/textured.vis.glb filter=lfs diff=lfs merge=lfs -text
1062
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/opened_redbull_can/Image_3.002.jpg filter=lfs diff=lfs merge=lfs -text
1063
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_pepsi_can_v2/textured.glb filter=lfs diff=lfs merge=lfs -text
1064
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_pepsi_can_v2/textured.baked.zero123plus.png filter=lfs diff=lfs merge=lfs -text
1065
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_pepsi_can_v2/textured.vis.glb filter=lfs diff=lfs merge=lfs -text
1066
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/table_cloth_objaverse/Image_14.jpg filter=lfs diff=lfs merge=lfs -text
1067
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/pepsi_can/Image_0.png filter=lfs diff=lfs merge=lfs -text
1068
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_redbull_can_v2/Image_2.jpg filter=lfs diff=lfs merge=lfs -text
1069
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_redbull_can_v2/Image_0.005.png filter=lfs diff=lfs merge=lfs -text
1070
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_redbull_can/Image_2.jpg filter=lfs diff=lfs merge=lfs -text
1071
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/bridge_carrot_generated/Image_0.005.png filter=lfs diff=lfs merge=lfs -text
1072
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_redbull_can/Image_0.005.png filter=lfs diff=lfs merge=lfs -text
1073
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/apple/Image_0.001.png filter=lfs diff=lfs merge=lfs -text
1074
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/table_cloth_generated_shorter/Image_0.001.jpg filter=lfs diff=lfs merge=lfs -text
1075
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_pepsi_can/textured_cand1.glb filter=lfs diff=lfs merge=lfs -text
1076
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_pepsi_can/textured_toobright.glb filter=lfs diff=lfs merge=lfs -text
1077
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_pepsi_can/textured.glb filter=lfs diff=lfs merge=lfs -text
1078
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_pepsi_can/textured_bkup.glb filter=lfs diff=lfs merge=lfs -text
1079
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/opened_pepsi_can/Image_0.png filter=lfs diff=lfs merge=lfs -text
1080
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/table_cloth_generated/Image_0.001.jpg filter=lfs diff=lfs merge=lfs -text
1081
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_sponge_v2/textured.baked.zero123plus.png filter=lfs diff=lfs merge=lfs -text
1082
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/orange/Image_2.png filter=lfs diff=lfs merge=lfs -text
1083
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_sponge/textured_cand1.glb filter=lfs diff=lfs merge=lfs -text
1084
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_sponge/textured.glb filter=lfs diff=lfs merge=lfs -text
1085
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_sponge/textured_toobright.glb filter=lfs diff=lfs merge=lfs -text
1086
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_sponge/textured_bkup.glb filter=lfs diff=lfs merge=lfs -text
1087
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/blue_plastic_bottle/jasmine_tea_3.jpg.002.jpg filter=lfs diff=lfs merge=lfs -text
1088
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/opened_7up_can/Pepsi1.001_baseColor.png filter=lfs diff=lfs merge=lfs -text
1089
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/blue_plastic_bottle/textured.dae filter=lfs diff=lfs merge=lfs -text
1090
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/redbull_can_original/Image_0.004.png filter=lfs diff=lfs merge=lfs -text
1091
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/redbull_can_original/Image_3.002.jpg filter=lfs diff=lfs merge=lfs -text
1092
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/bridge_carrot_generated_modified/Image_0.005.png filter=lfs diff=lfs merge=lfs -text
1093
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/redbull_can/Image_0.004.png filter=lfs diff=lfs merge=lfs -text
1094
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/redbull_can/Image_3.002.jpg filter=lfs diff=lfs merge=lfs -text
1095
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_orange/textured_cand1.glb filter=lfs diff=lfs merge=lfs -text
1096
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_orange/textured_toobright.glb filter=lfs diff=lfs merge=lfs -text
1097
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_orange/textured.glb filter=lfs diff=lfs merge=lfs -text
1098
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_orange/textured_bkup.glb filter=lfs diff=lfs merge=lfs -text
1099
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_pepsi_can_v2/manual/Image_3.jpg filter=lfs diff=lfs merge=lfs -text
1100
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_pepsi_can_v2/manual/Image_0.png filter=lfs diff=lfs merge=lfs -text
1101
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_blue_plastic_bottle/old_not_very_good/textured_cand1.glb filter=lfs diff=lfs merge=lfs -text
1102
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_blue_plastic_bottle/old_not_very_good/textured.glb filter=lfs diff=lfs merge=lfs -text
1103
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_blue_plastic_bottle/old_not_very_good/textured_toobright.glb filter=lfs diff=lfs merge=lfs -text
1104
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_blue_plastic_bottle/old_not_very_good/textured_bkup.glb filter=lfs diff=lfs merge=lfs -text
1105
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_coke_can_v2/manual/Image_2.004.jpg filter=lfs diff=lfs merge=lfs -text
1106
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_redbull_can_v2_alt/manual/Image_0.004.png filter=lfs diff=lfs merge=lfs -text
1107
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/data/custom/models/baked_opened_redbull_can_v2_alt/manual/Image_3.002.jpg filter=lfs diff=lfs merge=lfs -text
1108
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/maniskill2-scene-2.glb filter=lfs diff=lfs merge=lfs -text
1109
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/3obj_recolor_cabinet_visual_matching_1/meta_ao_roughness_metalness.png filter=lfs diff=lfs merge=lfs -text
1110
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/3obj_recolor_cabinet_visual_matching_1/meta_normal.png filter=lfs diff=lfs merge=lfs -text
1111
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/3obj_recolor_cabinet_visual_matching_1/meta_diffuse.png filter=lfs diff=lfs merge=lfs -text
1112
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/3obj_recolor_tabletop_visual_matching_1/meta_ao_roughness_metalness.png filter=lfs diff=lfs merge=lfs -text
1113
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/3obj_recolor_tabletop_visual_matching_1/meta_normal.png filter=lfs diff=lfs merge=lfs -text
1114
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/3obj_recolor_sim/meta_ao_roughness_metalness.png filter=lfs diff=lfs merge=lfs -text
1115
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/3obj_recolor_sim/meta_normal.png filter=lfs diff=lfs merge=lfs -text
1116
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/3obj/meta_ao_roughness_metalness.png filter=lfs diff=lfs merge=lfs -text
1117
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/3obj/meta_normal.png filter=lfs diff=lfs merge=lfs -text
1118
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/3obj/meta_diffuse.png filter=lfs diff=lfs merge=lfs -text
1119
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/3obj/link_base.glb filter=lfs diff=lfs merge=lfs -text
1120
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/coarse_meshes/link_base_1.glb filter=lfs diff=lfs merge=lfs -text
1121
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/coarse_meshes/link_base_2.glb filter=lfs diff=lfs merge=lfs -text
1122
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/coarse_meshes/link_rear_wheel.glb filter=lfs diff=lfs merge=lfs -text
1123
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/coarse_meshes/link_base_5.glb filter=lfs diff=lfs merge=lfs -text
1124
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/coarse_meshes/link_base_4.glb filter=lfs diff=lfs merge=lfs -text
1125
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/coarse_meshes/link_base_3.glb filter=lfs diff=lfs merge=lfs -text
1126
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/3obj_recolor_tabletop_visual_matching_2/meta_ao_roughness_metalness.png filter=lfs diff=lfs merge=lfs -text
1127
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/googlerobot_description/3obj_recolor_tabletop_visual_matching_2/meta_normal.png filter=lfs diff=lfs merge=lfs -text
1128
+ Isaac-GR00T/external_dependencies/SimplerEnv/ManiSkill2_real2sim/mani_skill2_real2sim/assets/descriptions/widowx_description/meshes_wx250s/WXSA-250-M-5-LF.stl filter=lfs diff=lfs merge=lfs -text
1129
+ Isaac-GR00T/external_dependencies/SimplerEnv/images/example_visualization/widowx_carrot_on_plate_visual_matching.png filter=lfs diff=lfs merge=lfs -text
1130
+ Isaac-GR00T/external_dependencies/SimplerEnv/images/example_visualization/widowx_put_eggplant_in_basket_visual_matching.png filter=lfs diff=lfs merge=lfs -text
1131
+ Isaac-GR00T/external_dependencies/SimplerEnv/images/example_visualization/google_robot_pick_random_object.png filter=lfs diff=lfs merge=lfs -text
1132
+ Isaac-GR00T/external_dependencies/SimplerEnv/images/example_visualization/google_robot_coke_can_visual_matching.png filter=lfs diff=lfs merge=lfs -text
1133
+ Isaac-GR00T/external_dependencies/SimplerEnv/images/example_visualization/google_robot_open_drawer_visual_matching.png filter=lfs diff=lfs merge=lfs -text
1134
+ Isaac-GR00T/external_dependencies/SimplerEnv/images/example_visualization/google_robot_put_apple_in_closed_top_drawer.png filter=lfs diff=lfs merge=lfs -text
1135
+ Isaac-GR00T/external_dependencies/SimplerEnv/images/example_visualization/widowx_spoon_on_towel_visual_matching.png filter=lfs diff=lfs merge=lfs -text
1136
+ Isaac-GR00T/external_dependencies/SimplerEnv/images/example_visualization/google_robot_close_drawer_visual_matching.png filter=lfs diff=lfs merge=lfs -text
1137
+ Isaac-GR00T/external_dependencies/SimplerEnv/images/example_visualization/widowx_open_drawer.png filter=lfs diff=lfs merge=lfs -text
1138
+ Isaac-GR00T/external_dependencies/SimplerEnv/images/example_visualization/widowx_stack_cube_visual_matching.png filter=lfs diff=lfs merge=lfs -text
1139
+ Isaac-GR00T/external_dependencies/SimplerEnv/images/example_visualization/widowx_put_eggplant_in_sink_visual_matching.png filter=lfs diff=lfs merge=lfs -text
1140
+ Isaac-GR00T/external_dependencies/SimplerEnv/images/example_visualization/widowx_close_drawer.png filter=lfs diff=lfs merge=lfs -text
1141
+ Isaac-GR00T/external_dependencies/SimplerEnv/images/example_visualization/google_robot_move_near_visual_matching.png filter=lfs diff=lfs merge=lfs -text
1142
+ Isaac-GR00T/external_dependencies/SimplerEnv/simpler_env/utils/fonts/UbuntuMono-R.ttf filter=lfs diff=lfs merge=lfs -text
1143
+ Isaac-GR00T/external_dependencies/LIBERO/images/fig1.png filter=lfs diff=lfs merge=lfs -text
1144
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/init_files/libero_10/LIVING_ROOM_SCENE2_put_both_the_cream_cheese_box_and_the_butter_in_the_basket.init filter=lfs diff=lfs merge=lfs -text
1145
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/init_files/libero_10/LIVING_ROOM_SCENE2_put_both_the_alphabet_soup_and_the_tomato_sauce_in_the_basket.init filter=lfs diff=lfs merge=lfs -text
1146
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/init_files/libero_90/LIVING_ROOM_SCENE2_pick_up_the_tomato_sauce_and_put_it_in_the_basket.init filter=lfs diff=lfs merge=lfs -text
1147
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/init_files/libero_90/LIVING_ROOM_SCENE2_pick_up_the_orange_juice_and_put_it_in_the_basket.init filter=lfs diff=lfs merge=lfs -text
1148
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/init_files/libero_90/LIVING_ROOM_SCENE2_pick_up_the_butter_and_put_it_in_the_basket.init filter=lfs diff=lfs merge=lfs -text
1149
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/init_files/libero_90/LIVING_ROOM_SCENE2_pick_up_the_milk_and_put_it_in_the_basket.init filter=lfs diff=lfs merge=lfs -text
1150
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/init_files/libero_90/LIVING_ROOM_SCENE2_pick_up_the_alphabet_soup_and_put_it_in_the_basket.init filter=lfs diff=lfs merge=lfs -text
1151
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/textures/gray_ceramic_tile.png filter=lfs diff=lfs merge=lfs -text
1152
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/textures/light_grey_plaster.png filter=lfs diff=lfs merge=lfs -text
1153
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/textures/dark_gray_plaster.png filter=lfs diff=lfs merge=lfs -text
1154
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/textures/dark_floor_texture.png filter=lfs diff=lfs merge=lfs -text
1155
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/textures/dark_blue_wall.png filter=lfs diff=lfs merge=lfs -text
1156
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/textures/seamless_wood_planks_floor.png filter=lfs diff=lfs merge=lfs -text
1157
+ Isaac-GR00T/external_dependencies/LIBERO/libero/libero/assets/textures/cream-plaster.png filter=lfs diff=lfs merge=lfs -text
Isaac-GR00T/demo_data/cube_to_bowl_5/data/chunk-000/episode_000000.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:037ef9dacbe35d080286f7c2b7e551d4a337b206df03d2f9c88d4c46ac408082
3
+ size 28581
Isaac-GR00T/demo_data/cube_to_bowl_5/data/chunk-000/episode_000001.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:716f7fd62c64072b948a82fde9c83ff61d33caf29e1455d9816d41dc6b055d26
3
+ size 34031
Isaac-GR00T/demo_data/cube_to_bowl_5/data/chunk-000/episode_000002.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9033b86ad77934df1193fb998a16e27b9fa7bdd6e0a522a35d6169b4c2c2d6ae
3
+ size 26150
Isaac-GR00T/demo_data/cube_to_bowl_5/data/chunk-000/episode_000003.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4492790aec5ff414eb45f195d9639d6f58ce445289fbdb3d21038fd1fc7437c8
3
+ size 37131
Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.front/episode_000000.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3c9a00cb6e2706b8dbc573e3ac2b05402cf6e667ec61786be971e104cac81605
3
+ size 2414613
Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.front/episode_000001.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0f1c9a635d037856f8ecfb9cc8db41b34441aff15feaa81bd1492f5919f853f3
3
+ size 3158057
Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.front/episode_000002.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:378605259ff8508322985d5f346b7876d07d96b79d35176dc4bf041b3a3e3214
3
+ size 1973577
Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.front/episode_000003.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fc28f6fd54be1d04a76d2b739698308bb5eacefe1ebddbc0d592674a6d78f93b
3
+ size 7328851
Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.front/episode_000004.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bf89d6dbc888277cdcd8318c46c91b35841b8dccb37d3c40c5d2c7d2a16865e2
3
+ size 2501708
Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.wrist/episode_000000.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:33f42924b0e6f603fb91ffc856430b0abd2c182f1eaf2324f2a3906a60452f06
3
+ size 1442621
Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.wrist/episode_000001.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:92fa46f856f4643dbdb857e8bd1344fbe2d4d5d206a164ed80cae0a768577460
3
+ size 2066389
Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.wrist/episode_000002.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fdf0618a70f633985975aeb554f39ca2588fa7be409b9642b90d668a24a29b33
3
+ size 1230068
Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.wrist/episode_000003.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1a658fbfc8601768579e2572ac08a307c7ccf7e17a6457636a5e663e34d29be5
3
+ size 5734830
Isaac-GR00T/demo_data/cube_to_bowl_5/videos/chunk-000/observation.images.wrist/episode_000004.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7d362fd9d101fda5f3aa999e6b235d97d97f2cf42514fee6d464a39fe373d75a
3
+ size 1498450
Isaac-GR00T/demo_data/cube_to_bowl_5_with_mask/data/chunk-000/episode_000000.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:037ef9dacbe35d080286f7c2b7e551d4a337b206df03d2f9c88d4c46ac408082
3
+ size 28581
Isaac-GR00T/demo_data/cube_to_bowl_5_with_mask/masks/chunk-000/observation.images.front/episode_000000_masks.npz ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a7d2840a15639385914803b6a2c0c7fc2f7485fcad6e9683fdb4e8bbafe6e756
3
+ size 1930481
Isaac-GR00T/demo_data/cube_to_bowl_5_with_mask/masks/chunk-000/observation.images.wrist/episode_000000_masks.npz ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:511e00dbaaca29953ee717d76071e36c1905ac7350200173b308e48c7e434a6a
3
+ size 2075699
Isaac-GR00T/demo_data/cube_to_bowl_5_with_mask/videos/chunk-000/observation.images.front/episode_000000.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3c9a00cb6e2706b8dbc573e3ac2b05402cf6e667ec61786be971e104cac81605
3
+ size 2414613
Isaac-GR00T/demo_data/cube_to_bowl_5_with_mask/videos/chunk-000/observation.images.wrist/episode_000000.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:33f42924b0e6f603fb91ffc856430b0abd2c182f1eaf2324f2a3906a60452f06
3
+ size 1442621
Isaac-GR00T/demo_data/droid_sample/data/chunk-000/episode_000000.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:137c8556829ffeb4cbc7c41369d0e0c3cd485c2ce4f576d0a0c9b0e83eb0314f
3
+ size 140159
Isaac-GR00T/demo_data/droid_sample/data/chunk-000/episode_000001.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:14f86cfe04380c5ba8e876cab6e0532b9231af5cd4e5ddcd8e019e458f79d709
3
+ size 211230
Isaac-GR00T/demo_data/droid_sample/data/chunk-000/episode_000002.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c22df4dca06122846d4ea0848751d734a211ed008d2bd63e29b66a8ce67222c6
3
+ size 308481
Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.exterior_1_left/episode_000000.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6d90ec069d7cb36b47fcd5e7c18dd528235a814dfc965511833f05b5674f5fec
3
+ size 946024
Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.exterior_1_left/episode_000001.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:89f71cb8289f565fe2b6b405909b6810dc0e51166ee409e95cc8e84ed3f9199f
3
+ size 1329966
Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.exterior_1_left/episode_000002.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a6d575be937d4259dac4f3d33529d7a81ecda5b22b6c1159ae7222a5adfbd80e
3
+ size 2604859
Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.wrist_left/episode_000000.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3ec4045dbeb4c544b8456fadca6bd0bc2392f25d9cb961942aa613fa3e7205b9
3
+ size 625361
Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.wrist_left/episode_000001.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3b01e89c75c74ac90b518656e49a7033d249ca4a3213aeae8c388a2db3d17b91
3
+ size 1058453
Isaac-GR00T/demo_data/droid_sample/videos/chunk-000/observation.images.wrist_left/episode_000002.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:82eeeb20596dae59bd7074c7e44f4dd8c292551d5bd1b2d9948a765523a1f541
3
+ size 1585838
Isaac-GR00T/demo_data/simplerenv_bridge_sample/data/chunk-000/episode_000000.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:14ef3d742724ad34701136e1dd4709c965ae98066b2fc88a7a26e960d55520a8
3
+ size 5733
Isaac-GR00T/demo_data/simplerenv_bridge_sample/data/chunk-000/episode_000001.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3abcb7f3f611a415afe5acd5e4b7d0d10e83726db76a1f9f24aacd3397a7c0af
3
+ size 7329
Isaac-GR00T/demo_data/simplerenv_bridge_sample/data/chunk-000/episode_000002.parquet ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:df1d7c6118a0042c9087a4670b795fe34760390fbc9f34ba2a4d422607d47b7b
3
+ size 7315
Isaac-GR00T/demo_data/simplerenv_bridge_sample/videos/chunk-000/observation.images.image_0/episode_000000.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:12b0e84423d31ff615262dc4943f56aa293cb0b4c0d193fc188916e629006ed1
3
+ size 254345
Isaac-GR00T/demo_data/simplerenv_bridge_sample/videos/chunk-000/observation.images.image_0/episode_000001.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a7f9653cb282d67d1dde50c356dd5a0fdefee0777f7767232b04c7bde1e94a4e
3
+ size 292606
Isaac-GR00T/demo_data/simplerenv_bridge_sample/videos/chunk-000/observation.images.image_0/episode_000002.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6ac0ebe099566dae4f41a83c67d215ac2dc47baabb8c5a4728c1b82273feb416
3
+ size 258747
Isaac-GR00T/examples/DROID/README.md ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # GR00T DROID
2
+
3
+ The N1.7 base model supports DROID inference out of the box via the `OXE_DROID_RELATIVE_EEF_RELATIVE_JOINT` pretrain tag. A finetuned checkpoint is also available at [`nvidia/GR00T-N1.7-DROID`](https://huggingface.co/nvidia/GR00T-N1.7-DROID).
4
+
5
+ > **Note:** The DROID dataset contains multiple language instruction paraphrases per episode (`language_instruction`, `language_instruction_2`, `language_instruction_3`). These are used for language augmentation during training. At inference time, only the first language key is used.
6
+
7
+ ## Data Format
8
+
9
+ The DROID embodiment expects the following modality structure:
10
+
11
+ | Modality | Keys | Dimensions |
12
+ |----------|------|------------|
13
+ | Video | `exterior_image_1_left`, `wrist_image_left` | 2 cameras |
14
+ | State | `eef_9d`, `gripper_position`, `joint_position` | 9D + 1D + 7D = 17D |
15
+ | Action | `eef_9d`, `gripper_position`, `joint_position` | 9D + 1D + 7D = 17D |
16
+ | Language | `annotation.language.language_instruction` | text |
17
+
18
+ Action representations:
19
+ - `eef_9d`: relative end-effector (XYZ + rotation 6D)
20
+ - `gripper_position`: absolute (1D)
21
+ - `joint_position`: relative joint positions (7D)
22
+
23
+ ### Preparing DROID Demo Data
24
+
25
+ The full DROID dataset ([lerobot/droid_1.0.1](https://huggingface.co/datasets/lerobot/droid_1.0.1)) is ~358 GB with 95k+ episodes in LeRobot v3.0 format. To create a small sample for testing:
26
+
27
+ ```bash
28
+ uv pip install jsonlines # one-time dependency
29
+ python scripts/download_droid_sample.py
30
+ ```
31
+
32
+ This downloads the first data/video chunk (~170 MB) and extracts 3 episodes into `demo_data/droid_sample/` in GR00T LeRobot v2.0 format.
33
+
34
+ **Key conversion notes:**
35
+ - Source is LeRobot v3.0 (consolidated parquet + concatenated videos) — the script converts to v2.0 (per-episode parquet + per-episode mp4).
36
+ - Video keys in the raw dataset (`exterior_1_left`, `wrist_left`) differ from the model config keys (`exterior_image_1_left`, `wrist_image_left`). The data loader auto-maps by position — no manual renaming needed.
37
+ - Language instructions are loaded via the `task_index` column mapped through `tasks.jsonl`.
38
+
39
+ ## 1. Standalone Inference (with demo data)
40
+
41
+ After preparing demo data, run inference directly (no server needed):
42
+
43
+ ```bash
44
+ uv run python scripts/deployment/standalone_inference_script.py \
45
+ --model-path nvidia/GR00T-N1.7-3B \
46
+ --dataset-path demo_data/droid_sample \
47
+ --embodiment-tag OXE_DROID_RELATIVE_EEF_RELATIVE_JOINT \
48
+ --traj-ids 0 1 \
49
+ --inference-mode pytorch \
50
+ --execution-horizon 8
51
+ ```
52
+
53
+ > **Note:** Episode 0 may have an empty language instruction. If inference fails on episode 0, try `--traj-ids 1 2`.
54
+
55
+ Expected zero-shot performance on the base model (not finetuned):
56
+
57
+ | Metric | Value |
58
+ |--------|-------|
59
+ | Average MSE | ~0.0149 |
60
+ | Average MAE | ~0.0753 |
61
+ | Inference per step (base) | ~262 ms (H100) |
62
+ | Inference per step (finetuned) | ~253 ms (H100) |
63
+
64
+ ## 2. Inference Server (for real-world deployment)
65
+
66
+ ### Using the base model (zero-shot):
67
+
68
+ ```bash
69
+ uv run python gr00t/eval/run_gr00t_server.py \
70
+ --model-path nvidia/GR00T-N1.7-3B \
71
+ --embodiment-tag OXE_DROID_RELATIVE_EEF_RELATIVE_JOINT
72
+ ```
73
+
74
+ ### Using the finetuned model:
75
+
76
+ ```bash
77
+ uv run python gr00t/eval/run_gr00t_server.py \
78
+ --model-path nvidia/GR00T-N1.7-DROID \
79
+ --embodiment-tag OXE_DROID_RELATIVE_EEF_RELATIVE_JOINT
80
+ ```
81
+
82
+ ## 3. Fine-tuning
83
+
84
+ Fine-tune the base model on DROID data using the shared launcher:
85
+
86
+ ```bash
87
+ NUM_GPUS=8 MAX_STEPS=20000 GLOBAL_BATCH_SIZE=640 SAVE_STEPS=1000 uv run bash examples/finetune.sh \
88
+ --base-model-path nvidia/GR00T-N1.7-3B \
89
+ --dataset-path demo_data/droid_sample \
90
+ --embodiment-tag OXE_DROID_RELATIVE_EEF_RELATIVE_JOINT \
91
+ --output-dir /tmp/droid_finetune
92
+ ```
93
+
94
+ > **Note:** The above uses the small `demo_data/droid_sample` (3 episodes) for quick validation. For production training, replace `--dataset-path` with the full DROID dataset.
95
+
96
+ ## 4. Robot Control Script
97
+
98
+ 1. Install the DROID package on the robot control laptop/workstation — [instructions](https://droid-dataset.github.io/droid/software-setup/host-installation.html#configuring-the-laptopworkstation)
99
+
100
+ 2. Install dependencies for the GR00T control script in the environment from step 1:
101
+ ```bash
102
+ pip install tyro pydantic numpy==1.26.4
103
+ ```
104
+
105
+ 3. Enter the camera IDs for your ZED cameras in `examples/DROID/main_gr00t.py`.
106
+
107
+ 4. Start the control script:
108
+ ```bash
109
+ python examples/DROID/main_gr00t.py --external-camera="left" # or "right"
110
+ ```
Isaac-GR00T/examples/DROID/main_gr00t.py ADDED
@@ -0,0 +1,503 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ # ruff: noqa
17
+ # NOTE: this requires installation of the droid repo.
18
+ # Adapted from https://github.com/Physical-Intelligence/openpi/blob/main/examples/droid/main.py
19
+
20
+ from __future__ import annotations
21
+
22
+ import contextlib
23
+ import dataclasses
24
+ import datetime
25
+ import faulthandler
26
+ import os
27
+ import signal
28
+ import time
29
+ from collections import deque
30
+
31
+ import cv2
32
+ import numpy as np
33
+ import pandas as pd
34
+ import tqdm
35
+ import tyro
36
+ from PIL import Image
37
+
38
+ from scipy.spatial.transform import Rotation
39
+
40
+ faulthandler.enable()
41
+
42
+ # DROID data collection frequency -- we slow down execution to match this frequency
43
+ DROID_CONTROL_FREQUENCY = 15
44
+ RESOLUTION = (180, 320) # resize images to this resolution before sending to the policy server
45
+
46
+ # Egocentric frame correction: R_euler is post-multiplied by this matrix
47
+ # to match the OXE DROID training pipeline (TFG convention).
48
+ # audit: mirror of gr00t/data/state_action/droid_frame.py — this example runs on
49
+ # a slim DROID install without the gr00t package, so it cannot import the
50
+ # canonical source. Keep this matrix and compute_eef_9d in sync with it.
51
+ DROID_EEF_ROTATION_CORRECT = np.array(
52
+ [[0, 0, -1], [-1, 0, 0], [0, 1, 0]],
53
+ dtype=np.float64,
54
+ )
55
+
56
+
57
+ def compute_eef_9d(cartesian_position: np.ndarray) -> np.ndarray:
58
+ """Convert cartesian_position (XYZ + euler 3D) to eef_9d (XYZ + rot6d).
59
+
60
+ Uses extrinsic XYZ Euler convention (scipy ``"XYZ"``, equivalent to
61
+ ``tfg.rotation_matrix_3d.from_euler``) and post-multiplies by
62
+ ``DROID_EEF_ROTATION_CORRECT`` to match the pretrained model.
63
+ """
64
+ c = np.asarray(cartesian_position, dtype=np.float64).reshape(6)
65
+ xyz = c[:3]
66
+ euler = c[3:6]
67
+ rot_robot = Rotation.from_euler("XYZ", euler).as_matrix()
68
+ rot_mat = rot_robot @ DROID_EEF_ROTATION_CORRECT
69
+ rot6d = rot_mat[:2, :].reshape(6)
70
+ return np.concatenate([xyz, rot6d]).astype(np.float32)
71
+
72
+
73
+ @dataclasses.dataclass
74
+ class Args:
75
+ # Hardware parameters
76
+
77
+ left_camera_id: str = "<SET THIS>" # e.g., "24259877"
78
+ right_camera_id: str = "<SET THIS>" # e.g., "24514023"
79
+ wrist_camera_id: str = "<SET THIS>" # e.g., "13062452"
80
+
81
+ # Policy parameters
82
+ policy_host: str = "localhost"
83
+ policy_port: int = 5555
84
+ policy_api_token: str = None
85
+
86
+ results_dir: str = None # if None, will use the current timestamp as the results directory
87
+
88
+ # Rollout parameters
89
+ max_timesteps: int = 600 # how many steps to run each rollout
90
+
91
+ # How many actions to execute from a predicted action chunk before querying policy server again
92
+ open_loop_horizon: int = 15
93
+ external_camera: str = (
94
+ "left" # which exterior camera to use for the policy server, choose from ["left", "right"]
95
+ )
96
+ render_camera: str = "left" # which camera to render saved video from
97
+ render_fps: int = 50
98
+
99
+ debug: bool = False
100
+ vis_cameras: bool = False
101
+
102
+ delay_seconds: int = 5
103
+
104
+
105
+ def _load_runtime_deps():
106
+ """Load robot-only dependencies after CLI parsing so --help stays usable."""
107
+ try:
108
+ import imageio
109
+ from droid.robot_env import RobotEnv
110
+ from server_client import PolicyClient
111
+ from utils import resize_with_pad
112
+ except ModuleNotFoundError as exc:
113
+ raise ModuleNotFoundError(
114
+ "examples/DROID/main_gr00t.py requires the DROID robot-control environment. "
115
+ "Follow examples/DROID/README.md and install the DROID package plus "
116
+ "`pip install tyro pydantic numpy==1.26.4` before running."
117
+ ) from exc
118
+
119
+ return RobotEnv, PolicyClient, imageio, resize_with_pad
120
+
121
+
122
+ # We are using Ctrl+C to optionally terminate rollouts early -- however, if we press Ctrl+C while the policy server is
123
+ # waiting for a new action chunk, it will raise an exception and the server connection dies.
124
+ # This context manager temporarily prevents Ctrl+C and delays it after the server call is complete.
125
+ @contextlib.contextmanager
126
+ def prevent_keyboard_interrupt():
127
+ """Temporarily prevent keyboard interrupts by delaying them until after the protected code."""
128
+ interrupted = False
129
+ original_handler = signal.getsignal(signal.SIGINT)
130
+
131
+ def handler(signum, frame):
132
+ nonlocal interrupted
133
+ interrupted = True
134
+
135
+ signal.signal(signal.SIGINT, handler)
136
+ try:
137
+ yield
138
+ finally:
139
+ signal.signal(signal.SIGINT, original_handler)
140
+ if interrupted:
141
+ raise KeyboardInterrupt
142
+
143
+
144
+ def main(args: Args):
145
+ RobotEnv, PolicyClient, imageio, resize_with_pad = _load_runtime_deps()
146
+
147
+ assert args.external_camera in ["left", "right"], (
148
+ f"Invalid exterior camera: {args.exterior_camera}"
149
+ )
150
+
151
+ if args.results_dir is None:
152
+ results_dir = f"results_gr00t_{datetime.datetime.now().strftime('%Y_%m_%d')}"
153
+ else:
154
+ results_dir = args.results_dir
155
+
156
+ # Initialize the Panda environment.
157
+ env = RobotEnv(action_space="joint_position", gripper_action_space="position")
158
+ print("Created the droid env!")
159
+
160
+ os.makedirs(results_dir, exist_ok=True)
161
+
162
+ policy_client = PolicyClient(
163
+ host=args.policy_host, port=args.policy_port, api_token=args.policy_api_token
164
+ )
165
+
166
+ modality_config = policy_client.get_modality_config()
167
+ video_delta = modality_config["video"].delta_indices
168
+ video_T = len(video_delta)
169
+ video_history_len = max(-min(video_delta), 0) + 1 if video_delta else 1
170
+ video_keys = modality_config["video"].modality_keys
171
+ state_keys = modality_config["state"].modality_keys
172
+ state_T = len(modality_config["state"].delta_indices)
173
+ # Action chunk size is dictated by the policy (server) side. open_loop_horizon
174
+ # is the only locally-authored horizon; it is a deliberate receding-horizon
175
+ # choice and MAY be < the chunk, but it must never exceed it, otherwise
176
+ # `pred_action_chunk[actions_from_chunk_completed]` indexes past the
177
+ # predicted chunk and IndexErrors mid-rollout. Source the chunk size from
178
+ # the policy and validate the contract up-front instead of crashing deep in
179
+ # the loop.
180
+ action_chunk_size = len(modality_config["action"].delta_indices)
181
+ if not (1 <= args.open_loop_horizon <= action_chunk_size):
182
+ raise ValueError(
183
+ f"open_loop_horizon={args.open_loop_horizon} must satisfy "
184
+ f"1 <= open_loop_horizon <= action_chunk_size={action_chunk_size} "
185
+ "(= len(policy.action.delta_indices)). A larger value would index "
186
+ "past the predicted action chunk and IndexError mid-rollout."
187
+ )
188
+ print(
189
+ f"Model config — video T={video_T} (delta={video_delta}), "
190
+ f"state T={state_T}, action chunk={action_chunk_size}, "
191
+ f"open_loop_horizon={args.open_loop_horizon}, "
192
+ f"keys: video={video_keys}, state={state_keys}"
193
+ )
194
+
195
+ df = pd.DataFrame(columns=["success", "duration", "video_filename"])
196
+
197
+ if args.debug:
198
+ debug_dir = os.path.join(results_dir, "debug_data")
199
+ os.makedirs(debug_dir, exist_ok=True)
200
+ os.makedirs(os.path.join(debug_dir, "videos/wrist_image/"), exist_ok=True)
201
+ os.makedirs(os.path.join(debug_dir, "videos/exterior_image_1_left/"), exist_ok=True)
202
+
203
+ instruction = None
204
+ while True:
205
+ if instruction is None:
206
+ instruction = input("Enter instruction: ")
207
+ else:
208
+ if input("Change instruction? (enter y or n) ").lower() == "y":
209
+ instruction = input("Enter instruction: ")
210
+
211
+ time.sleep(args.delay_seconds)
212
+
213
+ # Rollout parameters
214
+ actions_from_chunk_completed = 0
215
+ pred_action_chunk = None
216
+
217
+ # Prepare to save video of rollout
218
+ timestamp = datetime.datetime.now().strftime("%Y_%m_%d_%H:%M:%S")
219
+ video = []
220
+ if args.debug:
221
+ model_wrist_image_writer = imageio.get_writer(
222
+ os.path.join(
223
+ debug_dir, "videos/wrist_image/", f"model_wrist_image_{timestamp}.mp4"
224
+ ),
225
+ fps=5,
226
+ )
227
+ model_exterior_image_1_left_writer = imageio.get_writer(
228
+ os.path.join(
229
+ debug_dir,
230
+ "videos/exterior_image_1_left/",
231
+ f"model_exterior_image_1_left_{timestamp}.mp4",
232
+ ),
233
+ fps=5,
234
+ )
235
+
236
+ bar = tqdm.tqdm(range(args.max_timesteps))
237
+ print("Running rollout... press Ctrl+C to stop early.")
238
+
239
+ # Profiling variables (reset for each rollout)
240
+ rollout_start_time = time.time()
241
+ obs_times = deque(maxlen=50) # Track observation collection times
242
+ server_times = deque(maxlen=50) # Track server response times
243
+ action_count = 0
244
+ frame_buffer = deque(maxlen=video_history_len)
245
+
246
+ for t_step in bar:
247
+ step_start_time = time.time()
248
+ try:
249
+ # Get the current observation
250
+ obs_start_time = time.time()
251
+ curr_obs = _extract_observation(
252
+ args,
253
+ env.get_observation(),
254
+ # Save the first observation to disk
255
+ save_to_disk=t_step == 0,
256
+ )
257
+ obs_time = time.time() - obs_start_time
258
+ obs_times.append(obs_time)
259
+
260
+ video.append(curr_obs[f"{args.render_camera}_image"])
261
+
262
+ # Resize every step so the rolling frame buffer stays current.
263
+ left_image = resize_with_pad(curr_obs["left_image"], RESOLUTION[0], RESOLUTION[1])
264
+ right_image = resize_with_pad(curr_obs["right_image"], RESOLUTION[0], RESOLUTION[1])
265
+ wrist_image = resize_with_pad(curr_obs["wrist_image"], RESOLUTION[0], RESOLUTION[1])
266
+
267
+ if args.external_camera == "left":
268
+ ext_image = left_image
269
+ elif args.external_camera == "right":
270
+ ext_image = right_image
271
+
272
+ frame_buffer.append({"ext": ext_image, "wrist": wrist_image})
273
+
274
+ # Send websocket request to policy server if it's time to predict a new chunk
275
+ if (
276
+ actions_from_chunk_completed == 0
277
+ or actions_from_chunk_completed >= args.open_loop_horizon
278
+ ):
279
+ actions_from_chunk_completed = 0
280
+
281
+ if args.debug:
282
+ model_wrist_image_writer.append_data(wrist_image)
283
+ model_exterior_image_1_left_writer.append_data(ext_image)
284
+
285
+ # Build video tensor with T frames derived from the model's
286
+ # delta_indices (e.g. [-15, 0] -> T=2, [0] -> T=1).
287
+ if video_T == 1:
288
+ video_dict = {
289
+ "exterior_image_1_left": ext_image[None, None, ...],
290
+ "wrist_image_left": wrist_image[None, None, ...],
291
+ } # (B=1, T=1, H, W, C)
292
+ else:
293
+ hist_frame = frame_buffer[0]
294
+ cur_frame = frame_buffer[-1]
295
+ video_dict = {
296
+ "exterior_image_1_left": np.stack(
297
+ [hist_frame["ext"], cur_frame["ext"]]
298
+ )[None, ...],
299
+ "wrist_image_left": np.stack([hist_frame["wrist"], cur_frame["wrist"]])[
300
+ None, ...
301
+ ],
302
+ } # (B=1, T=video_T, H, W, C)
303
+
304
+ # Build state dict from the model's reported state keys.
305
+ state_dict = {}
306
+ state_source = {
307
+ "eef_9d": curr_obs["eef_9d"],
308
+ "gripper_position": curr_obs["gripper_position"],
309
+ "joint_position": curr_obs["joint_position"],
310
+ }
311
+ for key in state_keys:
312
+ state_dict[key] = state_source[key][None, None, ...].astype(
313
+ np.float32
314
+ ) # (B=1, T=1, D)
315
+
316
+ lang_key = modality_config["language"].modality_keys[0]
317
+ request_data = {
318
+ "video": video_dict,
319
+ "state": state_dict,
320
+ "language": {lang_key: [[instruction]]},
321
+ }
322
+
323
+ if args.vis_cameras:
324
+ # viz the left image 1 and wrist image and use cv2 to display them side by side
325
+ left_image_display = cv2.resize(
326
+ left_image, (wrist_image.shape[1], wrist_image.shape[0])
327
+ )
328
+ combined_display = np.concatenate([left_image_display, wrist_image], axis=1)
329
+ # convert to bgr
330
+ combined_display = combined_display[..., ::-1]
331
+ cv2.imshow("Camera Views", combined_display)
332
+ cv2.waitKey(1)
333
+
334
+ # Wrap the server call in a context manager to prevent Ctrl+C from interrupting it
335
+ # Ctrl+C will be handled after the server call is complete
336
+ server_start_time = time.time()
337
+ with prevent_keyboard_interrupt():
338
+ # this returns action chunk [N, 8] of joint position actions (7) + gripper position (1)
339
+ response = policy_client.get_action(request_data)
340
+ server_time = time.time() - server_start_time
341
+ server_times.append(server_time)
342
+
343
+ pred_action_chunk = np.concatenate(
344
+ (
345
+ response[0]["joint_position"][0],
346
+ response[0]["gripper_position"][0],
347
+ ),
348
+ axis=1,
349
+ )
350
+
351
+ # Select current action to execute from chunk
352
+ action = pred_action_chunk[actions_from_chunk_completed]
353
+ actions_from_chunk_completed += 1
354
+
355
+ # Binarize gripper action
356
+ if action[-1].item() > 0.5:
357
+ action = np.concatenate([action[:-1], np.ones((1,))])
358
+ else:
359
+ action = np.concatenate([action[:-1], np.zeros((1,))])
360
+
361
+ env.step(action)
362
+ action_count += 1
363
+
364
+ # Sleep to match DROID data collection frequency
365
+ elapsed_time = time.time() - step_start_time
366
+ if elapsed_time < 1 / DROID_CONTROL_FREQUENCY:
367
+ time.sleep(1 / DROID_CONTROL_FREQUENCY - elapsed_time)
368
+
369
+ # profiling stats
370
+ if obs_times:
371
+ avg_obs_time = np.mean(obs_times) * 1000
372
+ min_obs_time = np.min(obs_times) * 1000
373
+ max_obs_time = np.max(obs_times) * 1000
374
+ else:
375
+ avg_obs_time = min_obs_time = max_obs_time = 0
376
+
377
+ if server_times:
378
+ avg_server_time = np.mean(server_times) * 1000
379
+ min_server_time = np.min(server_times) * 1000
380
+ max_server_time = np.max(server_times) * 1000
381
+ else:
382
+ avg_server_time = min_server_time = max_server_time = 0
383
+
384
+ total_elapsed = time.time() - rollout_start_time
385
+ actions_per_sec = action_count / total_elapsed if total_elapsed > 0 else 0
386
+
387
+ bar.set_description(
388
+ f"Obs: {avg_obs_time:.1f}ms [{min_obs_time:.1f}-{max_obs_time:.1f}] | "
389
+ f"Server: {avg_server_time:.1f}ms [{min_server_time:.1f}-{max_server_time:.1f}] | "
390
+ f"Actions/sec: {actions_per_sec:.2f}"
391
+ )
392
+ except KeyboardInterrupt:
393
+ break
394
+
395
+ os.makedirs(os.path.join(results_dir, "videos"), exist_ok=True)
396
+ video = np.stack(video)
397
+ # replace whitespace with underscores in instruction
398
+ sanitized_instruction = instruction.replace(" ", "_")
399
+ save_filename = os.path.join(
400
+ results_dir, "videos", f"{sanitized_instruction}_video_" + timestamp
401
+ )
402
+ with imageio.get_writer(save_filename + ".mp4", fps=args.render_fps) as writer:
403
+ for frame in video:
404
+ writer.append_data(frame)
405
+
406
+ if args.debug:
407
+ model_wrist_image_writer.close()
408
+ model_exterior_image_1_left_writer.close()
409
+
410
+ success: str | float | None = None
411
+ while not isinstance(success, float):
412
+ success = input(
413
+ "Did the rollout succeed? (enter y for 100%, n for 0%), or a numeric value 0-100 based on the evaluation spec"
414
+ )
415
+ if success == "y":
416
+ success = 1.0
417
+ elif success == "n":
418
+ success = 0.0
419
+
420
+ success = float(success) / 100
421
+ if not (0 <= success <= 1):
422
+ print(f"Success must be a number in [0, 100] but got: {success * 100}")
423
+
424
+ new_row = {
425
+ "success": success,
426
+ "duration": t_step,
427
+ "video_filename": save_filename,
428
+ }
429
+ new_index = len(df)
430
+ df.loc[new_index] = new_row
431
+
432
+ if input("Do one more eval? (enter y or n) ").lower() != "y":
433
+ break
434
+ env.reset(randomize=False)
435
+
436
+ timestamp = datetime.datetime.now().strftime("%I:%M%p_%B_%d_%Y")
437
+ csv_filename = os.path.join(results_dir, f"eval_{timestamp}.csv")
438
+ df.to_csv(csv_filename)
439
+ print(f"Results saved to {csv_filename}")
440
+
441
+
442
+ def _extract_observation(args: Args, obs_dict, *, stereo_camera="left", save_to_disk=False):
443
+ image_observations = obs_dict["image"]
444
+ key_left = f"{args.left_camera_id}_{stereo_camera}"
445
+ key_right = f"{args.right_camera_id}_{stereo_camera}"
446
+ key_wrist = f"{args.wrist_camera_id}_{stereo_camera}"
447
+
448
+ left_image = image_observations.get(key_left)
449
+ right_image = image_observations.get(key_right)
450
+ wrist_image = image_observations.get(key_wrist)
451
+
452
+ available = list(image_observations.keys())
453
+ assert left_image is not None, (
454
+ f"Left camera not found for key {key_left!r}. Available keys: {available}. "
455
+ "Set --left-camera-id to the ZED serial used in observation keys."
456
+ )
457
+ assert right_image is not None, (
458
+ f"Right camera not found for key {key_right!r}. Available keys: {available}. "
459
+ "Set --right-camera-id to the ZED serial used in observation keys."
460
+ )
461
+ assert wrist_image is not None, (
462
+ f"Wrist camera not found for key {key_wrist!r}. Available keys: {available}. "
463
+ "Set --wrist-camera-id to the ZED serial used in observation keys."
464
+ )
465
+
466
+ # Drop the alpha dimension
467
+ left_image = left_image[..., :3]
468
+ right_image = right_image[..., :3]
469
+ wrist_image = wrist_image[..., :3]
470
+
471
+ # Convert to RGB
472
+ left_image = left_image[..., ::-1]
473
+ right_image = right_image[..., ::-1]
474
+ wrist_image = wrist_image[..., ::-1]
475
+
476
+ # In addition to image observations, also capture the proprioceptive state
477
+ robot_state = obs_dict["robot_state"]
478
+ cartesian_position = np.array(robot_state["cartesian_position"])
479
+ joint_position = np.array(robot_state["joint_positions"])
480
+ gripper_position = np.array([robot_state["gripper_position"]])
481
+ eef_9d = compute_eef_9d(cartesian_position)
482
+
483
+ # Save the images to disk so that they can be viewed live while the robot is running
484
+ # Create one combined image to make live viewing easy
485
+ if save_to_disk:
486
+ combined_image = np.concatenate([left_image, wrist_image, right_image], axis=1)
487
+ combined_image = Image.fromarray(combined_image)
488
+ combined_image.save("robot_camera_views.png")
489
+
490
+ return {
491
+ "left_image": left_image,
492
+ "right_image": right_image,
493
+ "wrist_image": wrist_image,
494
+ "cartesian_position": cartesian_position,
495
+ "eef_9d": eef_9d,
496
+ "joint_position": joint_position,
497
+ "gripper_position": gripper_position,
498
+ }
499
+
500
+
501
+ if __name__ == "__main__":
502
+ args: Args = tyro.cli(Args)
503
+ main(args)
Isaac-GR00T/examples/DROID/server_client.py ADDED
@@ -0,0 +1,395 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ from __future__ import annotations
17
+
18
+ from abc import ABC, abstractmethod
19
+ from dataclasses import asdict, dataclass, is_dataclass
20
+ from enum import Enum
21
+ import io
22
+ from typing import Any
23
+
24
+ import msgpack
25
+ import numpy as np
26
+ import zmq
27
+
28
+
29
+ def to_json_serializable(obj: Any) -> Any:
30
+ """
31
+ Recursively convert dataclasses and numpy arrays to JSON-serializable format.
32
+
33
+ Args:
34
+ obj: Object to convert (can be dataclass, numpy array, dict, list, etc.)
35
+
36
+ Returns:
37
+ JSON-serializable representation of the object
38
+ """
39
+ if is_dataclass(obj) and not isinstance(obj, type):
40
+ # Convert dataclass to dict, then recursively process the dict
41
+ return to_json_serializable(asdict(obj))
42
+ elif isinstance(obj, np.ndarray):
43
+ # Convert numpy array to list
44
+ return obj.tolist()
45
+ elif isinstance(obj, np.integer):
46
+ # Convert numpy integers to Python int
47
+ return int(obj)
48
+ elif isinstance(obj, np.floating):
49
+ # Convert numpy floats to Python float
50
+ return float(obj)
51
+ elif isinstance(obj, np.bool_):
52
+ # Convert numpy bool to Python bool
53
+ return bool(obj)
54
+ elif isinstance(obj, dict):
55
+ # Recursively process dictionary values
56
+ return {key: to_json_serializable(value) for key, value in obj.items()}
57
+ elif isinstance(obj, (list, tuple)):
58
+ # Recursively process list/tuple elements
59
+ return [to_json_serializable(item) for item in obj]
60
+ elif isinstance(obj, set):
61
+ # Convert set to list
62
+ return [to_json_serializable(item) for item in obj]
63
+ elif isinstance(obj, (str, int, float, bool, type(None))):
64
+ # Already JSON-serializable
65
+ return obj
66
+ elif isinstance(obj, Enum):
67
+ return obj.name
68
+ else:
69
+ # For other types, try to convert to string as fallback
70
+ # You might want to handle specific types differently
71
+ return str(obj)
72
+
73
+
74
+ class MessageType(Enum):
75
+ START_OF_EPISODE = "start_of_episode"
76
+ END_OF_EPISODE = "end_of_episode"
77
+ EPISODE_STEP = "episode_step"
78
+ IMAGE = "image"
79
+ TEXT = "text"
80
+
81
+
82
+ class ActionRepresentation(Enum):
83
+ RELATIVE = "relative"
84
+ DELTA = "delta"
85
+ ABSOLUTE = "absolute"
86
+
87
+
88
+ class ActionType(Enum):
89
+ EEF = "eef"
90
+ NON_EEF = "non_eef"
91
+
92
+
93
+ class ActionFormat(Enum):
94
+ DEFAULT = "default"
95
+ XYZ_ROT6D = "xyz+rot6d"
96
+ XYZ_ROTVEC = "xyz+rotvec"
97
+
98
+
99
+ @dataclass
100
+ class ActionConfig:
101
+ rep: ActionRepresentation
102
+ type: ActionType
103
+ format: ActionFormat
104
+ state_key: str | None = None
105
+
106
+
107
+ @dataclass
108
+ class ModalityConfig:
109
+ """Configuration for a modality defining how data should be sampled and loaded.
110
+
111
+ This class specifies which indices to sample relative to a base index and which
112
+ keys to load for a particular modality (e.g., video, state, action).
113
+ """
114
+
115
+ delta_indices: list[int]
116
+ """Delta indices to sample relative to the current index. The returned data will correspond to the original data at a sampled base index + delta indices."""
117
+ modality_keys: list[str]
118
+ """The keys to load for the modality in the dataset."""
119
+ sin_cos_embedding_keys: list[str] | None = None
120
+ """Optional list of keys to apply sin/cos encoding. If None or empty, use min/max normalization for all keys."""
121
+ mean_std_embedding_keys: list[str] | None = None
122
+ """Optional list of keys to apply mean/std normalization. If None or empty, use min/max normalization for all keys."""
123
+ action_configs: list[ActionConfig] | None = None
124
+
125
+ def __post_init__(self):
126
+ """Set default values for action-related fields if not specified."""
127
+ if self.action_configs is not None:
128
+ assert len(self.action_configs) == len(self.modality_keys), (
129
+ f"Number of action configs ({len(self.action_configs)}) must match number of modality keys ({len(self.modality_keys)})"
130
+ )
131
+ parsed_action_configs = []
132
+ for action_config in self.action_configs:
133
+ if isinstance(action_config, dict):
134
+ action_config = ActionConfig(
135
+ rep=ActionRepresentation[action_config["rep"]],
136
+ type=ActionType[action_config["type"]],
137
+ format=ActionFormat[action_config["format"]],
138
+ state_key=action_config.get("state_key", None),
139
+ )
140
+ parsed_action_configs.append(action_config)
141
+ self.action_configs = parsed_action_configs
142
+
143
+
144
+ class MsgSerializer:
145
+ @staticmethod
146
+ def to_bytes(data: Any) -> bytes:
147
+ return msgpack.packb(data, default=MsgSerializer.encode_custom_classes)
148
+
149
+ @staticmethod
150
+ def from_bytes(data: bytes) -> Any:
151
+ return msgpack.unpackb(data, object_hook=MsgSerializer.decode_custom_classes)
152
+
153
+ @staticmethod
154
+ def decode_custom_classes(obj):
155
+ if not isinstance(obj, dict):
156
+ return obj
157
+ if "__ModalityConfig_class__" in obj:
158
+ return ModalityConfig(**obj["as_json"])
159
+ if "__ndarray_class__" in obj:
160
+ return np.load(io.BytesIO(obj["as_npy"]), allow_pickle=False)
161
+ return obj
162
+
163
+ @staticmethod
164
+ def encode_custom_classes(obj):
165
+ if isinstance(obj, ModalityConfig):
166
+ # Convert to dict and let msgpack recursively handle nested objects
167
+ return {"__ModalityConfig_class__": True, "as_json": to_json_serializable(obj)}
168
+ if isinstance(obj, np.ndarray):
169
+ output = io.BytesIO()
170
+ np.save(output, obj, allow_pickle=False)
171
+ return {"__ndarray_class__": True, "as_npy": output.getvalue()}
172
+ return obj
173
+
174
+
175
+ class BasePolicy(ABC):
176
+ """Abstract base class for robotic control policies.
177
+
178
+ This class defines the interface that all policies must implement, including
179
+ methods for action computation, input/output validation, and state management.
180
+
181
+ Subclasses must implement:
182
+ - check_observation(): Validate observation format
183
+ - check_action(): Validate action format
184
+ - _get_action(): Core action computation logic
185
+ - reset(): Reset policy to initial state
186
+ """
187
+
188
+ def __init__(self, *, strict: bool = True):
189
+ self.strict = strict
190
+
191
+ @abstractmethod
192
+ def check_observation(self, observation: dict[str, Any]) -> None:
193
+ """Check if the observation is valid.
194
+
195
+ Args:
196
+ observation: Dictionary containing the current state/observation of the environment
197
+
198
+ Raises:
199
+ AssertionError: If the observation is invalid.
200
+ """
201
+ pass
202
+
203
+ @abstractmethod
204
+ def check_action(self, action: dict[str, Any]) -> None:
205
+ """Check if the action is valid.
206
+
207
+ Args:
208
+ action: Dictionary containing the action to be executed
209
+
210
+ Raises:
211
+ AssertionError: If the action is invalid.
212
+ """
213
+ pass
214
+
215
+ @abstractmethod
216
+ def _get_action(
217
+ self, observation: dict[str, Any], options: dict[str, Any] | None = None
218
+ ) -> tuple[dict[str, Any], dict[str, Any]]:
219
+ """Compute and return the next action based on current observation.
220
+
221
+ This method should be overridden by subclasses to implement policy-specific
222
+ action computation. Input validation is handled by the public get_action() method.
223
+
224
+ Args:
225
+ observation: Dictionary containing the current state/observation
226
+ options: Optional configuration dict for action computation
227
+
228
+ Returns:
229
+ Tuple of (action, info):
230
+ - action: Dictionary containing the action to be executed
231
+ - info: Dictionary containing additional metadata (e.g., confidence scores)
232
+ """
233
+ pass
234
+
235
+ def get_action(
236
+ self, observation: dict[str, Any], options: dict[str, Any] | None = None
237
+ ) -> tuple[dict[str, Any], dict[str, Any]]:
238
+ """Compute and return the next action based on current observation with validation.
239
+
240
+ This is the main public interface. It validates the observation, calls
241
+ the internal _get_action(), and validates the resulting action.
242
+
243
+ Args:
244
+ observation: Dictionary containing the current state/observation
245
+ options: Optional configuration dict for action computation
246
+
247
+ Returns:
248
+ Tuple of (action, info):
249
+ - action: Dictionary containing the validated action
250
+ - info: Dictionary containing additional metadata
251
+
252
+ Raises:
253
+ AssertionError/ValueError: If observation or action validation fails
254
+ """
255
+ if self.strict:
256
+ self.check_observation(observation)
257
+ action, info = self._get_action(observation, options)
258
+ if self.strict:
259
+ self.check_action(action)
260
+ return action, info
261
+
262
+ @abstractmethod
263
+ def reset(self, options: dict[str, Any] | None = None) -> dict[str, Any]:
264
+ """Reset the policy to its initial state.
265
+
266
+ Args:
267
+ options: Dictionary containing the options for the reset
268
+
269
+ Returns:
270
+ Dictionary containing the info after resetting the policy
271
+ """
272
+ pass
273
+
274
+
275
+ class PolicyClient(BasePolicy):
276
+ def __init__(
277
+ self,
278
+ host: str = "localhost",
279
+ port: int = 5555,
280
+ timeout_ms: int = 15000,
281
+ api_token: str = None,
282
+ strict: bool = False,
283
+ ):
284
+ super().__init__(strict=strict)
285
+ self._closed = False
286
+ self.context = zmq.Context()
287
+ self.host = host
288
+ self.port = port
289
+ self.timeout_ms = timeout_ms
290
+ self.api_token = api_token
291
+ self._init_socket()
292
+
293
+ def _init_socket(self):
294
+ """Initialize or reinitialize the socket with current settings"""
295
+ self.socket = self.context.socket(zmq.REQ)
296
+ self.socket.connect(f"tcp://{self.host}:{self.port}")
297
+
298
+ def ping(self) -> bool:
299
+ try:
300
+ self.call_endpoint("ping", requires_input=False)
301
+ return True
302
+ except zmq.error.ZMQError:
303
+ self._init_socket() # Recreate socket for next attempt
304
+ return False
305
+
306
+ def kill_server(self):
307
+ """
308
+ Kill the server.
309
+ """
310
+ self.call_endpoint("kill", requires_input=False)
311
+
312
+ def call_endpoint(
313
+ self, endpoint: str, data: dict | None = None, requires_input: bool = True
314
+ ) -> Any:
315
+ """
316
+ Call an endpoint on the server.
317
+
318
+ Args:
319
+ endpoint: The name of the endpoint.
320
+ data: The input data for the endpoint.
321
+ requires_input: Whether the endpoint requires input data.
322
+ """
323
+ request: dict = {"endpoint": endpoint}
324
+ if requires_input:
325
+ request["data"] = data
326
+ if self.api_token:
327
+ request["api_token"] = self.api_token
328
+
329
+ self.socket.send(MsgSerializer.to_bytes(request))
330
+ message = self.socket.recv()
331
+ if message == b"ERROR":
332
+ raise RuntimeError("Server error. Make sure we are running the correct policy server.")
333
+ response = MsgSerializer.from_bytes(message)
334
+
335
+ if isinstance(response, dict) and "error" in response:
336
+ raise RuntimeError(f"Server error: {response['error']}")
337
+ return response
338
+
339
+ def close(self) -> None:
340
+ """Release the REQ socket and ZMQ context. Idempotent.
341
+
342
+ Mirrors ``gr00t.policy.server_client.PolicyClient.close()`` so the
343
+ DROID example demonstrates the explicit-lifecycle pattern.
344
+ """
345
+ if getattr(self, "_closed", True):
346
+ return
347
+ self._closed = True
348
+ socket = getattr(self, "socket", None)
349
+ if socket is not None:
350
+ try:
351
+ socket.close(linger=0)
352
+ except Exception:
353
+ pass
354
+ context = getattr(self, "context", None)
355
+ if context is not None:
356
+ try:
357
+ context.term()
358
+ except Exception:
359
+ pass
360
+
361
+ def __enter__(self):
362
+ return self
363
+
364
+ def __exit__(self, exc_type, exc, tb):
365
+ self.close()
366
+
367
+ def __del__(self):
368
+ try:
369
+ self.close()
370
+ except Exception:
371
+ pass
372
+
373
+ def _get_action(
374
+ self, observation: dict[str, Any], options: dict[str, Any] | None = None
375
+ ) -> tuple[dict[str, Any], dict[str, Any]]:
376
+ response = self.call_endpoint(
377
+ "get_action", {"observation": observation, "options": options}
378
+ )
379
+ return tuple(response) # Convert list (from msgpack) to tuple of (action, info)
380
+
381
+ def reset(self, options: dict[str, Any] | None = None) -> dict[str, Any]:
382
+ return self.call_endpoint("reset", {"options": options})
383
+
384
+ def get_modality_config(self) -> dict[str, ModalityConfig]:
385
+ return self.call_endpoint("get_modality_config", requires_input=False)
386
+
387
+ def check_observation(self, observation: dict[str, Any]) -> None:
388
+ raise NotImplementedError(
389
+ "check_observation is not implemented. Please use `strict=False` to disable strict mode or implement this method in the subclass."
390
+ )
391
+
392
+ def check_action(self, action: dict[str, Any]) -> None:
393
+ raise NotImplementedError(
394
+ "check_action is not implemented. Please use `strict=False` to disable strict mode or implement this method in the subclass."
395
+ )
Isaac-GR00T/examples/DROID/utils.py ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ """
17
+ Taken from https://github.com/Physical-Intelligence/openpi/tree/main/packages/openpi-client/src/openpi_client
18
+ """
19
+
20
+ import numpy as np
21
+ from PIL import Image
22
+
23
+
24
+ def convert_to_uint8(img: np.ndarray) -> np.ndarray:
25
+ """Converts an image to uint8 if it is a float image.
26
+
27
+ This is important for reducing the size of the image when sending it over the network.
28
+ """
29
+ if np.issubdtype(img.dtype, np.floating):
30
+ img = (255 * img).astype(np.uint8)
31
+ return img
32
+
33
+
34
+ def resize_with_pad(
35
+ images: np.ndarray, height: int, width: int, method=Image.BILINEAR
36
+ ) -> np.ndarray:
37
+ """Replicates tf.image.resize_with_pad for multiple images using PIL. Resizes a batch of images to a target height.
38
+
39
+ Args:
40
+ images: A batch of images in [..., height, width, channel] format.
41
+ height: The target height of the image.
42
+ width: The target width of the image.
43
+ method: The interpolation method to use. Default is bilinear.
44
+
45
+ Returns:
46
+ The resized images in [..., height, width, channel].
47
+ """
48
+ # If the images are already the correct size, return them as is.
49
+ if images.shape[-3:-1] == (height, width):
50
+ return images
51
+
52
+ original_shape = images.shape
53
+
54
+ images = images.reshape(-1, *original_shape[-3:])
55
+ resized = np.stack(
56
+ [_resize_with_pad_pil(Image.fromarray(im), height, width, method=method) for im in images]
57
+ )
58
+ return resized.reshape(*original_shape[:-3], *resized.shape[-3:])
59
+
60
+
61
+ def _resize_with_pad_pil(image: Image.Image, height: int, width: int, method: int) -> Image.Image:
62
+ """Replicates tf.image.resize_with_pad for one image using PIL. Resizes an image to a target height and
63
+ width without distortion by padding with zeros.
64
+
65
+ Unlike the jax version, note that PIL uses [width, height, channel] ordering instead of [batch, h, w, c].
66
+ """
67
+ cur_width, cur_height = image.size
68
+ if cur_width == width and cur_height == height:
69
+ return image # No need to resize if the image is already the correct size.
70
+
71
+ ratio = max(cur_width / width, cur_height / height)
72
+ resized_height = int(cur_height / ratio)
73
+ resized_width = int(cur_width / ratio)
74
+ resized_image = image.resize((resized_width, resized_height), resample=method)
75
+
76
+ zero_image = Image.new(resized_image.mode, (width, height), 0)
77
+ pad_height = max(0, int((height - resized_height) / 2))
78
+ pad_width = max(0, int((width - resized_width) / 2))
79
+ zero_image.paste(resized_image, (pad_width, pad_height))
80
+ assert zero_image.size == (width, height)
81
+ return zero_image
Isaac-GR00T/examples/GR00TWholeBodyControl/README.md ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # GR00T Whole-Body Control Real-World Benchmark
2
+
3
+ This example reports a real-world Unitree G1 evaluation using **Isaac GR00T N1.7** together with **GR00T Whole-Body Control / GEAR-SONIC**. The benchmark focuses on everyday mobile-manipulation tasks that require walking, table approach, grasping, foot placement, and whole-body pickup motions.
4
+
5
+ ## Summary
6
+
7
+ GR00T N1.7 with SONIC can execute closed-loop whole-body skills on a real humanoid robot. The main targeted task is **walk to a table and pick up an object**. A single mixed-object policy was trained from demonstrations covering about 50 table-top objects, then evaluated systematically across 8 representative objects in the training set. This follows the object-pickup setting studied in the [SONIC paper](https://nvlabs.github.io/GEAR-SONIC/static/pdf/sonic_paper.pdf), where the robot walks to a table, locates a target object, and grasps it under randomized table heights and object positions. A second task-specific policy was trained for walking to a small table, picking up a soda can, stepping on a trash-can trigger, and dropping the can inside.
8
+
9
+ For more GR00T Whole-Body Control task examples, see the [GEAR-SONIC project page](https://nvlabs.github.io/GEAR-SONIC/).
10
+
11
+ ## Evaluation Results
12
+
13
+ | Task Family | Policy Setup | Task Specification | Logged Trials | Successes | Success Rate |
14
+ | --- | --- | --- | ---: | ---: | ---: |
15
+ | Walk to table and pick up object | Single mixed-object pickup policy | Walk to the table, localize a target object, grasp it, and lift it. Evaluated on 8 objects across 3 table heights and 9 object placements. Autonomous retries count as success. | 216 | 159 | 73.6% |
16
+ | Soda can from small table to trash can | Task-specific soda-can policy | Walk toward a small table, pick up a soda can, rotate toward the trash can, step on the trigger, and drop the can inside. | 12 | 8 | 66.7% |
17
+
18
+ For object pickup, each object was evaluated with 27 trials: 3 table heights (24, 27, and 30 inches) crossed with a 3 by 3 grid of object placements on the table (left/middle/right and front/middle/back). The failures were mostly grasp failures: the gripper missed the object, contacted it from an unstable grasp point, pushed it out of reach, or dropped it into a pose that the policy could not recover from. The soda-can failures were similarly dominated by missed grasps, unstable grasps, or missed trigger steps.
19
+
20
+ ### Object Pickup Breakdown
21
+
22
+ | Object | Trials | Successes | Success Rate |
23
+ | --- | ---: | ---: | ---: |
24
+ | Towel | 27 | 24 | 88.9% |
25
+ | Shoe | 27 | 14 | 51.9% |
26
+ | Apple | 27 | 19 | 70.4% |
27
+ | Scoop | 27 | 18 | 66.7% |
28
+ | Lamp | 27 | 17 | 63.0% |
29
+ | Flashlight | 27 | 20 | 74.1% |
30
+ | Fruit | 27 | 26 | 96.3% |
31
+ | Sock | 27 | 21 | 77.8% |
32
+
33
+ ## Demo Videos
34
+
35
+ The MP4 samples below are attached as video files in this repository. Click any preview image to open the corresponding MP4. The source tree intentionally keeps only a curated sample set; full per-trial review videos are better shared as supplementary material through a stable gallery or archive. For more task demos beyond these two quantified results, see the [GEAR-SONIC project page](https://nvlabs.github.io/GEAR-SONIC/).
36
+
37
+ ### Walk To Table And Pick Up Objects
38
+
39
+ Representative examples are included for the evaluated object pickup task. Captions describe the behavior visible in the clip; some successful clips include retries, regrasping, object contact, or small recovery motions because autonomous recovery was counted as success during evaluation. A trial is considered failure when it stucks for over 30s without progress.
40
+
41
+ | Object | Example 1 | Example 2 |
42
+ | --- | --- | --- |
43
+ | Lamp | [<img src="media/g1_real_eval/posters/mixed_pickup_lamp_01_pickup_success.jpg" alt="Lamp pickup from a 24-inch table placement" width="280">](media/g1_real_eval/videos/mixed_pickup_lamp_01_pickup_success.mp4)<br>Picks up the lamp from a 24-inch table | [<img src="media/g1_real_eval/posters/mixed_pickup_lamp_02_base_grasp_success.jpg" alt="Lamp base grasp after contact at a 30-inch table placement" width="280">](media/g1_real_eval/videos/mixed_pickup_lamp_02_base_grasp_success.mp4)<br>Contacts the lamp, then grasps the base |
44
+ | Towel | [<img src="media/g1_real_eval/posters/mixed_pickup_towel_01_pickup_success.jpg" alt="Towel pickup from a 24-inch table placement" width="280">](media/g1_real_eval/videos/mixed_pickup_towel_01_pickup_success.mp4)<br>Picks up the towel | [<img src="media/g1_real_eval/posters/mixed_pickup_towel_02_regrasp_success.jpg" alt="Towel grasp, drop, and regrasp sequence" width="280">](media/g1_real_eval/videos/mixed_pickup_towel_02_regrasp_success.mp4)<br>Grasps, drops, and regrasps |
45
+ | Apple | [<img src="media/g1_real_eval/posters/mixed_pickup_apple_01_retry_success.jpg" alt="Apple pickup after a retry grasp" width="280">](media/g1_real_eval/videos/mixed_pickup_apple_01_retry_success.mp4)<br>Retries the grasp and succeeds | [<img src="media/g1_real_eval/posters/mixed_pickup_apple_02_adjust_success.jpg" alt="Apple pickup after gripper adjustment over the object" width="280">](media/g1_real_eval/videos/mixed_pickup_apple_02_adjust_success.mp4)<br>Adjusts over the apple before lifting |
46
+ | Shoe | [<img src="media/g1_real_eval/posters/mixed_pickup_shoe_01_many_attempts_success.jpg" alt="Shoe pickup after multiple grasp attempts" width="280">](media/g1_real_eval/videos/mixed_pickup_shoe_01_many_attempts_success.mp4)<br>Succeeds after several attempts | [<img src="media/g1_real_eval/posters/mixed_pickup_shoe_02_regrasp_success.jpg" alt="Shoe drop and regrasp success" width="280">](media/g1_real_eval/videos/mixed_pickup_shoe_02_regrasp_success.mp4)<br>Drops the shoe, then regrasps |
47
+ | Scoop | [<img src="media/g1_real_eval/posters/mixed_pickup_scoop_01_pickup_success.jpg" alt="Scoop pickup from a 27-inch table placement" width="280">](media/g1_real_eval/videos/mixed_pickup_scoop_01_pickup_success.mp4)<br>Picks up the scoop | [<img src="media/g1_real_eval/posters/mixed_pickup_scoop_02_noisy_success.jpg" alt="Scoop pickup with noisy approach motion" width="280">](media/g1_real_eval/videos/mixed_pickup_scoop_02_noisy_success.mp4)<br>Noisy approach, successful pickup |
48
+ | Flashlight | [<img src="media/g1_real_eval/posters/mixed_pickup_flashlight_01_smooth_success.jpg" alt="Smooth flashlight pickup" width="280">](media/g1_real_eval/videos/mixed_pickup_flashlight_01_smooth_success.mp4)<br>Smooth pickup | [<img src="media/g1_real_eval/posters/mixed_pickup_flashlight_02_pickup_success.jpg" alt="Flashlight pickup from a 27-inch table placement" width="280">](media/g1_real_eval/videos/mixed_pickup_flashlight_02_pickup_success.mp4)<br>Picks up the flashlight |
49
+ | Fruit | [<img src="media/g1_real_eval/posters/mixed_pickup_fruit_01_pickup_success.jpg" alt="Fruit pickup from a 24-inch table placement" width="280">](media/g1_real_eval/videos/mixed_pickup_fruit_01_pickup_success.mp4)<br>Picks up the fruit | [<img src="media/g1_real_eval/posters/mixed_pickup_fruit_02_regrasp_success.jpg" alt="Fruit grasp, drop, and regrasp success" width="280">](media/g1_real_eval/videos/mixed_pickup_fruit_02_regrasp_success.mp4)<br>Grasps, drops, and regrasps |
50
+ | Sock | [<img src="media/g1_real_eval/posters/mixed_pickup_sock_01_top_grasp_success.jpg" alt="Sock top-down grasp success" width="280">](media/g1_real_eval/videos/mixed_pickup_sock_01_top_grasp_success.mp4)<br>Top-down grasp succeeds | [<img src="media/g1_real_eval/posters/mixed_pickup_sock_02_regrasp_success.jpg" alt="Sock grasp, drop, and regrasp success" width="280">](media/g1_real_eval/videos/mixed_pickup_sock_02_regrasp_success.mp4)<br>Drops once, then regrasps |
51
+
52
+ ### Soda Can From Small Table To Trash Can
53
+
54
+ | Task | Example 1 | Example 2 | Example 3 |
55
+ | --- | --- | --- | --- |
56
+ | Soda can to trash | [<img src="media/g1_real_eval/posters/soda_can_table_trash_01_smooth_success.jpg" alt="Soda can picked up and dropped into the trash can in one smooth sequence" width="240">](media/g1_real_eval/videos/soda_can_table_trash_01_smooth_success.mp4)<br>Smooth full sequence | [<img src="media/g1_real_eval/posters/soda_can_table_trash_02_second_grasp_step_success.jpg" alt="Soda can succeeds after a second grasp and second trigger step" width="240">](media/g1_real_eval/videos/soda_can_table_trash_02_second_grasp_step_success.mp4)<br>Second grasp and trigger step | [<img src="media/g1_real_eval/posters/soda_can_table_trash_03_clean_success.jpg" alt="Soda can picked up and dropped into the trash can without a visible retry" width="240">](media/g1_real_eval/videos/soda_can_table_trash_03_clean_success.mp4)<br>Single-attempt full sequence |
57
+
58
+ ## Data Collection Experience
59
+
60
+ We followed the [GR00T Whole-Body Control data collection tutorial](https://nvlabs.github.io/GR00T-WholeBodyControl/tutorials/data_collection.html) to collect G1 whole-body manipulation datasets.
61
+
62
+ Training a good policy depends on both collecting high-quality data and configuring training properly. Each demonstration should ideally complete the task on the first attempt, without corrective motions such as re-grasping after a failed grasp or redoing a missed stepping trigger. For the mixed object pickup policy, we trained for 60k iterations at batch size 256 on roughly 18k episodes covering about 50 different objects; for the soda-can-to-trash policy, we trained for 20k iterations at batch size 32 on roughly 150 episodes of this single task.
63
+
64
+ ### Notes
65
+
66
+ 1. The mixed pickup result uses one policy trained from a combined object dataset and evaluated across multiple table-top objects.
67
+ 2. For the pickup task, we used an in-house UMI gripper design. Similar tasks may require users to build task-appropriate gripper designs for their own hardware setup.
68
+
69
+ ## Data-Train-Eval Workflow
70
+
71
+ This benchmark used the public GR00T N1.7 and GR00T Whole-Body Control workflow:
72
+
73
+ 1. Collect G1 demonstrations with SONIC teleoperation.
74
+ 2. Fine-tune GR00T N1.7 with `UNITREE_G1_SONIC`.
75
+ 3. Run the GR00T policy server and the SONIC robot-side controller.
76
+ 4. Evaluate in closed loop on the real robot with video recording.
77
+
78
+ Fine-tuning used the SONIC embodiment tag:
79
+
80
+ ```bash
81
+ bash examples/finetune.sh \
82
+ --base-model-path nvidia/GR00T-N1.7-3B \
83
+ --dataset-path /path/to/your/lerobot_dataset \
84
+ --embodiment-tag UNITREE_G1_SONIC \
85
+ --output-dir /path/to/output_checkpoint \
86
+ --experiment-name g1-sonic-task
87
+ ```
88
+
89
+ Closed-loop evaluation used a GR00T policy server:
90
+
91
+ ```bash
92
+ python gr00t/eval/run_gr00t_server.py \
93
+ --model-path /path/to/output_checkpoint/checkpoint-<step> \
94
+ --embodiment-tag UNITREE_G1_SONIC \
95
+ --device cuda:0 \
96
+ --host 0.0.0.0 \
97
+ --port 5550
98
+ ```
99
+
100
+ The robot-side controller follows the GR00T Whole-Body Control VLA inference workflow.
101
+
102
+ ### Notes
103
+
104
+ - The data format should be LeRobot V2 already and ready to train the model.
105
+ - It would be beneficial to check open-loop robot joint trajectory matching against training set/validation set before deploying on real robot.
106
+ - As suggested in Data Collection Experience, data quality is preferred than quantity during post-training.
107
+
108
+ ## References
109
+
110
+ - [NVIDIA Isaac GR00T](https://github.com/NVIDIA/Isaac-GR00T)
111
+ - [SONIC paper](https://nvlabs.github.io/GEAR-SONIC/static/pdf/sonic_paper.pdf)
112
+ - [GR00T Whole-Body Control documentation](https://nvlabs.github.io/GR00T-WholeBodyControl/)
113
+ - [GEAR-SONIC project page](https://nvlabs.github.io/GEAR-SONIC/)
114
+ - [GR00T data preparation guide](../../getting_started/data_preparation.md)
115
+ - [GR00T policy server/client guide](../../getting_started/policy.md)
Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_apple_01_retry_success.jpg ADDED
Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_apple_02_adjust_success.jpg ADDED
Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_flashlight_01_smooth_success.jpg ADDED
Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_flashlight_02_pickup_success.jpg ADDED
Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_fruit_01_pickup_success.jpg ADDED
Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_fruit_02_regrasp_success.jpg ADDED
Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_lamp_01_pickup_success.jpg ADDED
Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_lamp_02_base_grasp_success.jpg ADDED
Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_scoop_01_pickup_success.jpg ADDED
Isaac-GR00T/examples/GR00TWholeBodyControl/media/g1_real_eval/posters/mixed_pickup_scoop_02_noisy_success.jpg ADDED