holosoma 0.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- holosoma-0.0.1/PKG-INFO +349 -0
- holosoma-0.0.1/README.md +286 -0
- holosoma-0.0.1/holosoma/__init__.py +0 -0
- holosoma-0.0.1/holosoma/agents/base_algo/base_algo.py +155 -0
- holosoma-0.0.1/holosoma/agents/callbacks/base_callback.py +21 -0
- holosoma-0.0.1/holosoma/agents/callbacks/payload.py +172 -0
- holosoma-0.0.1/holosoma/agents/callbacks/push.py +263 -0
- holosoma-0.0.1/holosoma/agents/callbacks/recording.py +192 -0
- holosoma-0.0.1/holosoma/agents/fast_sac/fast_sac.py +474 -0
- holosoma-0.0.1/holosoma/agents/fast_sac/fast_sac_agent.py +1056 -0
- holosoma-0.0.1/holosoma/agents/fast_sac/fast_sac_utils.py +385 -0
- holosoma-0.0.1/holosoma/agents/modules/augmentation_utils.py +547 -0
- holosoma-0.0.1/holosoma/agents/modules/data_utils.py +134 -0
- holosoma-0.0.1/holosoma/agents/modules/logging_utils.py +446 -0
- holosoma-0.0.1/holosoma/agents/modules/module_utils.py +52 -0
- holosoma-0.0.1/holosoma/agents/modules/modules.py +407 -0
- holosoma-0.0.1/holosoma/agents/modules/ppo_modules.py +186 -0
- holosoma-0.0.1/holosoma/agents/modules/tests/test_augmentation_utils.py +366 -0
- holosoma-0.0.1/holosoma/agents/modules/tests/test_logging_utils.py +187 -0
- holosoma-0.0.1/holosoma/agents/modules/tests/test_module_dimensions.py +263 -0
- holosoma-0.0.1/holosoma/agents/ppo/ppo.py +918 -0
- holosoma-0.0.1/holosoma/bridge/__init__.py +45 -0
- holosoma-0.0.1/holosoma/bridge/base/__init__.py +9 -0
- holosoma-0.0.1/holosoma/bridge/base/basic_sdk2py_bridge.py +368 -0
- holosoma-0.0.1/holosoma/bridge/booster/__init__.py +7 -0
- holosoma-0.0.1/holosoma/bridge/booster/booster_sdk2py_bridge.py +124 -0
- holosoma-0.0.1/holosoma/bridge/ros2/__init__.py +5 -0
- holosoma-0.0.1/holosoma/bridge/ros2/ros2_bridge.py +135 -0
- holosoma-0.0.1/holosoma/bridge/unitree/__init__.py +13 -0
- holosoma-0.0.1/holosoma/bridge/unitree/tests/__init__.py +0 -0
- holosoma-0.0.1/holosoma/bridge/unitree/tests/_fake_unitree_interface.py +146 -0
- holosoma-0.0.1/holosoma/bridge/unitree/tests/test_unitree_mp_bridge.py +207 -0
- holosoma-0.0.1/holosoma/bridge/unitree/unitree_sdk2py_bridge.py +129 -0
- holosoma-0.0.1/holosoma/bridge/unitree/unitree_sdk2py_bridge_mp.py +320 -0
- holosoma-0.0.1/holosoma/config_types/action.py +33 -0
- holosoma-0.0.1/holosoma/config_types/algo.py +345 -0
- holosoma-0.0.1/holosoma/config_types/command.py +131 -0
- holosoma-0.0.1/holosoma/config_types/curriculum.py +36 -0
- holosoma-0.0.1/holosoma/config_types/distribution.py +193 -0
- holosoma-0.0.1/holosoma/config_types/env.py +80 -0
- holosoma-0.0.1/holosoma/config_types/eval_callback.py +129 -0
- holosoma-0.0.1/holosoma/config_types/experiment.py +227 -0
- holosoma-0.0.1/holosoma/config_types/frequency.py +97 -0
- holosoma-0.0.1/holosoma/config_types/full_sim.py +38 -0
- holosoma-0.0.1/holosoma/config_types/logger.py +89 -0
- holosoma-0.0.1/holosoma/config_types/observation.py +57 -0
- holosoma-0.0.1/holosoma/config_types/plugin.py +385 -0
- holosoma-0.0.1/holosoma/config_types/randomization.py +147 -0
- holosoma-0.0.1/holosoma/config_types/reward.py +37 -0
- holosoma-0.0.1/holosoma/config_types/robot.py +169 -0
- holosoma-0.0.1/holosoma/config_types/run_sim.py +105 -0
- holosoma-0.0.1/holosoma/config_types/scene.py +425 -0
- holosoma-0.0.1/holosoma/config_types/sensor.py +292 -0
- holosoma-0.0.1/holosoma/config_types/simulator.py +343 -0
- holosoma-0.0.1/holosoma/config_types/termination.py +30 -0
- holosoma-0.0.1/holosoma/config_types/terrain.py +216 -0
- holosoma-0.0.1/holosoma/config_types/tests/test_frequency.py +143 -0
- holosoma-0.0.1/holosoma/config_types/tests/test_link_physics.py +215 -0
- holosoma-0.0.1/holosoma/config_types/tests/test_plugin_egress_config.py +79 -0
- holosoma-0.0.1/holosoma/config_types/tests/test_sensor_config.py +63 -0
- holosoma-0.0.1/holosoma/config_types/tests/test_tyro_cli.py +8 -0
- holosoma-0.0.1/holosoma/config_types/video.py +156 -0
- holosoma-0.0.1/holosoma/config_types/viewer.py +53 -0
- holosoma-0.0.1/holosoma/config_values/__init__.py +1 -0
- holosoma-0.0.1/holosoma/config_values/action.py +18 -0
- holosoma-0.0.1/holosoma/config_values/algo.py +117 -0
- holosoma-0.0.1/holosoma/config_values/command.py +24 -0
- holosoma-0.0.1/holosoma/config_values/curriculum.py +22 -0
- holosoma-0.0.1/holosoma/config_values/experiment.py +43 -0
- holosoma-0.0.1/holosoma/config_values/loco/__init__.py +7 -0
- holosoma-0.0.1/holosoma/config_values/loco/g1/__init__.py +7 -0
- holosoma-0.0.1/holosoma/config_values/loco/g1/action.py +16 -0
- holosoma-0.0.1/holosoma/config_values/loco/g1/command.py +40 -0
- holosoma-0.0.1/holosoma/config_values/loco/g1/curriculum.py +59 -0
- holosoma-0.0.1/holosoma/config_values/loco/g1/experiment.py +58 -0
- holosoma-0.0.1/holosoma/config_values/loco/g1/observation.py +119 -0
- holosoma-0.0.1/holosoma/config_values/loco/g1/randomization.py +106 -0
- holosoma-0.0.1/holosoma/config_values/loco/g1/reward.py +193 -0
- holosoma-0.0.1/holosoma/config_values/loco/g1/termination.py +21 -0
- holosoma-0.0.1/holosoma/config_values/loco/t1/__init__.py +7 -0
- holosoma-0.0.1/holosoma/config_values/loco/t1/action.py +16 -0
- holosoma-0.0.1/holosoma/config_values/loco/t1/command.py +40 -0
- holosoma-0.0.1/holosoma/config_values/loco/t1/curriculum.py +53 -0
- holosoma-0.0.1/holosoma/config_values/loco/t1/experiment.py +60 -0
- holosoma-0.0.1/holosoma/config_values/loco/t1/observation.py +119 -0
- holosoma-0.0.1/holosoma/config_values/loco/t1/randomization.py +108 -0
- holosoma-0.0.1/holosoma/config_values/loco/t1/reward.py +193 -0
- holosoma-0.0.1/holosoma/config_values/loco/t1/termination.py +21 -0
- holosoma-0.0.1/holosoma/config_values/logger.py +14 -0
- holosoma-0.0.1/holosoma/config_values/observation.py +21 -0
- holosoma-0.0.1/holosoma/config_values/plugin.py +150 -0
- holosoma-0.0.1/holosoma/config_values/randomization.py +21 -0
- holosoma-0.0.1/holosoma/config_values/reward.py +28 -0
- holosoma-0.0.1/holosoma/config_values/robot.py +1128 -0
- holosoma-0.0.1/holosoma/config_values/run_sim.py +95 -0
- holosoma-0.0.1/holosoma/config_values/scene.py +70 -0
- holosoma-0.0.1/holosoma/config_values/sensor.py +57 -0
- holosoma-0.0.1/holosoma/config_values/simulator.py +117 -0
- holosoma-0.0.1/holosoma/config_values/termination.py +20 -0
- holosoma-0.0.1/holosoma/config_values/terrain.py +78 -0
- holosoma-0.0.1/holosoma/config_values/tests/test_plugin_registry.py +150 -0
- holosoma-0.0.1/holosoma/config_values/tests/test_registry.py +389 -0
- holosoma-0.0.1/holosoma/config_values/wbt/__init__.py +1 -0
- holosoma-0.0.1/holosoma/config_values/wbt/g1/__init__.py +7 -0
- holosoma-0.0.1/holosoma/config_values/wbt/g1/command.py +82 -0
- holosoma-0.0.1/holosoma/config_values/wbt/g1/curriculum.py +19 -0
- holosoma-0.0.1/holosoma/config_values/wbt/g1/experiment.py +205 -0
- holosoma-0.0.1/holosoma/config_values/wbt/g1/observation.py +141 -0
- holosoma-0.0.1/holosoma/config_values/wbt/g1/randomization.py +154 -0
- holosoma-0.0.1/holosoma/config_values/wbt/g1/reward.py +113 -0
- holosoma-0.0.1/holosoma/config_values/wbt/g1/scene.py +16 -0
- holosoma-0.0.1/holosoma/config_values/wbt/g1/sensor.py +110 -0
- holosoma-0.0.1/holosoma/config_values/wbt/g1/termination.py +50 -0
- holosoma-0.0.1/holosoma/data/__init__.py +1 -0
- holosoma-0.0.1/holosoma/data/motions/g1_29dof/whole_body_tracking/motion_crawl_slope.npz +0 -0
- holosoma-0.0.1/holosoma/data/motions/g1_29dof/whole_body_tracking/sub3_largebox_003_mj.npz +0 -0
- holosoma-0.0.1/holosoma/data/motions/g1_29dof/whole_body_tracking/sub3_largebox_003_mj_w_obj.npz +0 -0
- holosoma-0.0.1/holosoma/data/motions/g1_29dof/whole_body_tracking/terrain_slope.obj +61 -0
- holosoma-0.0.1/holosoma/data/robots/g1/g1_29dof.urdf +1133 -0
- holosoma-0.0.1/holosoma/data/robots/g1/g1_29dof.xml +486 -0
- holosoma-0.0.1/holosoma/data/robots/g1/main_mesh_collision_halfspherehand.urdf +1128 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/half_sphere.obj +114743 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/head_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_G1_EE_pad.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_ankle_pitch_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_ankle_roll_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_elbow_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_elbow_link_merge.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_index_0_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_index_1_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_middle_0_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_middle_1_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_palm_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_thumb_0_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_thumb_1_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_thumb_2_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hip_pitch_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hip_roll_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hip_yaw_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_knee_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_rubber_hand.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_shoulder_pitch_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_shoulder_roll_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_shoulder_yaw_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_wrist_pitch_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_wrist_roll_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_wrist_roll_rubber_hand.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_wrist_yaw_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/logo_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/pelvis.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/pelvis_contour_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_G1_EE_pad.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_ankle_pitch_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_ankle_roll_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_elbow_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_elbow_link_merge.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_index_0_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_index_1_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_middle_0_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_middle_1_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_palm_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_thumb_0_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_thumb_1_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_thumb_2_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hip_pitch_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hip_roll_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hip_yaw_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_knee_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_rubber_hand.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_shoulder_pitch_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_shoulder_roll_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_shoulder_yaw_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_wrist_pitch_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_wrist_roll_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_wrist_roll_rubber_hand.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_wrist_yaw_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/torso_constraint_L_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/torso_constraint_L_rod_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/torso_constraint_R_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/torso_constraint_R_rod_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/torso_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/torso_link_23dof_rev_1_0.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/torso_link_rev_1_0.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/tote_no_bar.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/waist_constraint_L.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/waist_constraint_R.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/waist_roll_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/waist_roll_link_rev_1_0.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/waist_support_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/waist_yaw_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/meshes/waist_yaw_link_rev_1_0.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/g1/scenes/scene_g1_29dof_wbt_plane.xml +26 -0
- holosoma-0.0.1/holosoma/data/robots/onelink_box/onelink_box.urdf +45 -0
- holosoma-0.0.1/holosoma/data/robots/onelink_box/onelink_box.xml +10 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/AL1.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/AL2.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/AL3.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/AL4.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/AL5.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/AL6.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/AL7.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/AR1.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/AR2.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/AR3.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/AR4.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/AR5.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/AR6.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/AR7.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Ankle_Cross_Left.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Ankle_Cross_Right.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Crank_Down_Left.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Crank_Down_Right.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Crank_Up_Left.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Crank_Up_Right.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Down_Left_XX_Ball.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Down_Left_X_Ball.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Down_Left_Y_Ball.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Down_Right_XX_Ball.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Down_Right_X_Ball.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Down_Right_Y_Ball.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/H1.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/H2.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Hip_Pitch_Left.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Hip_Pitch_Right.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Hip_Roll_Left.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Hip_Roll_Right.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Hip_Yaw_Left.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Hip_Yaw_Right.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Link_Long_Left.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Link_Long_Right.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Link_Short_Left.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Link_Short_Right.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Shank_Left.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Shank_Right.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Trunk.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Up_Left_XX_Ball.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Up_Left_X_Ball.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Up_Left_Y_Ball.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Up_Right_XX_Ball.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Up_Right_X_Ball.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Up_Right_Y_Ball.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/Waist.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_Link1.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_Link11.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_Link2.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_Link22.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_base_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_foot_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_hand_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_rubber_hand.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_Link1.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_Link11.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_Link2.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_Link22.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_base_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_foot_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_hand_link.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_rubber_hand.STL +0 -0
- holosoma-0.0.1/holosoma/data/robots/t1/t1_29dof.urdf +1629 -0
- holosoma-0.0.1/holosoma/data/robots/t1/t1_29dof.xml +300 -0
- holosoma-0.0.1/holosoma/data/scene_objects/boxes/large_box.urdf +32 -0
- holosoma-0.0.1/holosoma/data/scene_objects/boxes/largebox.obj +54685 -0
- holosoma-0.0.1/holosoma/data/scene_objects/boxes/small_box.urdf +19 -0
- holosoma-0.0.1/holosoma/data/scene_objects/boxes/small_box.usda +24 -0
- holosoma-0.0.1/holosoma/data/scene_objects/boxes/small_box.xml +9 -0
- holosoma-0.0.1/holosoma/data/scene_objects/multibody/multibody.urdf +47 -0
- holosoma-0.0.1/holosoma/data/scene_objects/multibody/multibody.usda +48 -0
- holosoma-0.0.1/holosoma/data/scene_objects/multibody/multibody.xml +15 -0
- holosoma-0.0.1/holosoma/data/scene_objects/multibody/unauthored_table.usda +45 -0
- holosoma-0.0.1/holosoma/data/scene_objects/panels/red_panel.urdf +23 -0
- holosoma-0.0.1/holosoma/data/scene_objects/panels/red_panel.usda +27 -0
- holosoma-0.0.1/holosoma/data/scene_objects/panels/red_panel.xml +12 -0
- holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/LICENSE +1 -0
- holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/RubberDuck.mtl +7 -0
- holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/RubberDuck.obj +1773 -0
- holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/RubberDuck_BaseColor.png +0 -0
- holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/huge_rubber_duck.urdf +33 -0
- holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/huge_rubber_duck.xml +17 -0
- holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/large_rubber_duck.urdf +33 -0
- holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/large_rubber_duck.xml +16 -0
- holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/rubber_duck.urdf +32 -0
- holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/rubber_duck.xml +19 -0
- holosoma-0.0.1/holosoma/envs/__init__.py +1 -0
- holosoma-0.0.1/holosoma/envs/base_task/__init__.py +5 -0
- holosoma-0.0.1/holosoma/envs/base_task/base_task.py +616 -0
- holosoma-0.0.1/holosoma/envs/locomotion/__init__.py +9 -0
- holosoma-0.0.1/holosoma/envs/locomotion/locomotion_manager.py +336 -0
- holosoma-0.0.1/holosoma/envs/tests/test_e2e.py +49 -0
- holosoma-0.0.1/holosoma/envs/tests/test_obs_dict_group.py +99 -0
- holosoma-0.0.1/holosoma/envs/tests/test_push_randomization.py +178 -0
- holosoma-0.0.1/holosoma/envs/wbt/wbt_manager.py +245 -0
- holosoma-0.0.1/holosoma/eval_agent.py +110 -0
- holosoma-0.0.1/holosoma/examples/__init__.py +1 -0
- holosoma-0.0.1/holosoma/examples/object_managers_demo.py +380 -0
- holosoma-0.0.1/holosoma/managers/__init__.py +10 -0
- holosoma-0.0.1/holosoma/managers/action/__init__.py +10 -0
- holosoma-0.0.1/holosoma/managers/action/base.py +145 -0
- holosoma-0.0.1/holosoma/managers/action/manager.py +242 -0
- holosoma-0.0.1/holosoma/managers/action/terms/__init__.py +9 -0
- holosoma-0.0.1/holosoma/managers/action/terms/joint_control.py +337 -0
- holosoma-0.0.1/holosoma/managers/command/__init__.py +6 -0
- holosoma-0.0.1/holosoma/managers/command/base.py +41 -0
- holosoma-0.0.1/holosoma/managers/command/manager.py +227 -0
- holosoma-0.0.1/holosoma/managers/command/terms/__init__.py +5 -0
- holosoma-0.0.1/holosoma/managers/command/terms/locomotion.py +224 -0
- holosoma-0.0.1/holosoma/managers/command/terms/wbt.py +1495 -0
- holosoma-0.0.1/holosoma/managers/curriculum/__init__.py +5 -0
- holosoma-0.0.1/holosoma/managers/curriculum/base.py +68 -0
- holosoma-0.0.1/holosoma/managers/curriculum/manager.py +173 -0
- holosoma-0.0.1/holosoma/managers/curriculum/terms/__init__.py +5 -0
- holosoma-0.0.1/holosoma/managers/curriculum/terms/locomotion.py +374 -0
- holosoma-0.0.1/holosoma/managers/observation/__init__.py +19 -0
- holosoma-0.0.1/holosoma/managers/observation/base.py +53 -0
- holosoma-0.0.1/holosoma/managers/observation/manager.py +353 -0
- holosoma-0.0.1/holosoma/managers/observation/terms/__init__.py +5 -0
- holosoma-0.0.1/holosoma/managers/observation/terms/cameras.py +54 -0
- holosoma-0.0.1/holosoma/managers/observation/terms/locomotion.py +179 -0
- holosoma-0.0.1/holosoma/managers/observation/terms/objects.py +103 -0
- holosoma-0.0.1/holosoma/managers/observation/terms/wbt.py +221 -0
- holosoma-0.0.1/holosoma/managers/observation/tests/test_camera_obs_terms.py +140 -0
- holosoma-0.0.1/holosoma/managers/randomization/__init__.py +6 -0
- holosoma-0.0.1/holosoma/managers/randomization/base.py +43 -0
- holosoma-0.0.1/holosoma/managers/randomization/exceptions.py +16 -0
- holosoma-0.0.1/holosoma/managers/randomization/manager.py +274 -0
- holosoma-0.0.1/holosoma/managers/randomization/terms/__init__.py +1 -0
- holosoma-0.0.1/holosoma/managers/randomization/terms/_shared.py +20 -0
- holosoma-0.0.1/holosoma/managers/randomization/terms/locomotion.py +1098 -0
- holosoma-0.0.1/holosoma/managers/randomization/terms/objects.py +938 -0
- holosoma-0.0.1/holosoma/managers/reset_events/__init__.py +10 -0
- holosoma-0.0.1/holosoma/managers/reset_events/base.py +33 -0
- holosoma-0.0.1/holosoma/managers/reset_events/manager.py +57 -0
- holosoma-0.0.1/holosoma/managers/reward/__init__.py +6 -0
- holosoma-0.0.1/holosoma/managers/reward/base.py +53 -0
- holosoma-0.0.1/holosoma/managers/reward/manager.py +333 -0
- holosoma-0.0.1/holosoma/managers/reward/terms/__init__.py +5 -0
- holosoma-0.0.1/holosoma/managers/reward/terms/locomotion.py +392 -0
- holosoma-0.0.1/holosoma/managers/reward/terms/wbt.py +175 -0
- holosoma-0.0.1/holosoma/managers/termination/__init__.py +5 -0
- holosoma-0.0.1/holosoma/managers/termination/base.py +27 -0
- holosoma-0.0.1/holosoma/managers/termination/manager.py +129 -0
- holosoma-0.0.1/holosoma/managers/termination/terms/__init__.py +1 -0
- holosoma-0.0.1/holosoma/managers/termination/terms/common.py +10 -0
- holosoma-0.0.1/holosoma/managers/termination/terms/locomotion.py +81 -0
- holosoma-0.0.1/holosoma/managers/termination/terms/wbt.py +146 -0
- holosoma-0.0.1/holosoma/managers/terrain/__init__.py +5 -0
- holosoma-0.0.1/holosoma/managers/terrain/base.py +104 -0
- holosoma-0.0.1/holosoma/managers/terrain/manager.py +60 -0
- holosoma-0.0.1/holosoma/managers/terrain/terms/__init__.py +1 -0
- holosoma-0.0.1/holosoma/managers/terrain/terms/locomotion.py +278 -0
- holosoma-0.0.1/holosoma/managers/utils.py +56 -0
- holosoma-0.0.1/holosoma/py.typed +0 -0
- holosoma-0.0.1/holosoma/replay.py +44 -0
- holosoma-0.0.1/holosoma/run_sim.py +106 -0
- holosoma-0.0.1/holosoma/simulator/__init__.py +11 -0
- holosoma-0.0.1/holosoma/simulator/base_simulator/base_simulator.py +1315 -0
- holosoma-0.0.1/holosoma/simulator/base_simulator/hooks.py +346 -0
- holosoma-0.0.1/holosoma/simulator/base_simulator/tests/test_hooks.py +274 -0
- holosoma-0.0.1/holosoma/simulator/base_simulator/tests/test_plugins.py +119 -0
- holosoma-0.0.1/holosoma/simulator/isaacgym/isaacgym.py +1555 -0
- holosoma-0.0.1/holosoma/simulator/isaacgym/physics.py +164 -0
- holosoma-0.0.1/holosoma/simulator/isaacgym/urdf_scene_loader.py +770 -0
- holosoma-0.0.1/holosoma/simulator/isaacgym/video_recorder.py +176 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/__init__.py +1 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/converters.py +127 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/event_cfg.py +33 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/events.py +352 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/isaaclab_viewpoint_camera_controller.py +250 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/isaacsim.py +1482 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/isaacsim_articulation_cfg.py +96 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/object_spawner.py +565 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/prim_naming.py +76 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/prim_utils.py +358 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/proxy_utils.py +81 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/spawners/__init__.py +4 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/spawners/from_files.py +463 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/spawners/from_files_cfg.py +58 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/spawners/schema_utils.py +146 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/state_adapter.py +186 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/state_utils.py +53 -0
- holosoma-0.0.1/holosoma/simulator/isaacsim/video_recorder.py +292 -0
- holosoma-0.0.1/holosoma/simulator/mujoco/__init__.py +5 -0
- holosoma-0.0.1/holosoma/simulator/mujoco/backends/__init__.py +38 -0
- holosoma-0.0.1/holosoma/simulator/mujoco/backends/base.py +428 -0
- holosoma-0.0.1/holosoma/simulator/mujoco/backends/classic_backend.py +466 -0
- holosoma-0.0.1/holosoma/simulator/mujoco/backends/randomization.py +438 -0
- holosoma-0.0.1/holosoma/simulator/mujoco/backends/warp_backend.py +911 -0
- holosoma-0.0.1/holosoma/simulator/mujoco/backends/warp_bridge.py +241 -0
- holosoma-0.0.1/holosoma/simulator/mujoco/command_registry.py +98 -0
- holosoma-0.0.1/holosoma/simulator/mujoco/fields.py +133 -0
- holosoma-0.0.1/holosoma/simulator/mujoco/mjw_views.py +629 -0
- holosoma-0.0.1/holosoma/simulator/mujoco/mujoco.py +1967 -0
- holosoma-0.0.1/holosoma/simulator/mujoco/scene_manager.py +896 -0
- holosoma-0.0.1/holosoma/simulator/mujoco/tensor_views.py +568 -0
- holosoma-0.0.1/holosoma/simulator/mujoco/video_recorder.py +172 -0
- holosoma-0.0.1/holosoma/simulator/plugins/__init__.py +23 -0
- holosoma-0.0.1/holosoma/simulator/plugins/camera_consumer.py +230 -0
- holosoma-0.0.1/holosoma/simulator/plugins/depth_color.py +67 -0
- holosoma-0.0.1/holosoma/simulator/plugins/ros2/__init__.py +2 -0
- holosoma-0.0.1/holosoma/simulator/plugins/ros2/camera_info.py +50 -0
- holosoma-0.0.1/holosoma/simulator/plugins/ros2/encode.py +120 -0
- holosoma-0.0.1/holosoma/simulator/plugins/ros2/ros2_image_plugin.py +228 -0
- holosoma-0.0.1/holosoma/simulator/plugins/ros2/worker.py +87 -0
- holosoma-0.0.1/holosoma/simulator/plugins/tests/__init__.py +0 -0
- holosoma-0.0.1/holosoma/simulator/plugins/tests/test_camera_consumer.py +226 -0
- holosoma-0.0.1/holosoma/simulator/plugins/tests/test_image_grid.py +150 -0
- holosoma-0.0.1/holosoma/simulator/plugins/tests/test_presets.py +193 -0
- holosoma-0.0.1/holosoma/simulator/plugins/tests/test_ros2_helpers.py +208 -0
- holosoma-0.0.1/holosoma/simulator/plugins/tests/test_ros2_image_plugin.py +384 -0
- holosoma-0.0.1/holosoma/simulator/plugins/viz/__init__.py +5 -0
- holosoma-0.0.1/holosoma/simulator/plugins/viz/image_grid.py +155 -0
- holosoma-0.0.1/holosoma/simulator/plugins/viz/viz_plugin.py +176 -0
- holosoma-0.0.1/holosoma/simulator/shared/__init__.py +1 -0
- holosoma-0.0.1/holosoma/simulator/shared/asset_format.py +69 -0
- holosoma-0.0.1/holosoma/simulator/shared/builtin_plugins.py +23 -0
- holosoma-0.0.1/holosoma/simulator/shared/camera_controller.py +406 -0
- holosoma-0.0.1/holosoma/simulator/shared/camera_sensor.py +154 -0
- holosoma-0.0.1/holosoma/simulator/shared/field_decorators.py +59 -0
- holosoma-0.0.1/holosoma/simulator/shared/image_transform.py +73 -0
- holosoma-0.0.1/holosoma/simulator/shared/object_registry.py +561 -0
- holosoma-0.0.1/holosoma/simulator/shared/root_states_view.py +114 -0
- holosoma-0.0.1/holosoma/simulator/shared/ros2_plugins.py +335 -0
- holosoma-0.0.1/holosoma/simulator/shared/scene_types.py +33 -0
- holosoma-0.0.1/holosoma/simulator/shared/simulator_bridge.py +197 -0
- holosoma-0.0.1/holosoma/simulator/shared/terrain.py +581 -0
- holosoma-0.0.1/holosoma/simulator/shared/terrain_types.py +34 -0
- holosoma-0.0.1/holosoma/simulator/shared/tests/test_camera_runtime_cache.py +95 -0
- holosoma-0.0.1/holosoma/simulator/shared/tests/test_get_camera_data.py +95 -0
- holosoma-0.0.1/holosoma/simulator/shared/tests/test_image_transform.py +126 -0
- holosoma-0.0.1/holosoma/simulator/shared/tests/test_optical_frame.py +59 -0
- holosoma-0.0.1/holosoma/simulator/shared/tests/test_ros2_plugins.py +257 -0
- holosoma-0.0.1/holosoma/simulator/shared/tests/test_sensor_manager.py +109 -0
- holosoma-0.0.1/holosoma/simulator/shared/video_recorder.py +568 -0
- holosoma-0.0.1/holosoma/simulator/shared/virtual_gantry.py +583 -0
- holosoma-0.0.1/holosoma/simulator/types.py +84 -0
- holosoma-0.0.1/holosoma/train_agent.py +340 -0
- holosoma-0.0.1/holosoma/utils/__init__.py +0 -0
- holosoma-0.0.1/holosoma/utils/adapters/draw_utils.py +58 -0
- holosoma-0.0.1/holosoma/utils/adapters/isaacgym_draw_adapter.py +128 -0
- holosoma-0.0.1/holosoma/utils/adapters/isaacsim_draw_adapter.py +62 -0
- holosoma-0.0.1/holosoma/utils/adapters/mujoco_draw_adapter.py +295 -0
- holosoma-0.0.1/holosoma/utils/average_meters.py +82 -0
- holosoma-0.0.1/holosoma/utils/clock.py +152 -0
- holosoma-0.0.1/holosoma/utils/common.py +160 -0
- holosoma-0.0.1/holosoma/utils/config_registry.py +285 -0
- holosoma-0.0.1/holosoma/utils/config_utils.py +1 -0
- holosoma-0.0.1/holosoma/utils/draw.py +71 -0
- holosoma-0.0.1/holosoma/utils/eval_utils.py +298 -0
- holosoma-0.0.1/holosoma/utils/experiment_paths.py +130 -0
- holosoma-0.0.1/holosoma/utils/file_cache.py +418 -0
- holosoma-0.0.1/holosoma/utils/helpers.py +121 -0
- holosoma-0.0.1/holosoma/utils/inference_helpers.py +304 -0
- holosoma-0.0.1/holosoma/utils/logging.py +54 -0
- holosoma-0.0.1/holosoma/utils/module_utils.py +8 -0
- holosoma-0.0.1/holosoma/utils/path.py +82 -0
- holosoma-0.0.1/holosoma/utils/pycompat.py +22 -0
- holosoma-0.0.1/holosoma/utils/rate.py +113 -0
- holosoma-0.0.1/holosoma/utils/rotations.py +743 -0
- holosoma-0.0.1/holosoma/utils/safe_torch_import.py +14 -0
- holosoma-0.0.1/holosoma/utils/sampler.py +452 -0
- holosoma-0.0.1/holosoma/utils/sim_utils.py +607 -0
- holosoma-0.0.1/holosoma/utils/simulator_config.py +102 -0
- holosoma-0.0.1/holosoma/utils/terrain_utils.py +607 -0
- holosoma-0.0.1/holosoma/utils/tests/test_distributions.py +272 -0
- holosoma-0.0.1/holosoma/utils/tests/test_eval_utils.py +380 -0
- holosoma-0.0.1/holosoma/utils/tests/test_keyed_distributions.py +335 -0
- holosoma-0.0.1/holosoma/utils/tests/test_rotations.py +173 -0
- holosoma-0.0.1/holosoma/utils/tests/test_torch_utils.py +111 -0
- holosoma-0.0.1/holosoma/utils/tests/test_tyro_utils.py +186 -0
- holosoma-0.0.1/holosoma/utils/torch_jit.py +276 -0
- holosoma-0.0.1/holosoma/utils/torch_utils.py +181 -0
- holosoma-0.0.1/holosoma/utils/tyro_utils.py +136 -0
- holosoma-0.0.1/holosoma/utils/video_utils.py +226 -0
- holosoma-0.0.1/holosoma/utils/wandb.py +113 -0
- holosoma-0.0.1/holosoma/utils/warp_utils.py +169 -0
- holosoma-0.0.1/pyproject.toml +119 -0
holosoma-0.0.1/PKG-INFO
ADDED
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: holosoma
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: Holosoma: core training framework for humanoid robot reinforcement learning (locomotion + whole-body tracking).
|
|
5
|
+
Keywords: humanoid,robotics,reinforcement-learning,locomotion,whole-body-tracking,sim2real
|
|
6
|
+
Author: Amazon FAR Team
|
|
7
|
+
License: Apache-2.0
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
10
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
11
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Requires-Dist: astor
|
|
15
|
+
Requires-Dist: easydict
|
|
16
|
+
Requires-Dist: importlib-resources ; python_full_version < '3.9'
|
|
17
|
+
Requires-Dist: ipdb
|
|
18
|
+
Requires-Dist: joblib
|
|
19
|
+
Requires-Dist: loguru
|
|
20
|
+
Requires-Dist: lxml
|
|
21
|
+
Requires-Dist: lxml-stubs
|
|
22
|
+
Requires-Dist: matplotlib
|
|
23
|
+
Requires-Dist: meshcat
|
|
24
|
+
Requires-Dist: mypy==1.14.1
|
|
25
|
+
Requires-Dist: notebook
|
|
26
|
+
Requires-Dist: numpy-stl
|
|
27
|
+
Requires-Dist: numpy>=1.23.5,<2
|
|
28
|
+
Requires-Dist: omegaconf
|
|
29
|
+
Requires-Dist: onnx
|
|
30
|
+
Requires-Dist: onnxruntime
|
|
31
|
+
Requires-Dist: open3d
|
|
32
|
+
Requires-Dist: opencv-python
|
|
33
|
+
Requires-Dist: plotly
|
|
34
|
+
Requires-Dist: pydantic
|
|
35
|
+
Requires-Dist: pygame
|
|
36
|
+
Requires-Dist: pynput
|
|
37
|
+
Requires-Dist: pytest
|
|
38
|
+
Requires-Dist: rich
|
|
39
|
+
Requires-Dist: scipy
|
|
40
|
+
Requires-Dist: shapely
|
|
41
|
+
Requires-Dist: smart-open[s3]
|
|
42
|
+
Requires-Dist: tensorboard
|
|
43
|
+
Requires-Dist: tensordict
|
|
44
|
+
Requires-Dist: termcolor
|
|
45
|
+
Requires-Dist: tqdm
|
|
46
|
+
Requires-Dist: trimesh
|
|
47
|
+
Requires-Dist: types-pynput
|
|
48
|
+
Requires-Dist: types-python-dateutil
|
|
49
|
+
Requires-Dist: types-requests
|
|
50
|
+
Requires-Dist: types-tqdm
|
|
51
|
+
Requires-Dist: tyro>=1.0.0
|
|
52
|
+
Requires-Dist: wandb==0.22.0
|
|
53
|
+
Requires-Dist: warp-lang>=1.10
|
|
54
|
+
Requires-Dist: yourdfpy>=0.0.58
|
|
55
|
+
Requires-Dist: zmq
|
|
56
|
+
Requires-Dist: far-booster-sdk==0.1.1 ; extra == 'booster'
|
|
57
|
+
Requires-Dist: far-unitree-sdk==0.1.6 ; extra == 'unitree'
|
|
58
|
+
Requires-Python: >=3.8
|
|
59
|
+
Provides-Extra: booster
|
|
60
|
+
Provides-Extra: ros2
|
|
61
|
+
Provides-Extra: unitree
|
|
62
|
+
Description-Content-Type: text/markdown
|
|
63
|
+
|
|
64
|
+
# Holosoma Training Framework
|
|
65
|
+
|
|
66
|
+
Core training framework for humanoid robot reinforcement learning with support for locomotion (velocity tracking) and whole-body tracking tasks.
|
|
67
|
+
|
|
68
|
+
| **Category** | **Supported Options** |
|
|
69
|
+
|-------------|----------------------|
|
|
70
|
+
| **Simulators** | IsaacGym, IsaacSim, MJWarp (training) \| Mujoco (evaluation) |
|
|
71
|
+
| **Algorithms** | PPO, FastSAC |
|
|
72
|
+
| **Robots** | Unitree G1, Booster T1 |
|
|
73
|
+
|
|
74
|
+
## Training
|
|
75
|
+
|
|
76
|
+
All training/eval scripts support `--help` for discovering available flags, e.g. `python src/holosoma/holosoma/train_agent.py --help`.
|
|
77
|
+
|
|
78
|
+
> **Note:** Video recording is enabled by default with `logger:wandb`. On headless servers, you may need to disable video or configure rendering. See [Video Recording](#video-recording) below.
|
|
79
|
+
|
|
80
|
+
### Locomotion (Velocity Tracking)
|
|
81
|
+
|
|
82
|
+
Train robots to track velocity commands.
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# G1 with FastSAC on IsaacGym
|
|
86
|
+
source scripts/source_isaacgym_setup.sh
|
|
87
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
88
|
+
exp:g1-29dof-fast-sac \
|
|
89
|
+
simulator:isaacgym \
|
|
90
|
+
logger:wandb \
|
|
91
|
+
--training.seed 1
|
|
92
|
+
|
|
93
|
+
# T1 with PPO on IsaacSim
|
|
94
|
+
source scripts/source_isaacsim_setup.sh
|
|
95
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
96
|
+
exp:t1-29dof \
|
|
97
|
+
simulator:isaacsim \
|
|
98
|
+
logger:wandb \
|
|
99
|
+
--training.seed 1
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Once checkpoints are saved, you can evaluate policies using [In-Training Evaluation](#in-training-evaluation) (same simulator as training) or cross-simulator evaluation in MuJoCo (see [holosoma_inference](../holosoma_inference/README.md)).
|
|
103
|
+
|
|
104
|
+
### MJWarp Training for Locomotion (Velocity Tracking)
|
|
105
|
+
|
|
106
|
+
Train using the MJWarp simulator (GPU-accelerated MuJoCo). **Note: MJWarp support is in beta.**
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# G1 with FastSAC
|
|
110
|
+
source scripts/source_mujoco_setup.sh
|
|
111
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
112
|
+
exp:g1-29dof-fast-sac \
|
|
113
|
+
simulator:mjwarp \
|
|
114
|
+
logger:wandb
|
|
115
|
+
|
|
116
|
+
# G1 with PPO
|
|
117
|
+
source scripts/source_mujoco_setup.sh
|
|
118
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
119
|
+
exp:g1-29dof \
|
|
120
|
+
simulator:mjwarp \
|
|
121
|
+
logger:wandb
|
|
122
|
+
|
|
123
|
+
# T1 with FastSAC
|
|
124
|
+
source scripts/source_mujoco_setup.sh
|
|
125
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
126
|
+
exp:t1-29dof-fast-sac \
|
|
127
|
+
simulator:mjwarp \
|
|
128
|
+
logger:wandb
|
|
129
|
+
|
|
130
|
+
# T1 with PPO
|
|
131
|
+
source scripts/source_mujoco_setup.sh
|
|
132
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
133
|
+
exp:t1-29dof \
|
|
134
|
+
simulator:mjwarp \
|
|
135
|
+
logger:wandb \
|
|
136
|
+
--terrain.terrain-term.scale-factor=0.5 # required to avoid training instabilities
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
> **Note:**
|
|
141
|
+
> - MJWarp uses `nconmax=96` (maximum contacts per environment) by default. This can be adjusted via `--simulator.config.mujoco-warp.nconmax-per-env=96` if needed.
|
|
142
|
+
> - These examples use `--training.num-envs=4096`, but you may need to adjust this value based on your hardware.
|
|
143
|
+
> - When training T1 with PPO on mixed terrain, use `--terrain.terrain-term.scale-factor=0.5` to avoid training instabilities.
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
### Whole-Body Tracking
|
|
147
|
+
|
|
148
|
+
Train robots to track full-body motion sequences.
|
|
149
|
+
|
|
150
|
+
**Note**: Currently only supported for Unitree G1 / IsaacSim.
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# G1 with FastSAC
|
|
154
|
+
source scripts/source_isaacsim_setup.sh
|
|
155
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
156
|
+
exp:g1-29dof-wbt-fast-sac \
|
|
157
|
+
logger:wandb
|
|
158
|
+
|
|
159
|
+
# G1 with PPO
|
|
160
|
+
source scripts/source_isaacsim_setup.sh
|
|
161
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
162
|
+
exp:g1-29dof-wbt \
|
|
163
|
+
logger:wandb
|
|
164
|
+
|
|
165
|
+
# Custom motion file
|
|
166
|
+
source scripts/source_isaacsim_setup.sh
|
|
167
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
168
|
+
exp:g1-29dof-wbt \
|
|
169
|
+
logger:wandb \
|
|
170
|
+
--command.setup_terms.motion_command.params.motion_config.motion_file="holosoma/data/motions/g1_29dof/whole_body_tracking/<your file>.npz"
|
|
171
|
+
|
|
172
|
+
# Visualize the motion file in isaacsim before training
|
|
173
|
+
source scripts/source_isaacsim_setup.sh
|
|
174
|
+
python src/holosoma/holosoma/replay.py \
|
|
175
|
+
exp:g1-29dof-wbt \
|
|
176
|
+
--training.headless=False \
|
|
177
|
+
--training.num_envs=1
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Once checkpoints are saved, you can evaluate policies using [In-Training Evaluation](#in-training-evaluation) (same simulator as training) or cross-simulator evaluation in MuJoCo (see [holosoma_inference](../holosoma_inference/README.md)).
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Evaluation
|
|
185
|
+
|
|
186
|
+
### In-Training Evaluation
|
|
187
|
+
|
|
188
|
+
For evaluating policies with the exact same configuration used during training (same simulator, environment settings, etc.):
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# Evaluate checkpoint from Wandb
|
|
192
|
+
python src/holosoma/holosoma/eval_agent.py \
|
|
193
|
+
--checkpoint=wandb://<ENTITY>/<PROJECT>/<RUN_ID>/<CHECKPOINT_NAME>
|
|
194
|
+
# e.g., --checkpoint=wandb://username/fastsac-t1-locomotion/abcdefgh/model_0010000.pt
|
|
195
|
+
|
|
196
|
+
# Evaluate local checkpoint
|
|
197
|
+
python src/holosoma/holosoma/eval_agent.py \
|
|
198
|
+
--checkpoint=<CHECKPOINT_PATH>
|
|
199
|
+
# e.g., --checkpoint=/home/username/checkpoints/fastsac-t1-locomotion/model_0010000.pt
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
This evaluation mode:
|
|
203
|
+
- Automatically loads the training configuration from the checkpoint
|
|
204
|
+
- Runs evaluation in the same simulator and environment as training
|
|
205
|
+
- Can export policies to ONNX format (via `--training.export_onnx=True`)
|
|
206
|
+
- For locomotion evaluation, supports interactive velocity commands via keyboard (when simulator window is active):
|
|
207
|
+
- `w`/`a`/`s`/`d`: linear velocity commands
|
|
208
|
+
- `q`/`e`: angular velocity commands
|
|
209
|
+
- `z`: zero velocity command
|
|
210
|
+
|
|
211
|
+
### Cross-Simulator Evaluation (MuJoCo)
|
|
212
|
+
|
|
213
|
+
For testing trained policies in MuJoCo simulation or deploying to real robots, see the [holosoma_inference documentation](../holosoma_inference/README.md). This covers:
|
|
214
|
+
- Sim-to-sim evaluation (IsaacGym/IsaacSim → MuJoCo)
|
|
215
|
+
- Real robot deployment (both locomotion and WBT)
|
|
216
|
+
|
|
217
|
+
**Note**: ONNX policies are typically exported alongside `.pt` checkpoints during training, but can also be generated using the in-training evaluation script above.
|
|
218
|
+
|
|
219
|
+
## Advanced Configuration
|
|
220
|
+
|
|
221
|
+
The training system uses a hierarchical configuration system. The `exp` config serves as the main entry point with default configurations tuned for each algorithm and robot. You can customize training by overriding parameters on the command line.
|
|
222
|
+
|
|
223
|
+
> **Tip**: When composing Tyro configs, pass the `exp:<name>` preset before any other config fragments (e.g., `logger:wandb`). Tyro expects the base experiment to be declared first, and reversing the order can lead to confusing resolution errors.
|
|
224
|
+
|
|
225
|
+
### Logging with Weights & Biases
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
source scripts/source_isaacsim_setup.sh
|
|
229
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
230
|
+
exp:g1-29dof \
|
|
231
|
+
simulator:isaacsim \
|
|
232
|
+
--training.seed 1 \
|
|
233
|
+
--algo.config.use-symmetry=False \
|
|
234
|
+
logger:wandb \
|
|
235
|
+
--logger.project locomotion-g1-29dof-ppo \
|
|
236
|
+
--logger.name ppo-without-symmetry-seed1
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Video Recording
|
|
240
|
+
|
|
241
|
+
Video recording is **enabled by default** when using `logger:wandb`. Videos are recorded periodically and uploaded to Weights & Biases.
|
|
242
|
+
|
|
243
|
+
**Configuration:**
|
|
244
|
+
```bash
|
|
245
|
+
# Disable video recording
|
|
246
|
+
--logger.video.enabled False
|
|
247
|
+
|
|
248
|
+
# Adjust recording interval (episodes)
|
|
249
|
+
--logger.video.interval 10
|
|
250
|
+
|
|
251
|
+
# Change resolution
|
|
252
|
+
--logger.video.width 640 --logger.video.height 360
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Troubleshooting Headless Environments:**
|
|
256
|
+
|
|
257
|
+
If training fails on headless servers with display/rendering errors (e.g., `GLXBadFBConfig`, `eglInitialize failed`, `GLFW initialization failed`):
|
|
258
|
+
|
|
259
|
+
- **IsaacSim:** Disable video with `--logger.video.enabled False`, or force EGL with `DISPLAY= python ...`, or use virtual display with `xvfb-run -a python ...`
|
|
260
|
+
- **MJWarp/MuJoCo:** Set environment variable before training: `export MUJOCO_GL=egl`. See [MuJoCo docs](https://mujoco.readthedocs.io/en/stable/programming/index.html#using-opengl)
|
|
261
|
+
- **IsaacGym:** Usually works in headless environments. If issues occur, disable video with `--logger.video.enabled False`
|
|
262
|
+
|
|
263
|
+
### Terrain
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
# Use plane terrain instead of mixed terrain
|
|
267
|
+
source scripts/source_isaacgym_setup.sh
|
|
268
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
269
|
+
exp:g1-29dof-fast-sac \
|
|
270
|
+
simulator:isaacgym \
|
|
271
|
+
terrain:terrain-locomotion-plane
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Multi-GPU Training
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
source scripts/source_isaacgym_setup.sh
|
|
278
|
+
torchrun --nproc_per_node=4 src/holosoma/holosoma/train_agent.py \
|
|
279
|
+
exp:t1-29dof-fast-sac \
|
|
280
|
+
simulator:isaacgym \
|
|
281
|
+
--training.num-envs 16384 # global/total number of environments
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Custom Reward Weights
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
source scripts/source_isaacgym_setup.sh
|
|
288
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
289
|
+
exp:g1-29dof-fast-sac \
|
|
290
|
+
simulator:isaacgym \
|
|
291
|
+
--reward.terms.tracking-lin-vel.weight=2.5 \
|
|
292
|
+
--reward.terms.feet-phase.params.swing-height=0.12
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### Observation Noise
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
# Disable observation noise
|
|
299
|
+
source scripts/source_isaacgym_setup.sh
|
|
300
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
301
|
+
exp:g1-29dof-fast-sac \
|
|
302
|
+
simulator:isaacgym \
|
|
303
|
+
--observation.groups.actor-obs.enable-noise=False
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### Observation History Length
|
|
307
|
+
|
|
308
|
+
Some policies benefit from stacking multiple timesteps of observations. You can increase the history length used during training with:
|
|
309
|
+
|
|
310
|
+
```bash
|
|
311
|
+
source scripts/source_isaacgym_setup.sh
|
|
312
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
313
|
+
exp:g1-29dof-fast-sac \
|
|
314
|
+
simulator:isaacgym \
|
|
315
|
+
--observation.groups.actor_obs.history-length 4
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
Make sure to pass the same history length when running inference so the exported ONNX policy receives inputs with the correct shape.
|
|
319
|
+
|
|
320
|
+
### Curriculum Learning
|
|
321
|
+
|
|
322
|
+
```bash
|
|
323
|
+
# Disable curriculum
|
|
324
|
+
source scripts/source_isaacgym_setup.sh
|
|
325
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
326
|
+
exp:g1-29dof-fast-sac \
|
|
327
|
+
simulator:isaacgym \
|
|
328
|
+
--curriculum.setup-terms.penalty-curriculum.params.enabled=False
|
|
329
|
+
|
|
330
|
+
# Custom curriculum threshold (for shorter episodes)
|
|
331
|
+
source scripts/source_isaacgym_setup.sh
|
|
332
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
333
|
+
exp:g1-29dof-fast-sac \
|
|
334
|
+
simulator:isaacgym \
|
|
335
|
+
--simulator.config.sim.max-episode-length-s=10.0 \
|
|
336
|
+
--curriculum.setup-terms.penalty-curriculum.params.level-up-threshold=350
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### Domain Randomization
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
source scripts/source_isaacgym_setup.sh
|
|
343
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
344
|
+
exp:g1-29dof-fast-sac \
|
|
345
|
+
simulator:isaacgym \
|
|
346
|
+
--randomization.setup-terms.push-randomizer-state.params.enabled=False \
|
|
347
|
+
--randomization.setup-terms.randomize-base-com-startup.params.enabled=True \
|
|
348
|
+
--randomization.setup-terms.mass-randomizer.params.added-mass-range=[-1.0,3.0]
|
|
349
|
+
```
|
holosoma-0.0.1/README.md
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
# Holosoma Training Framework
|
|
2
|
+
|
|
3
|
+
Core training framework for humanoid robot reinforcement learning with support for locomotion (velocity tracking) and whole-body tracking tasks.
|
|
4
|
+
|
|
5
|
+
| **Category** | **Supported Options** |
|
|
6
|
+
|-------------|----------------------|
|
|
7
|
+
| **Simulators** | IsaacGym, IsaacSim, MJWarp (training) \| Mujoco (evaluation) |
|
|
8
|
+
| **Algorithms** | PPO, FastSAC |
|
|
9
|
+
| **Robots** | Unitree G1, Booster T1 |
|
|
10
|
+
|
|
11
|
+
## Training
|
|
12
|
+
|
|
13
|
+
All training/eval scripts support `--help` for discovering available flags, e.g. `python src/holosoma/holosoma/train_agent.py --help`.
|
|
14
|
+
|
|
15
|
+
> **Note:** Video recording is enabled by default with `logger:wandb`. On headless servers, you may need to disable video or configure rendering. See [Video Recording](#video-recording) below.
|
|
16
|
+
|
|
17
|
+
### Locomotion (Velocity Tracking)
|
|
18
|
+
|
|
19
|
+
Train robots to track velocity commands.
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# G1 with FastSAC on IsaacGym
|
|
23
|
+
source scripts/source_isaacgym_setup.sh
|
|
24
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
25
|
+
exp:g1-29dof-fast-sac \
|
|
26
|
+
simulator:isaacgym \
|
|
27
|
+
logger:wandb \
|
|
28
|
+
--training.seed 1
|
|
29
|
+
|
|
30
|
+
# T1 with PPO on IsaacSim
|
|
31
|
+
source scripts/source_isaacsim_setup.sh
|
|
32
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
33
|
+
exp:t1-29dof \
|
|
34
|
+
simulator:isaacsim \
|
|
35
|
+
logger:wandb \
|
|
36
|
+
--training.seed 1
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Once checkpoints are saved, you can evaluate policies using [In-Training Evaluation](#in-training-evaluation) (same simulator as training) or cross-simulator evaluation in MuJoCo (see [holosoma_inference](../holosoma_inference/README.md)).
|
|
40
|
+
|
|
41
|
+
### MJWarp Training for Locomotion (Velocity Tracking)
|
|
42
|
+
|
|
43
|
+
Train using the MJWarp simulator (GPU-accelerated MuJoCo). **Note: MJWarp support is in beta.**
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# G1 with FastSAC
|
|
47
|
+
source scripts/source_mujoco_setup.sh
|
|
48
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
49
|
+
exp:g1-29dof-fast-sac \
|
|
50
|
+
simulator:mjwarp \
|
|
51
|
+
logger:wandb
|
|
52
|
+
|
|
53
|
+
# G1 with PPO
|
|
54
|
+
source scripts/source_mujoco_setup.sh
|
|
55
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
56
|
+
exp:g1-29dof \
|
|
57
|
+
simulator:mjwarp \
|
|
58
|
+
logger:wandb
|
|
59
|
+
|
|
60
|
+
# T1 with FastSAC
|
|
61
|
+
source scripts/source_mujoco_setup.sh
|
|
62
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
63
|
+
exp:t1-29dof-fast-sac \
|
|
64
|
+
simulator:mjwarp \
|
|
65
|
+
logger:wandb
|
|
66
|
+
|
|
67
|
+
# T1 with PPO
|
|
68
|
+
source scripts/source_mujoco_setup.sh
|
|
69
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
70
|
+
exp:t1-29dof \
|
|
71
|
+
simulator:mjwarp \
|
|
72
|
+
logger:wandb \
|
|
73
|
+
--terrain.terrain-term.scale-factor=0.5 # required to avoid training instabilities
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
> **Note:**
|
|
78
|
+
> - MJWarp uses `nconmax=96` (maximum contacts per environment) by default. This can be adjusted via `--simulator.config.mujoco-warp.nconmax-per-env=96` if needed.
|
|
79
|
+
> - These examples use `--training.num-envs=4096`, but you may need to adjust this value based on your hardware.
|
|
80
|
+
> - When training T1 with PPO on mixed terrain, use `--terrain.terrain-term.scale-factor=0.5` to avoid training instabilities.
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
### Whole-Body Tracking
|
|
84
|
+
|
|
85
|
+
Train robots to track full-body motion sequences.
|
|
86
|
+
|
|
87
|
+
**Note**: Currently only supported for Unitree G1 / IsaacSim.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# G1 with FastSAC
|
|
91
|
+
source scripts/source_isaacsim_setup.sh
|
|
92
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
93
|
+
exp:g1-29dof-wbt-fast-sac \
|
|
94
|
+
logger:wandb
|
|
95
|
+
|
|
96
|
+
# G1 with PPO
|
|
97
|
+
source scripts/source_isaacsim_setup.sh
|
|
98
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
99
|
+
exp:g1-29dof-wbt \
|
|
100
|
+
logger:wandb
|
|
101
|
+
|
|
102
|
+
# Custom motion file
|
|
103
|
+
source scripts/source_isaacsim_setup.sh
|
|
104
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
105
|
+
exp:g1-29dof-wbt \
|
|
106
|
+
logger:wandb \
|
|
107
|
+
--command.setup_terms.motion_command.params.motion_config.motion_file="holosoma/data/motions/g1_29dof/whole_body_tracking/<your file>.npz"
|
|
108
|
+
|
|
109
|
+
# Visualize the motion file in isaacsim before training
|
|
110
|
+
source scripts/source_isaacsim_setup.sh
|
|
111
|
+
python src/holosoma/holosoma/replay.py \
|
|
112
|
+
exp:g1-29dof-wbt \
|
|
113
|
+
--training.headless=False \
|
|
114
|
+
--training.num_envs=1
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Once checkpoints are saved, you can evaluate policies using [In-Training Evaluation](#in-training-evaluation) (same simulator as training) or cross-simulator evaluation in MuJoCo (see [holosoma_inference](../holosoma_inference/README.md)).
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Evaluation
|
|
122
|
+
|
|
123
|
+
### In-Training Evaluation
|
|
124
|
+
|
|
125
|
+
For evaluating policies with the exact same configuration used during training (same simulator, environment settings, etc.):
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# Evaluate checkpoint from Wandb
|
|
129
|
+
python src/holosoma/holosoma/eval_agent.py \
|
|
130
|
+
--checkpoint=wandb://<ENTITY>/<PROJECT>/<RUN_ID>/<CHECKPOINT_NAME>
|
|
131
|
+
# e.g., --checkpoint=wandb://username/fastsac-t1-locomotion/abcdefgh/model_0010000.pt
|
|
132
|
+
|
|
133
|
+
# Evaluate local checkpoint
|
|
134
|
+
python src/holosoma/holosoma/eval_agent.py \
|
|
135
|
+
--checkpoint=<CHECKPOINT_PATH>
|
|
136
|
+
# e.g., --checkpoint=/home/username/checkpoints/fastsac-t1-locomotion/model_0010000.pt
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
This evaluation mode:
|
|
140
|
+
- Automatically loads the training configuration from the checkpoint
|
|
141
|
+
- Runs evaluation in the same simulator and environment as training
|
|
142
|
+
- Can export policies to ONNX format (via `--training.export_onnx=True`)
|
|
143
|
+
- For locomotion evaluation, supports interactive velocity commands via keyboard (when simulator window is active):
|
|
144
|
+
- `w`/`a`/`s`/`d`: linear velocity commands
|
|
145
|
+
- `q`/`e`: angular velocity commands
|
|
146
|
+
- `z`: zero velocity command
|
|
147
|
+
|
|
148
|
+
### Cross-Simulator Evaluation (MuJoCo)
|
|
149
|
+
|
|
150
|
+
For testing trained policies in MuJoCo simulation or deploying to real robots, see the [holosoma_inference documentation](../holosoma_inference/README.md). This covers:
|
|
151
|
+
- Sim-to-sim evaluation (IsaacGym/IsaacSim → MuJoCo)
|
|
152
|
+
- Real robot deployment (both locomotion and WBT)
|
|
153
|
+
|
|
154
|
+
**Note**: ONNX policies are typically exported alongside `.pt` checkpoints during training, but can also be generated using the in-training evaluation script above.
|
|
155
|
+
|
|
156
|
+
## Advanced Configuration
|
|
157
|
+
|
|
158
|
+
The training system uses a hierarchical configuration system. The `exp` config serves as the main entry point with default configurations tuned for each algorithm and robot. You can customize training by overriding parameters on the command line.
|
|
159
|
+
|
|
160
|
+
> **Tip**: When composing Tyro configs, pass the `exp:<name>` preset before any other config fragments (e.g., `logger:wandb`). Tyro expects the base experiment to be declared first, and reversing the order can lead to confusing resolution errors.
|
|
161
|
+
|
|
162
|
+
### Logging with Weights & Biases
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
source scripts/source_isaacsim_setup.sh
|
|
166
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
167
|
+
exp:g1-29dof \
|
|
168
|
+
simulator:isaacsim \
|
|
169
|
+
--training.seed 1 \
|
|
170
|
+
--algo.config.use-symmetry=False \
|
|
171
|
+
logger:wandb \
|
|
172
|
+
--logger.project locomotion-g1-29dof-ppo \
|
|
173
|
+
--logger.name ppo-without-symmetry-seed1
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Video Recording
|
|
177
|
+
|
|
178
|
+
Video recording is **enabled by default** when using `logger:wandb`. Videos are recorded periodically and uploaded to Weights & Biases.
|
|
179
|
+
|
|
180
|
+
**Configuration:**
|
|
181
|
+
```bash
|
|
182
|
+
# Disable video recording
|
|
183
|
+
--logger.video.enabled False
|
|
184
|
+
|
|
185
|
+
# Adjust recording interval (episodes)
|
|
186
|
+
--logger.video.interval 10
|
|
187
|
+
|
|
188
|
+
# Change resolution
|
|
189
|
+
--logger.video.width 640 --logger.video.height 360
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**Troubleshooting Headless Environments:**
|
|
193
|
+
|
|
194
|
+
If training fails on headless servers with display/rendering errors (e.g., `GLXBadFBConfig`, `eglInitialize failed`, `GLFW initialization failed`):
|
|
195
|
+
|
|
196
|
+
- **IsaacSim:** Disable video with `--logger.video.enabled False`, or force EGL with `DISPLAY= python ...`, or use virtual display with `xvfb-run -a python ...`
|
|
197
|
+
- **MJWarp/MuJoCo:** Set environment variable before training: `export MUJOCO_GL=egl`. See [MuJoCo docs](https://mujoco.readthedocs.io/en/stable/programming/index.html#using-opengl)
|
|
198
|
+
- **IsaacGym:** Usually works in headless environments. If issues occur, disable video with `--logger.video.enabled False`
|
|
199
|
+
|
|
200
|
+
### Terrain
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# Use plane terrain instead of mixed terrain
|
|
204
|
+
source scripts/source_isaacgym_setup.sh
|
|
205
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
206
|
+
exp:g1-29dof-fast-sac \
|
|
207
|
+
simulator:isaacgym \
|
|
208
|
+
terrain:terrain-locomotion-plane
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Multi-GPU Training
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
source scripts/source_isaacgym_setup.sh
|
|
215
|
+
torchrun --nproc_per_node=4 src/holosoma/holosoma/train_agent.py \
|
|
216
|
+
exp:t1-29dof-fast-sac \
|
|
217
|
+
simulator:isaacgym \
|
|
218
|
+
--training.num-envs 16384 # global/total number of environments
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Custom Reward Weights
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
source scripts/source_isaacgym_setup.sh
|
|
225
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
226
|
+
exp:g1-29dof-fast-sac \
|
|
227
|
+
simulator:isaacgym \
|
|
228
|
+
--reward.terms.tracking-lin-vel.weight=2.5 \
|
|
229
|
+
--reward.terms.feet-phase.params.swing-height=0.12
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Observation Noise
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# Disable observation noise
|
|
236
|
+
source scripts/source_isaacgym_setup.sh
|
|
237
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
238
|
+
exp:g1-29dof-fast-sac \
|
|
239
|
+
simulator:isaacgym \
|
|
240
|
+
--observation.groups.actor-obs.enable-noise=False
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Observation History Length
|
|
244
|
+
|
|
245
|
+
Some policies benefit from stacking multiple timesteps of observations. You can increase the history length used during training with:
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
source scripts/source_isaacgym_setup.sh
|
|
249
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
250
|
+
exp:g1-29dof-fast-sac \
|
|
251
|
+
simulator:isaacgym \
|
|
252
|
+
--observation.groups.actor_obs.history-length 4
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Make sure to pass the same history length when running inference so the exported ONNX policy receives inputs with the correct shape.
|
|
256
|
+
|
|
257
|
+
### Curriculum Learning
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
# Disable curriculum
|
|
261
|
+
source scripts/source_isaacgym_setup.sh
|
|
262
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
263
|
+
exp:g1-29dof-fast-sac \
|
|
264
|
+
simulator:isaacgym \
|
|
265
|
+
--curriculum.setup-terms.penalty-curriculum.params.enabled=False
|
|
266
|
+
|
|
267
|
+
# Custom curriculum threshold (for shorter episodes)
|
|
268
|
+
source scripts/source_isaacgym_setup.sh
|
|
269
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
270
|
+
exp:g1-29dof-fast-sac \
|
|
271
|
+
simulator:isaacgym \
|
|
272
|
+
--simulator.config.sim.max-episode-length-s=10.0 \
|
|
273
|
+
--curriculum.setup-terms.penalty-curriculum.params.level-up-threshold=350
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### Domain Randomization
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
source scripts/source_isaacgym_setup.sh
|
|
280
|
+
python src/holosoma/holosoma/train_agent.py \
|
|
281
|
+
exp:g1-29dof-fast-sac \
|
|
282
|
+
simulator:isaacgym \
|
|
283
|
+
--randomization.setup-terms.push-randomizer-state.params.enabled=False \
|
|
284
|
+
--randomization.setup-terms.randomize-base-com-startup.params.enabled=True \
|
|
285
|
+
--randomization.setup-terms.mass-randomizer.params.added-mass-range=[-1.0,3.0]
|
|
286
|
+
```
|
|
File without changes
|