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.
Files changed (475) hide show
  1. holosoma-0.0.1/PKG-INFO +349 -0
  2. holosoma-0.0.1/README.md +286 -0
  3. holosoma-0.0.1/holosoma/__init__.py +0 -0
  4. holosoma-0.0.1/holosoma/agents/base_algo/base_algo.py +155 -0
  5. holosoma-0.0.1/holosoma/agents/callbacks/base_callback.py +21 -0
  6. holosoma-0.0.1/holosoma/agents/callbacks/payload.py +172 -0
  7. holosoma-0.0.1/holosoma/agents/callbacks/push.py +263 -0
  8. holosoma-0.0.1/holosoma/agents/callbacks/recording.py +192 -0
  9. holosoma-0.0.1/holosoma/agents/fast_sac/fast_sac.py +474 -0
  10. holosoma-0.0.1/holosoma/agents/fast_sac/fast_sac_agent.py +1056 -0
  11. holosoma-0.0.1/holosoma/agents/fast_sac/fast_sac_utils.py +385 -0
  12. holosoma-0.0.1/holosoma/agents/modules/augmentation_utils.py +547 -0
  13. holosoma-0.0.1/holosoma/agents/modules/data_utils.py +134 -0
  14. holosoma-0.0.1/holosoma/agents/modules/logging_utils.py +446 -0
  15. holosoma-0.0.1/holosoma/agents/modules/module_utils.py +52 -0
  16. holosoma-0.0.1/holosoma/agents/modules/modules.py +407 -0
  17. holosoma-0.0.1/holosoma/agents/modules/ppo_modules.py +186 -0
  18. holosoma-0.0.1/holosoma/agents/modules/tests/test_augmentation_utils.py +366 -0
  19. holosoma-0.0.1/holosoma/agents/modules/tests/test_logging_utils.py +187 -0
  20. holosoma-0.0.1/holosoma/agents/modules/tests/test_module_dimensions.py +263 -0
  21. holosoma-0.0.1/holosoma/agents/ppo/ppo.py +918 -0
  22. holosoma-0.0.1/holosoma/bridge/__init__.py +45 -0
  23. holosoma-0.0.1/holosoma/bridge/base/__init__.py +9 -0
  24. holosoma-0.0.1/holosoma/bridge/base/basic_sdk2py_bridge.py +368 -0
  25. holosoma-0.0.1/holosoma/bridge/booster/__init__.py +7 -0
  26. holosoma-0.0.1/holosoma/bridge/booster/booster_sdk2py_bridge.py +124 -0
  27. holosoma-0.0.1/holosoma/bridge/ros2/__init__.py +5 -0
  28. holosoma-0.0.1/holosoma/bridge/ros2/ros2_bridge.py +135 -0
  29. holosoma-0.0.1/holosoma/bridge/unitree/__init__.py +13 -0
  30. holosoma-0.0.1/holosoma/bridge/unitree/tests/__init__.py +0 -0
  31. holosoma-0.0.1/holosoma/bridge/unitree/tests/_fake_unitree_interface.py +146 -0
  32. holosoma-0.0.1/holosoma/bridge/unitree/tests/test_unitree_mp_bridge.py +207 -0
  33. holosoma-0.0.1/holosoma/bridge/unitree/unitree_sdk2py_bridge.py +129 -0
  34. holosoma-0.0.1/holosoma/bridge/unitree/unitree_sdk2py_bridge_mp.py +320 -0
  35. holosoma-0.0.1/holosoma/config_types/action.py +33 -0
  36. holosoma-0.0.1/holosoma/config_types/algo.py +345 -0
  37. holosoma-0.0.1/holosoma/config_types/command.py +131 -0
  38. holosoma-0.0.1/holosoma/config_types/curriculum.py +36 -0
  39. holosoma-0.0.1/holosoma/config_types/distribution.py +193 -0
  40. holosoma-0.0.1/holosoma/config_types/env.py +80 -0
  41. holosoma-0.0.1/holosoma/config_types/eval_callback.py +129 -0
  42. holosoma-0.0.1/holosoma/config_types/experiment.py +227 -0
  43. holosoma-0.0.1/holosoma/config_types/frequency.py +97 -0
  44. holosoma-0.0.1/holosoma/config_types/full_sim.py +38 -0
  45. holosoma-0.0.1/holosoma/config_types/logger.py +89 -0
  46. holosoma-0.0.1/holosoma/config_types/observation.py +57 -0
  47. holosoma-0.0.1/holosoma/config_types/plugin.py +385 -0
  48. holosoma-0.0.1/holosoma/config_types/randomization.py +147 -0
  49. holosoma-0.0.1/holosoma/config_types/reward.py +37 -0
  50. holosoma-0.0.1/holosoma/config_types/robot.py +169 -0
  51. holosoma-0.0.1/holosoma/config_types/run_sim.py +105 -0
  52. holosoma-0.0.1/holosoma/config_types/scene.py +425 -0
  53. holosoma-0.0.1/holosoma/config_types/sensor.py +292 -0
  54. holosoma-0.0.1/holosoma/config_types/simulator.py +343 -0
  55. holosoma-0.0.1/holosoma/config_types/termination.py +30 -0
  56. holosoma-0.0.1/holosoma/config_types/terrain.py +216 -0
  57. holosoma-0.0.1/holosoma/config_types/tests/test_frequency.py +143 -0
  58. holosoma-0.0.1/holosoma/config_types/tests/test_link_physics.py +215 -0
  59. holosoma-0.0.1/holosoma/config_types/tests/test_plugin_egress_config.py +79 -0
  60. holosoma-0.0.1/holosoma/config_types/tests/test_sensor_config.py +63 -0
  61. holosoma-0.0.1/holosoma/config_types/tests/test_tyro_cli.py +8 -0
  62. holosoma-0.0.1/holosoma/config_types/video.py +156 -0
  63. holosoma-0.0.1/holosoma/config_types/viewer.py +53 -0
  64. holosoma-0.0.1/holosoma/config_values/__init__.py +1 -0
  65. holosoma-0.0.1/holosoma/config_values/action.py +18 -0
  66. holosoma-0.0.1/holosoma/config_values/algo.py +117 -0
  67. holosoma-0.0.1/holosoma/config_values/command.py +24 -0
  68. holosoma-0.0.1/holosoma/config_values/curriculum.py +22 -0
  69. holosoma-0.0.1/holosoma/config_values/experiment.py +43 -0
  70. holosoma-0.0.1/holosoma/config_values/loco/__init__.py +7 -0
  71. holosoma-0.0.1/holosoma/config_values/loco/g1/__init__.py +7 -0
  72. holosoma-0.0.1/holosoma/config_values/loco/g1/action.py +16 -0
  73. holosoma-0.0.1/holosoma/config_values/loco/g1/command.py +40 -0
  74. holosoma-0.0.1/holosoma/config_values/loco/g1/curriculum.py +59 -0
  75. holosoma-0.0.1/holosoma/config_values/loco/g1/experiment.py +58 -0
  76. holosoma-0.0.1/holosoma/config_values/loco/g1/observation.py +119 -0
  77. holosoma-0.0.1/holosoma/config_values/loco/g1/randomization.py +106 -0
  78. holosoma-0.0.1/holosoma/config_values/loco/g1/reward.py +193 -0
  79. holosoma-0.0.1/holosoma/config_values/loco/g1/termination.py +21 -0
  80. holosoma-0.0.1/holosoma/config_values/loco/t1/__init__.py +7 -0
  81. holosoma-0.0.1/holosoma/config_values/loco/t1/action.py +16 -0
  82. holosoma-0.0.1/holosoma/config_values/loco/t1/command.py +40 -0
  83. holosoma-0.0.1/holosoma/config_values/loco/t1/curriculum.py +53 -0
  84. holosoma-0.0.1/holosoma/config_values/loco/t1/experiment.py +60 -0
  85. holosoma-0.0.1/holosoma/config_values/loco/t1/observation.py +119 -0
  86. holosoma-0.0.1/holosoma/config_values/loco/t1/randomization.py +108 -0
  87. holosoma-0.0.1/holosoma/config_values/loco/t1/reward.py +193 -0
  88. holosoma-0.0.1/holosoma/config_values/loco/t1/termination.py +21 -0
  89. holosoma-0.0.1/holosoma/config_values/logger.py +14 -0
  90. holosoma-0.0.1/holosoma/config_values/observation.py +21 -0
  91. holosoma-0.0.1/holosoma/config_values/plugin.py +150 -0
  92. holosoma-0.0.1/holosoma/config_values/randomization.py +21 -0
  93. holosoma-0.0.1/holosoma/config_values/reward.py +28 -0
  94. holosoma-0.0.1/holosoma/config_values/robot.py +1128 -0
  95. holosoma-0.0.1/holosoma/config_values/run_sim.py +95 -0
  96. holosoma-0.0.1/holosoma/config_values/scene.py +70 -0
  97. holosoma-0.0.1/holosoma/config_values/sensor.py +57 -0
  98. holosoma-0.0.1/holosoma/config_values/simulator.py +117 -0
  99. holosoma-0.0.1/holosoma/config_values/termination.py +20 -0
  100. holosoma-0.0.1/holosoma/config_values/terrain.py +78 -0
  101. holosoma-0.0.1/holosoma/config_values/tests/test_plugin_registry.py +150 -0
  102. holosoma-0.0.1/holosoma/config_values/tests/test_registry.py +389 -0
  103. holosoma-0.0.1/holosoma/config_values/wbt/__init__.py +1 -0
  104. holosoma-0.0.1/holosoma/config_values/wbt/g1/__init__.py +7 -0
  105. holosoma-0.0.1/holosoma/config_values/wbt/g1/command.py +82 -0
  106. holosoma-0.0.1/holosoma/config_values/wbt/g1/curriculum.py +19 -0
  107. holosoma-0.0.1/holosoma/config_values/wbt/g1/experiment.py +205 -0
  108. holosoma-0.0.1/holosoma/config_values/wbt/g1/observation.py +141 -0
  109. holosoma-0.0.1/holosoma/config_values/wbt/g1/randomization.py +154 -0
  110. holosoma-0.0.1/holosoma/config_values/wbt/g1/reward.py +113 -0
  111. holosoma-0.0.1/holosoma/config_values/wbt/g1/scene.py +16 -0
  112. holosoma-0.0.1/holosoma/config_values/wbt/g1/sensor.py +110 -0
  113. holosoma-0.0.1/holosoma/config_values/wbt/g1/termination.py +50 -0
  114. holosoma-0.0.1/holosoma/data/__init__.py +1 -0
  115. holosoma-0.0.1/holosoma/data/motions/g1_29dof/whole_body_tracking/motion_crawl_slope.npz +0 -0
  116. holosoma-0.0.1/holosoma/data/motions/g1_29dof/whole_body_tracking/sub3_largebox_003_mj.npz +0 -0
  117. holosoma-0.0.1/holosoma/data/motions/g1_29dof/whole_body_tracking/sub3_largebox_003_mj_w_obj.npz +0 -0
  118. holosoma-0.0.1/holosoma/data/motions/g1_29dof/whole_body_tracking/terrain_slope.obj +61 -0
  119. holosoma-0.0.1/holosoma/data/robots/g1/g1_29dof.urdf +1133 -0
  120. holosoma-0.0.1/holosoma/data/robots/g1/g1_29dof.xml +486 -0
  121. holosoma-0.0.1/holosoma/data/robots/g1/main_mesh_collision_halfspherehand.urdf +1128 -0
  122. holosoma-0.0.1/holosoma/data/robots/g1/meshes/half_sphere.obj +114743 -0
  123. holosoma-0.0.1/holosoma/data/robots/g1/meshes/head_link.STL +0 -0
  124. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_G1_EE_pad.STL +0 -0
  125. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_ankle_pitch_link.STL +0 -0
  126. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_ankle_roll_link.STL +0 -0
  127. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_elbow_link.STL +0 -0
  128. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_elbow_link_merge.STL +0 -0
  129. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_index_0_link.STL +0 -0
  130. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_index_1_link.STL +0 -0
  131. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_middle_0_link.STL +0 -0
  132. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_middle_1_link.STL +0 -0
  133. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_palm_link.STL +0 -0
  134. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_thumb_0_link.STL +0 -0
  135. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_thumb_1_link.STL +0 -0
  136. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hand_thumb_2_link.STL +0 -0
  137. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hip_pitch_link.STL +0 -0
  138. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hip_roll_link.STL +0 -0
  139. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_hip_yaw_link.STL +0 -0
  140. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_knee_link.STL +0 -0
  141. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_rubber_hand.STL +0 -0
  142. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_shoulder_pitch_link.STL +0 -0
  143. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_shoulder_roll_link.STL +0 -0
  144. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_shoulder_yaw_link.STL +0 -0
  145. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_wrist_pitch_link.STL +0 -0
  146. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_wrist_roll_link.STL +0 -0
  147. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_wrist_roll_rubber_hand.STL +0 -0
  148. holosoma-0.0.1/holosoma/data/robots/g1/meshes/left_wrist_yaw_link.STL +0 -0
  149. holosoma-0.0.1/holosoma/data/robots/g1/meshes/logo_link.STL +0 -0
  150. holosoma-0.0.1/holosoma/data/robots/g1/meshes/pelvis.STL +0 -0
  151. holosoma-0.0.1/holosoma/data/robots/g1/meshes/pelvis_contour_link.STL +0 -0
  152. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_G1_EE_pad.STL +0 -0
  153. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_ankle_pitch_link.STL +0 -0
  154. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_ankle_roll_link.STL +0 -0
  155. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_elbow_link.STL +0 -0
  156. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_elbow_link_merge.STL +0 -0
  157. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_index_0_link.STL +0 -0
  158. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_index_1_link.STL +0 -0
  159. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_middle_0_link.STL +0 -0
  160. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_middle_1_link.STL +0 -0
  161. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_palm_link.STL +0 -0
  162. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_thumb_0_link.STL +0 -0
  163. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_thumb_1_link.STL +0 -0
  164. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hand_thumb_2_link.STL +0 -0
  165. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hip_pitch_link.STL +0 -0
  166. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hip_roll_link.STL +0 -0
  167. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_hip_yaw_link.STL +0 -0
  168. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_knee_link.STL +0 -0
  169. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_rubber_hand.STL +0 -0
  170. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_shoulder_pitch_link.STL +0 -0
  171. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_shoulder_roll_link.STL +0 -0
  172. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_shoulder_yaw_link.STL +0 -0
  173. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_wrist_pitch_link.STL +0 -0
  174. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_wrist_roll_link.STL +0 -0
  175. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_wrist_roll_rubber_hand.STL +0 -0
  176. holosoma-0.0.1/holosoma/data/robots/g1/meshes/right_wrist_yaw_link.STL +0 -0
  177. holosoma-0.0.1/holosoma/data/robots/g1/meshes/torso_constraint_L_link.STL +0 -0
  178. holosoma-0.0.1/holosoma/data/robots/g1/meshes/torso_constraint_L_rod_link.STL +0 -0
  179. holosoma-0.0.1/holosoma/data/robots/g1/meshes/torso_constraint_R_link.STL +0 -0
  180. holosoma-0.0.1/holosoma/data/robots/g1/meshes/torso_constraint_R_rod_link.STL +0 -0
  181. holosoma-0.0.1/holosoma/data/robots/g1/meshes/torso_link.STL +0 -0
  182. holosoma-0.0.1/holosoma/data/robots/g1/meshes/torso_link_23dof_rev_1_0.STL +0 -0
  183. holosoma-0.0.1/holosoma/data/robots/g1/meshes/torso_link_rev_1_0.STL +0 -0
  184. holosoma-0.0.1/holosoma/data/robots/g1/meshes/tote_no_bar.STL +0 -0
  185. holosoma-0.0.1/holosoma/data/robots/g1/meshes/waist_constraint_L.STL +0 -0
  186. holosoma-0.0.1/holosoma/data/robots/g1/meshes/waist_constraint_R.STL +0 -0
  187. holosoma-0.0.1/holosoma/data/robots/g1/meshes/waist_roll_link.STL +0 -0
  188. holosoma-0.0.1/holosoma/data/robots/g1/meshes/waist_roll_link_rev_1_0.STL +0 -0
  189. holosoma-0.0.1/holosoma/data/robots/g1/meshes/waist_support_link.STL +0 -0
  190. holosoma-0.0.1/holosoma/data/robots/g1/meshes/waist_yaw_link.STL +0 -0
  191. holosoma-0.0.1/holosoma/data/robots/g1/meshes/waist_yaw_link_rev_1_0.STL +0 -0
  192. holosoma-0.0.1/holosoma/data/robots/g1/scenes/scene_g1_29dof_wbt_plane.xml +26 -0
  193. holosoma-0.0.1/holosoma/data/robots/onelink_box/onelink_box.urdf +45 -0
  194. holosoma-0.0.1/holosoma/data/robots/onelink_box/onelink_box.xml +10 -0
  195. holosoma-0.0.1/holosoma/data/robots/t1/meshes/AL1.STL +0 -0
  196. holosoma-0.0.1/holosoma/data/robots/t1/meshes/AL2.STL +0 -0
  197. holosoma-0.0.1/holosoma/data/robots/t1/meshes/AL3.STL +0 -0
  198. holosoma-0.0.1/holosoma/data/robots/t1/meshes/AL4.STL +0 -0
  199. holosoma-0.0.1/holosoma/data/robots/t1/meshes/AL5.STL +0 -0
  200. holosoma-0.0.1/holosoma/data/robots/t1/meshes/AL6.STL +0 -0
  201. holosoma-0.0.1/holosoma/data/robots/t1/meshes/AL7.STL +0 -0
  202. holosoma-0.0.1/holosoma/data/robots/t1/meshes/AR1.STL +0 -0
  203. holosoma-0.0.1/holosoma/data/robots/t1/meshes/AR2.STL +0 -0
  204. holosoma-0.0.1/holosoma/data/robots/t1/meshes/AR3.STL +0 -0
  205. holosoma-0.0.1/holosoma/data/robots/t1/meshes/AR4.STL +0 -0
  206. holosoma-0.0.1/holosoma/data/robots/t1/meshes/AR5.STL +0 -0
  207. holosoma-0.0.1/holosoma/data/robots/t1/meshes/AR6.STL +0 -0
  208. holosoma-0.0.1/holosoma/data/robots/t1/meshes/AR7.STL +0 -0
  209. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Ankle_Cross_Left.STL +0 -0
  210. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Ankle_Cross_Right.STL +0 -0
  211. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Crank_Down_Left.STL +0 -0
  212. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Crank_Down_Right.STL +0 -0
  213. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Crank_Up_Left.STL +0 -0
  214. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Crank_Up_Right.STL +0 -0
  215. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Down_Left_XX_Ball.STL +0 -0
  216. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Down_Left_X_Ball.STL +0 -0
  217. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Down_Left_Y_Ball.STL +0 -0
  218. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Down_Right_XX_Ball.STL +0 -0
  219. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Down_Right_X_Ball.STL +0 -0
  220. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Down_Right_Y_Ball.STL +0 -0
  221. holosoma-0.0.1/holosoma/data/robots/t1/meshes/H1.STL +0 -0
  222. holosoma-0.0.1/holosoma/data/robots/t1/meshes/H2.STL +0 -0
  223. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Hip_Pitch_Left.STL +0 -0
  224. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Hip_Pitch_Right.STL +0 -0
  225. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Hip_Roll_Left.STL +0 -0
  226. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Hip_Roll_Right.STL +0 -0
  227. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Hip_Yaw_Left.STL +0 -0
  228. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Hip_Yaw_Right.STL +0 -0
  229. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Link_Long_Left.STL +0 -0
  230. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Link_Long_Right.STL +0 -0
  231. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Link_Short_Left.STL +0 -0
  232. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Link_Short_Right.STL +0 -0
  233. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Shank_Left.STL +0 -0
  234. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Shank_Right.STL +0 -0
  235. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Trunk.STL +0 -0
  236. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Up_Left_XX_Ball.STL +0 -0
  237. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Up_Left_X_Ball.STL +0 -0
  238. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Up_Left_Y_Ball.STL +0 -0
  239. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Up_Right_XX_Ball.STL +0 -0
  240. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Up_Right_X_Ball.STL +0 -0
  241. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Up_Right_Y_Ball.STL +0 -0
  242. holosoma-0.0.1/holosoma/data/robots/t1/meshes/Waist.STL +0 -0
  243. holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_Link1.STL +0 -0
  244. holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_Link11.STL +0 -0
  245. holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_Link2.STL +0 -0
  246. holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_Link22.STL +0 -0
  247. holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_base_link.STL +0 -0
  248. holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_foot_link.STL +0 -0
  249. holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_hand_link.STL +0 -0
  250. holosoma-0.0.1/holosoma/data/robots/t1/meshes/left_rubber_hand.STL +0 -0
  251. holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_Link1.STL +0 -0
  252. holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_Link11.STL +0 -0
  253. holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_Link2.STL +0 -0
  254. holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_Link22.STL +0 -0
  255. holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_base_link.STL +0 -0
  256. holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_foot_link.STL +0 -0
  257. holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_hand_link.STL +0 -0
  258. holosoma-0.0.1/holosoma/data/robots/t1/meshes/right_rubber_hand.STL +0 -0
  259. holosoma-0.0.1/holosoma/data/robots/t1/t1_29dof.urdf +1629 -0
  260. holosoma-0.0.1/holosoma/data/robots/t1/t1_29dof.xml +300 -0
  261. holosoma-0.0.1/holosoma/data/scene_objects/boxes/large_box.urdf +32 -0
  262. holosoma-0.0.1/holosoma/data/scene_objects/boxes/largebox.obj +54685 -0
  263. holosoma-0.0.1/holosoma/data/scene_objects/boxes/small_box.urdf +19 -0
  264. holosoma-0.0.1/holosoma/data/scene_objects/boxes/small_box.usda +24 -0
  265. holosoma-0.0.1/holosoma/data/scene_objects/boxes/small_box.xml +9 -0
  266. holosoma-0.0.1/holosoma/data/scene_objects/multibody/multibody.urdf +47 -0
  267. holosoma-0.0.1/holosoma/data/scene_objects/multibody/multibody.usda +48 -0
  268. holosoma-0.0.1/holosoma/data/scene_objects/multibody/multibody.xml +15 -0
  269. holosoma-0.0.1/holosoma/data/scene_objects/multibody/unauthored_table.usda +45 -0
  270. holosoma-0.0.1/holosoma/data/scene_objects/panels/red_panel.urdf +23 -0
  271. holosoma-0.0.1/holosoma/data/scene_objects/panels/red_panel.usda +27 -0
  272. holosoma-0.0.1/holosoma/data/scene_objects/panels/red_panel.xml +12 -0
  273. holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/LICENSE +1 -0
  274. holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/RubberDuck.mtl +7 -0
  275. holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/RubberDuck.obj +1773 -0
  276. holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/RubberDuck_BaseColor.png +0 -0
  277. holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/huge_rubber_duck.urdf +33 -0
  278. holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/huge_rubber_duck.xml +17 -0
  279. holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/large_rubber_duck.urdf +33 -0
  280. holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/large_rubber_duck.xml +16 -0
  281. holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/rubber_duck.urdf +32 -0
  282. holosoma-0.0.1/holosoma/data/scene_objects/rubber_duck/rubber_duck.xml +19 -0
  283. holosoma-0.0.1/holosoma/envs/__init__.py +1 -0
  284. holosoma-0.0.1/holosoma/envs/base_task/__init__.py +5 -0
  285. holosoma-0.0.1/holosoma/envs/base_task/base_task.py +616 -0
  286. holosoma-0.0.1/holosoma/envs/locomotion/__init__.py +9 -0
  287. holosoma-0.0.1/holosoma/envs/locomotion/locomotion_manager.py +336 -0
  288. holosoma-0.0.1/holosoma/envs/tests/test_e2e.py +49 -0
  289. holosoma-0.0.1/holosoma/envs/tests/test_obs_dict_group.py +99 -0
  290. holosoma-0.0.1/holosoma/envs/tests/test_push_randomization.py +178 -0
  291. holosoma-0.0.1/holosoma/envs/wbt/wbt_manager.py +245 -0
  292. holosoma-0.0.1/holosoma/eval_agent.py +110 -0
  293. holosoma-0.0.1/holosoma/examples/__init__.py +1 -0
  294. holosoma-0.0.1/holosoma/examples/object_managers_demo.py +380 -0
  295. holosoma-0.0.1/holosoma/managers/__init__.py +10 -0
  296. holosoma-0.0.1/holosoma/managers/action/__init__.py +10 -0
  297. holosoma-0.0.1/holosoma/managers/action/base.py +145 -0
  298. holosoma-0.0.1/holosoma/managers/action/manager.py +242 -0
  299. holosoma-0.0.1/holosoma/managers/action/terms/__init__.py +9 -0
  300. holosoma-0.0.1/holosoma/managers/action/terms/joint_control.py +337 -0
  301. holosoma-0.0.1/holosoma/managers/command/__init__.py +6 -0
  302. holosoma-0.0.1/holosoma/managers/command/base.py +41 -0
  303. holosoma-0.0.1/holosoma/managers/command/manager.py +227 -0
  304. holosoma-0.0.1/holosoma/managers/command/terms/__init__.py +5 -0
  305. holosoma-0.0.1/holosoma/managers/command/terms/locomotion.py +224 -0
  306. holosoma-0.0.1/holosoma/managers/command/terms/wbt.py +1495 -0
  307. holosoma-0.0.1/holosoma/managers/curriculum/__init__.py +5 -0
  308. holosoma-0.0.1/holosoma/managers/curriculum/base.py +68 -0
  309. holosoma-0.0.1/holosoma/managers/curriculum/manager.py +173 -0
  310. holosoma-0.0.1/holosoma/managers/curriculum/terms/__init__.py +5 -0
  311. holosoma-0.0.1/holosoma/managers/curriculum/terms/locomotion.py +374 -0
  312. holosoma-0.0.1/holosoma/managers/observation/__init__.py +19 -0
  313. holosoma-0.0.1/holosoma/managers/observation/base.py +53 -0
  314. holosoma-0.0.1/holosoma/managers/observation/manager.py +353 -0
  315. holosoma-0.0.1/holosoma/managers/observation/terms/__init__.py +5 -0
  316. holosoma-0.0.1/holosoma/managers/observation/terms/cameras.py +54 -0
  317. holosoma-0.0.1/holosoma/managers/observation/terms/locomotion.py +179 -0
  318. holosoma-0.0.1/holosoma/managers/observation/terms/objects.py +103 -0
  319. holosoma-0.0.1/holosoma/managers/observation/terms/wbt.py +221 -0
  320. holosoma-0.0.1/holosoma/managers/observation/tests/test_camera_obs_terms.py +140 -0
  321. holosoma-0.0.1/holosoma/managers/randomization/__init__.py +6 -0
  322. holosoma-0.0.1/holosoma/managers/randomization/base.py +43 -0
  323. holosoma-0.0.1/holosoma/managers/randomization/exceptions.py +16 -0
  324. holosoma-0.0.1/holosoma/managers/randomization/manager.py +274 -0
  325. holosoma-0.0.1/holosoma/managers/randomization/terms/__init__.py +1 -0
  326. holosoma-0.0.1/holosoma/managers/randomization/terms/_shared.py +20 -0
  327. holosoma-0.0.1/holosoma/managers/randomization/terms/locomotion.py +1098 -0
  328. holosoma-0.0.1/holosoma/managers/randomization/terms/objects.py +938 -0
  329. holosoma-0.0.1/holosoma/managers/reset_events/__init__.py +10 -0
  330. holosoma-0.0.1/holosoma/managers/reset_events/base.py +33 -0
  331. holosoma-0.0.1/holosoma/managers/reset_events/manager.py +57 -0
  332. holosoma-0.0.1/holosoma/managers/reward/__init__.py +6 -0
  333. holosoma-0.0.1/holosoma/managers/reward/base.py +53 -0
  334. holosoma-0.0.1/holosoma/managers/reward/manager.py +333 -0
  335. holosoma-0.0.1/holosoma/managers/reward/terms/__init__.py +5 -0
  336. holosoma-0.0.1/holosoma/managers/reward/terms/locomotion.py +392 -0
  337. holosoma-0.0.1/holosoma/managers/reward/terms/wbt.py +175 -0
  338. holosoma-0.0.1/holosoma/managers/termination/__init__.py +5 -0
  339. holosoma-0.0.1/holosoma/managers/termination/base.py +27 -0
  340. holosoma-0.0.1/holosoma/managers/termination/manager.py +129 -0
  341. holosoma-0.0.1/holosoma/managers/termination/terms/__init__.py +1 -0
  342. holosoma-0.0.1/holosoma/managers/termination/terms/common.py +10 -0
  343. holosoma-0.0.1/holosoma/managers/termination/terms/locomotion.py +81 -0
  344. holosoma-0.0.1/holosoma/managers/termination/terms/wbt.py +146 -0
  345. holosoma-0.0.1/holosoma/managers/terrain/__init__.py +5 -0
  346. holosoma-0.0.1/holosoma/managers/terrain/base.py +104 -0
  347. holosoma-0.0.1/holosoma/managers/terrain/manager.py +60 -0
  348. holosoma-0.0.1/holosoma/managers/terrain/terms/__init__.py +1 -0
  349. holosoma-0.0.1/holosoma/managers/terrain/terms/locomotion.py +278 -0
  350. holosoma-0.0.1/holosoma/managers/utils.py +56 -0
  351. holosoma-0.0.1/holosoma/py.typed +0 -0
  352. holosoma-0.0.1/holosoma/replay.py +44 -0
  353. holosoma-0.0.1/holosoma/run_sim.py +106 -0
  354. holosoma-0.0.1/holosoma/simulator/__init__.py +11 -0
  355. holosoma-0.0.1/holosoma/simulator/base_simulator/base_simulator.py +1315 -0
  356. holosoma-0.0.1/holosoma/simulator/base_simulator/hooks.py +346 -0
  357. holosoma-0.0.1/holosoma/simulator/base_simulator/tests/test_hooks.py +274 -0
  358. holosoma-0.0.1/holosoma/simulator/base_simulator/tests/test_plugins.py +119 -0
  359. holosoma-0.0.1/holosoma/simulator/isaacgym/isaacgym.py +1555 -0
  360. holosoma-0.0.1/holosoma/simulator/isaacgym/physics.py +164 -0
  361. holosoma-0.0.1/holosoma/simulator/isaacgym/urdf_scene_loader.py +770 -0
  362. holosoma-0.0.1/holosoma/simulator/isaacgym/video_recorder.py +176 -0
  363. holosoma-0.0.1/holosoma/simulator/isaacsim/__init__.py +1 -0
  364. holosoma-0.0.1/holosoma/simulator/isaacsim/converters.py +127 -0
  365. holosoma-0.0.1/holosoma/simulator/isaacsim/event_cfg.py +33 -0
  366. holosoma-0.0.1/holosoma/simulator/isaacsim/events.py +352 -0
  367. holosoma-0.0.1/holosoma/simulator/isaacsim/isaaclab_viewpoint_camera_controller.py +250 -0
  368. holosoma-0.0.1/holosoma/simulator/isaacsim/isaacsim.py +1482 -0
  369. holosoma-0.0.1/holosoma/simulator/isaacsim/isaacsim_articulation_cfg.py +96 -0
  370. holosoma-0.0.1/holosoma/simulator/isaacsim/object_spawner.py +565 -0
  371. holosoma-0.0.1/holosoma/simulator/isaacsim/prim_naming.py +76 -0
  372. holosoma-0.0.1/holosoma/simulator/isaacsim/prim_utils.py +358 -0
  373. holosoma-0.0.1/holosoma/simulator/isaacsim/proxy_utils.py +81 -0
  374. holosoma-0.0.1/holosoma/simulator/isaacsim/spawners/__init__.py +4 -0
  375. holosoma-0.0.1/holosoma/simulator/isaacsim/spawners/from_files.py +463 -0
  376. holosoma-0.0.1/holosoma/simulator/isaacsim/spawners/from_files_cfg.py +58 -0
  377. holosoma-0.0.1/holosoma/simulator/isaacsim/spawners/schema_utils.py +146 -0
  378. holosoma-0.0.1/holosoma/simulator/isaacsim/state_adapter.py +186 -0
  379. holosoma-0.0.1/holosoma/simulator/isaacsim/state_utils.py +53 -0
  380. holosoma-0.0.1/holosoma/simulator/isaacsim/video_recorder.py +292 -0
  381. holosoma-0.0.1/holosoma/simulator/mujoco/__init__.py +5 -0
  382. holosoma-0.0.1/holosoma/simulator/mujoco/backends/__init__.py +38 -0
  383. holosoma-0.0.1/holosoma/simulator/mujoco/backends/base.py +428 -0
  384. holosoma-0.0.1/holosoma/simulator/mujoco/backends/classic_backend.py +466 -0
  385. holosoma-0.0.1/holosoma/simulator/mujoco/backends/randomization.py +438 -0
  386. holosoma-0.0.1/holosoma/simulator/mujoco/backends/warp_backend.py +911 -0
  387. holosoma-0.0.1/holosoma/simulator/mujoco/backends/warp_bridge.py +241 -0
  388. holosoma-0.0.1/holosoma/simulator/mujoco/command_registry.py +98 -0
  389. holosoma-0.0.1/holosoma/simulator/mujoco/fields.py +133 -0
  390. holosoma-0.0.1/holosoma/simulator/mujoco/mjw_views.py +629 -0
  391. holosoma-0.0.1/holosoma/simulator/mujoco/mujoco.py +1967 -0
  392. holosoma-0.0.1/holosoma/simulator/mujoco/scene_manager.py +896 -0
  393. holosoma-0.0.1/holosoma/simulator/mujoco/tensor_views.py +568 -0
  394. holosoma-0.0.1/holosoma/simulator/mujoco/video_recorder.py +172 -0
  395. holosoma-0.0.1/holosoma/simulator/plugins/__init__.py +23 -0
  396. holosoma-0.0.1/holosoma/simulator/plugins/camera_consumer.py +230 -0
  397. holosoma-0.0.1/holosoma/simulator/plugins/depth_color.py +67 -0
  398. holosoma-0.0.1/holosoma/simulator/plugins/ros2/__init__.py +2 -0
  399. holosoma-0.0.1/holosoma/simulator/plugins/ros2/camera_info.py +50 -0
  400. holosoma-0.0.1/holosoma/simulator/plugins/ros2/encode.py +120 -0
  401. holosoma-0.0.1/holosoma/simulator/plugins/ros2/ros2_image_plugin.py +228 -0
  402. holosoma-0.0.1/holosoma/simulator/plugins/ros2/worker.py +87 -0
  403. holosoma-0.0.1/holosoma/simulator/plugins/tests/__init__.py +0 -0
  404. holosoma-0.0.1/holosoma/simulator/plugins/tests/test_camera_consumer.py +226 -0
  405. holosoma-0.0.1/holosoma/simulator/plugins/tests/test_image_grid.py +150 -0
  406. holosoma-0.0.1/holosoma/simulator/plugins/tests/test_presets.py +193 -0
  407. holosoma-0.0.1/holosoma/simulator/plugins/tests/test_ros2_helpers.py +208 -0
  408. holosoma-0.0.1/holosoma/simulator/plugins/tests/test_ros2_image_plugin.py +384 -0
  409. holosoma-0.0.1/holosoma/simulator/plugins/viz/__init__.py +5 -0
  410. holosoma-0.0.1/holosoma/simulator/plugins/viz/image_grid.py +155 -0
  411. holosoma-0.0.1/holosoma/simulator/plugins/viz/viz_plugin.py +176 -0
  412. holosoma-0.0.1/holosoma/simulator/shared/__init__.py +1 -0
  413. holosoma-0.0.1/holosoma/simulator/shared/asset_format.py +69 -0
  414. holosoma-0.0.1/holosoma/simulator/shared/builtin_plugins.py +23 -0
  415. holosoma-0.0.1/holosoma/simulator/shared/camera_controller.py +406 -0
  416. holosoma-0.0.1/holosoma/simulator/shared/camera_sensor.py +154 -0
  417. holosoma-0.0.1/holosoma/simulator/shared/field_decorators.py +59 -0
  418. holosoma-0.0.1/holosoma/simulator/shared/image_transform.py +73 -0
  419. holosoma-0.0.1/holosoma/simulator/shared/object_registry.py +561 -0
  420. holosoma-0.0.1/holosoma/simulator/shared/root_states_view.py +114 -0
  421. holosoma-0.0.1/holosoma/simulator/shared/ros2_plugins.py +335 -0
  422. holosoma-0.0.1/holosoma/simulator/shared/scene_types.py +33 -0
  423. holosoma-0.0.1/holosoma/simulator/shared/simulator_bridge.py +197 -0
  424. holosoma-0.0.1/holosoma/simulator/shared/terrain.py +581 -0
  425. holosoma-0.0.1/holosoma/simulator/shared/terrain_types.py +34 -0
  426. holosoma-0.0.1/holosoma/simulator/shared/tests/test_camera_runtime_cache.py +95 -0
  427. holosoma-0.0.1/holosoma/simulator/shared/tests/test_get_camera_data.py +95 -0
  428. holosoma-0.0.1/holosoma/simulator/shared/tests/test_image_transform.py +126 -0
  429. holosoma-0.0.1/holosoma/simulator/shared/tests/test_optical_frame.py +59 -0
  430. holosoma-0.0.1/holosoma/simulator/shared/tests/test_ros2_plugins.py +257 -0
  431. holosoma-0.0.1/holosoma/simulator/shared/tests/test_sensor_manager.py +109 -0
  432. holosoma-0.0.1/holosoma/simulator/shared/video_recorder.py +568 -0
  433. holosoma-0.0.1/holosoma/simulator/shared/virtual_gantry.py +583 -0
  434. holosoma-0.0.1/holosoma/simulator/types.py +84 -0
  435. holosoma-0.0.1/holosoma/train_agent.py +340 -0
  436. holosoma-0.0.1/holosoma/utils/__init__.py +0 -0
  437. holosoma-0.0.1/holosoma/utils/adapters/draw_utils.py +58 -0
  438. holosoma-0.0.1/holosoma/utils/adapters/isaacgym_draw_adapter.py +128 -0
  439. holosoma-0.0.1/holosoma/utils/adapters/isaacsim_draw_adapter.py +62 -0
  440. holosoma-0.0.1/holosoma/utils/adapters/mujoco_draw_adapter.py +295 -0
  441. holosoma-0.0.1/holosoma/utils/average_meters.py +82 -0
  442. holosoma-0.0.1/holosoma/utils/clock.py +152 -0
  443. holosoma-0.0.1/holosoma/utils/common.py +160 -0
  444. holosoma-0.0.1/holosoma/utils/config_registry.py +285 -0
  445. holosoma-0.0.1/holosoma/utils/config_utils.py +1 -0
  446. holosoma-0.0.1/holosoma/utils/draw.py +71 -0
  447. holosoma-0.0.1/holosoma/utils/eval_utils.py +298 -0
  448. holosoma-0.0.1/holosoma/utils/experiment_paths.py +130 -0
  449. holosoma-0.0.1/holosoma/utils/file_cache.py +418 -0
  450. holosoma-0.0.1/holosoma/utils/helpers.py +121 -0
  451. holosoma-0.0.1/holosoma/utils/inference_helpers.py +304 -0
  452. holosoma-0.0.1/holosoma/utils/logging.py +54 -0
  453. holosoma-0.0.1/holosoma/utils/module_utils.py +8 -0
  454. holosoma-0.0.1/holosoma/utils/path.py +82 -0
  455. holosoma-0.0.1/holosoma/utils/pycompat.py +22 -0
  456. holosoma-0.0.1/holosoma/utils/rate.py +113 -0
  457. holosoma-0.0.1/holosoma/utils/rotations.py +743 -0
  458. holosoma-0.0.1/holosoma/utils/safe_torch_import.py +14 -0
  459. holosoma-0.0.1/holosoma/utils/sampler.py +452 -0
  460. holosoma-0.0.1/holosoma/utils/sim_utils.py +607 -0
  461. holosoma-0.0.1/holosoma/utils/simulator_config.py +102 -0
  462. holosoma-0.0.1/holosoma/utils/terrain_utils.py +607 -0
  463. holosoma-0.0.1/holosoma/utils/tests/test_distributions.py +272 -0
  464. holosoma-0.0.1/holosoma/utils/tests/test_eval_utils.py +380 -0
  465. holosoma-0.0.1/holosoma/utils/tests/test_keyed_distributions.py +335 -0
  466. holosoma-0.0.1/holosoma/utils/tests/test_rotations.py +173 -0
  467. holosoma-0.0.1/holosoma/utils/tests/test_torch_utils.py +111 -0
  468. holosoma-0.0.1/holosoma/utils/tests/test_tyro_utils.py +186 -0
  469. holosoma-0.0.1/holosoma/utils/torch_jit.py +276 -0
  470. holosoma-0.0.1/holosoma/utils/torch_utils.py +181 -0
  471. holosoma-0.0.1/holosoma/utils/tyro_utils.py +136 -0
  472. holosoma-0.0.1/holosoma/utils/video_utils.py +226 -0
  473. holosoma-0.0.1/holosoma/utils/wandb.py +113 -0
  474. holosoma-0.0.1/holosoma/utils/warp_utils.py +169 -0
  475. holosoma-0.0.1/pyproject.toml +119 -0
@@ -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
+ ```
@@ -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