CanIEmbody

Proprioception

Also: proprioceptive state, robot state, observation.state

The robot's measurement of its own body state, such as joint positions, velocities and gripper opening, given to a policy alongside camera images.

Proprioception is a robot's measurement of its own configuration: joint positions and, depending on the hardware, joint velocities, motor currents or torques, and gripper state. The word is borrowed from physiology, where it names the body's sense of its own position and movement. In robot learning, the proprioceptive vector is the low-dimensional "state" input that accompanies camera images.

The π0 paper (Black et al., 2024) defines its observation as "multiple RGB images, a language command, and the robot's proprioceptive state". In a LeRobotDataset it is the observation.state feature, stored per frame next to action. For an SO-101 driven by LeRobot's so_follower code, state is one position reading per motor, {motor}.pos, for its six motors (five arm joints and the gripper). Its dimensionality therefore follows the robot's degrees of freedom.

Policies treat state differently. SmolVLA pads it to max_state_dim=32 in LeRobot v0.6.1 so that robots with different joint counts share one network. LeRobot describes GR00T N1.7 as accepting "language, images, and proprioception". ACT feeds joint positions to its transformer alongside image features.

Two misconceptions are common. First, proprioception is not touch. Joint encoders report where the arm is; contact forces at the fingertips require tactile or force-torque sensing, or must be inferred indirectly from motor current. Second, state values are not portable between robots, or even between calibrations of the same model. They depend on joint zero positions, units and normalization, which is one reason a checkpoint trained on one arm does not transfer unchanged to another (see embodiment gap).

Policies where this matters

π0 · SmolVLA · GR00T N1.7 · ACT

Related

Degrees of freedom · LeRobotDataset · Vision-language-action model · Embodiment gap

Sources

  1. T1 · upstream documentedpapersource 2024-10-31verified 2026-10-24 (1d ago)

    π0 observations include proprioceptive state.

    “The observation consists of multiple RGB images, a language command, and the robot’s proprioceptive state”
    https://arxiv.org/html/2410.24164
  2. T1 · upstream documentedsource-codesource 2026-08-03verified 2026-10-24 (1d ago)lerobot 0.6.1

    LeRobot SO follower exposes one position feature per motor.

    “return {f"{motor}.pos": float for motor in self.bus.motors}”
    https://github.com/huggingface/lerobot/blob/v0.6.1/src/lerobot/robots/so_follower/so_follower.py
  3. T1 · upstream documentedsource-codesource 2026-08-03verified 2026-10-24 (1d ago)lerobot 0.6.1

    SmolVLA pads state to 32 dimensions in LeRobot v0.6.1.

    “max_state_dim: int = 32”
    https://github.com/huggingface/lerobot/blob/v0.6.1/src/lerobot/policies/smolvla/configuration_smolvla.py
  4. T1 · upstream documentedofficial-docssource 2026-08-03verified 2026-10-24 (1d ago)lerobot 0.6.1

    LeRobot: GR00T accepts language, images and proprioception.

    “It is a cross-embodiment policy that accepts multimodal input, including language, images, and proprioception”
    https://github.com/huggingface/lerobot/blob/v0.6.1/docs/source/groot.mdx