Skip to content

Latest commit

 

History

History
69 lines (50 loc) · 5.12 KB

norm_stats.md

File metadata and controls

69 lines (50 loc) · 5.12 KB

Normalization statistics

Following common practice, our models normalize the proprioceptive state inputs and action targets during policy training and inference. The statistics used for normalization are computed over the training data and stored alongside the model checkpoint.

Reloading normalization statistics

When you fine-tune one of our models on a new dataset, you need to decide whether to (A) reuse existing normalization statistics or (B) compute new statistics over your new training data. Which option is better for you depends on the similarity of your robot and task to the robot and task distribution in the pre-training dataset. Below, we list all the available pre-training normalization statistics for each model.

If your target robot matches one of these pre-training statistics, consider reloading the same normalization statistics. By reloading the normalization statistics, the actions in your dataset will be more "familiar" to the model, which can lead to better performance. You can reload the normalization statistics by adding an AssetsConfig to your training config that points to the corresponding checkpoint directory and normalization statistics ID, like below for the Trossen (aka ALOHA) robot statistics of the pi0_base checkpoint:

TrainConfig(
    ...
    data=LeRobotAlohaDataConfig(
        ...
        assets=AssetsConfig(
            assets_dir="s3://openpi-assets/checkpoints/pi0_base/assets",
            asset_id="trossen",
        ),
    ),
)

For an example of a full training config that reloads normalization statistics, see the pi0_aloha_pen_uncap config in the training config file.

Note: To successfully reload normalization statistics, it's important that your robot + dataset are following the action space definitions used in pre-training. We provide a detailed description of our action space definitions below.

Note #2: Whether reloading normalization statistics is beneficial depends on the similarity of your robot and task to the robot and task distribution in the pre-training dataset. We recommend to always try both, reloading and training with a fresh set of statistics computed on your new dataset (see main README for instructions on how to compute new statistics), and pick the one that works better for your task.

Provided Pre-training Normalization Statistics

Below is a list of all the pre-training normalization statistics we provide. We provide them for both, the pi0_base and pi0_fast_base models. For pi0_base, set the assets_dir to s3://openpi-assets/checkpoints/pi0_base/assets and for pi0_fast_base, set the assets_dir to s3://openpi-assets/checkpoints/pi0_fast_base/assets.

Robot Description Asset ID
ALOHA 6-DoF dual arm robot with parallel grippers trossen
Mobile ALOHA Mobile version of ALOHA mounted on a Slate base trossen_mobile
Franka Emika (DROID) 7-DoF arm with parallel gripper based on the DROID setup droid
Franka Emika (non-DROID) Franka FR3 arm with Robotiq 2F-85 gripper franka
UR5e 6-DoF UR5e arm with Robotiq 2F-85 gripper ur5e
UR5e bi-manual Bi-manual UR5e setup with Robotiq 2F-85 grippers ur5e_dual
ARX Bi-manual ARX-5 robot arm setup with parallel gripper arx
ARX mobile Mobile version of bi-manual ARX-5 robot arm setup mounted on a Slate base arx_mobile
Fibocom mobile Fibocom mobile robot with 2x ARX-5 arms fibocom_mobile

Pi0 Model Action Space Definitions

Out of the box, both the pi0_base and pi0_fast_base use the following action space definitions (left and right are defined looking from behind the robot towards the workspace):

    "dim_0:dim_5": "left arm joint angles",
    "dim_6": "left arm gripper position",
    "dim_7:dim_12": "right arm joint angles (for bi-manual only)",
    "dim_13": "right arm gripper position (for bi-manual only)",

    # For mobile robots:
    "dim_14:dim_15": "x-y base velocity (for mobile robots only)",

The proprioceptive state uses the same definitions as the action space, except for the base x-y position (the last two dimensions) for mobile robots, which we don't include in the proprioceptive state.

For 7-DoF robots (e.g. Franka), we use the first 7 dimensions of the action space for the joint actions, and the 8th dimension for the gripper action.

General info for Pi robots:

  • Joint angles are expressed in radians, with position zero corresponding to the zero position reported by each robot's interface library, except for ALOHA, where the standard ALOHA code uses a slightly different convention (see the ALOHA example code for details).
  • Gripper positions are in [0.0, 1.0], with 0.0 corresponding to fully open and 1.0 corresponding to fully closed.
  • Control frequencies are either 20 Hz for UR5e and Franka, and 50 Hz for ARX and Trossen (ALOHA) arms.

For DROID, we use the original DROID action configuration, with joint velocity actions in the first 7 dimensions and gripper actions in the 8th dimension + a control frequency of 15 Hz.