Spaces:
Running on Zero
Running on Zero
| """ | |
| Important constants for VLA training and evaluation. | |
| Attempts to automatically identify the correct constants to set based on the Python command used to launch | |
| training or evaluation. If it is unclear, defaults to using the LIBERO simulation benchmark constants. | |
| """ | |
| import sys | |
| from enum import Enum | |
| # Defines supported normalization schemes for action and proprioceptive state. | |
| class NormalizationType(str, Enum): | |
| # fmt: off | |
| MEAN_STD = "MEAN_STD" # Normalize to Mean = 0, Stdev = 1 | |
| MIN_MAX = "MIN_MAX" # Normalize to Interval = [-1, 1] | |
| QUANTILE = "QUANTILE" # Normalize [quantile_01, ..., quantile_99] --> [-1, ..., 1] | |
| # fmt: on | |
| # Define constants for each robot platform | |
| LIBERO_CONSTANTS = { | |
| "NUM_ACTIONS_CHUNK": 10, | |
| "ACTION_DIM": 7, | |
| "ACTION_PROPRIO_NORMALIZATION_TYPE": NormalizationType.QUANTILE, | |
| "ACTION_MASK": [True]*6 + [False], # 7-DoF Libero arm: mask out gripper | |
| } | |
| ALOHA_CONSTANTS = { | |
| "NUM_ACTIONS_CHUNK": 25, | |
| "ACTION_DIM": 14, | |
| "ACTION_PROPRIO_NORMALIZATION_TYPE": NormalizationType.MIN_MAX, | |
| "ACTION_MASK": [True]*6 + [False] + [True]*6 + [False], # 14-DoF ALOHA arm: use all actions | |
| } | |
| BRIDGE_CONSTANTS = { | |
| "NUM_ACTIONS_CHUNK": 5, | |
| "ACTION_DIM": 7, | |
| "ACTION_PROPRIO_NORMALIZATION_TYPE": NormalizationType.QUANTILE, | |
| "ACTION_MASK": [True]*6 + [False], # 7-DoF Bridge arm: mask out gripper | |
| } | |
| # Function to detect robot platform from command line arguments | |
| def detect_robot_platform(): | |
| cmd_args = " ".join(sys.argv).lower() | |
| if "libero" in cmd_args: | |
| return "LIBERO" | |
| elif "aloha" in cmd_args: | |
| return "ALOHA" | |
| elif "bridge" in cmd_args: | |
| return "BRIDGE" | |
| else: | |
| # Default to LIBERO if unclear | |
| return "LIBERO" | |
| # Determine which robot platform to use | |
| ROBOT_PLATFORM = detect_robot_platform() | |
| # Set the appropriate constants based on the detected platform | |
| if ROBOT_PLATFORM == "LIBERO": | |
| constants = LIBERO_CONSTANTS | |
| elif ROBOT_PLATFORM == "ALOHA": | |
| constants = ALOHA_CONSTANTS | |
| elif ROBOT_PLATFORM == "BRIDGE": | |
| constants = BRIDGE_CONSTANTS | |
| # Assign constants to global variables | |
| NUM_ACTIONS_CHUNK = constants["NUM_ACTIONS_CHUNK"] | |
| ACTION_DIM = constants["ACTION_DIM"] | |
| ACTION_PROPRIO_NORMALIZATION_TYPE = constants["ACTION_PROPRIO_NORMALIZATION_TYPE"] | |
| ACTION_MASK = constants["ACTION_MASK"] | |
| # Print which robot platform constants are being used (for debugging) | |
| print(f"Using {ROBOT_PLATFORM} constants:") | |
| print(f" NUM_ACTIONS_CHUNK = {NUM_ACTIONS_CHUNK}") | |
| print(f" ACTION_DIM = {ACTION_DIM}") | |
| print(f" ACTION_MASK = {ACTION_MASK}") | |
| print(f" ACTION_PROPRIO_NORMALIZATION_TYPE = {ACTION_PROPRIO_NORMALIZATION_TYPE}") | |
| print("If needed, manually set the correct constants in `sft/constants.py`!") | |