Action space

An action space is the set of commands a robot policy can output at each step, including what each value in the action vector controls, its units, its reference frame, and its range. Common choices are joint positions or velocities, end-effector poses, and absolute targets versus deltas, almost always with an extra value for the gripper. Two datasets can show the same motion on camera and still store very different action vectors.

What is an action space?

An action space is the set of commands a robot policy can output at each step: what each number in the action vector controls, its units, and its range. For a robot arm, one action might be seven target joint angles, a small change in the gripper's position and rotation, or a velocity for each joint, usually with one more value for the end-effector. The camera footage of a demonstration doesn't change with this choice, but the numbers a policy learns from do.
Two choices define most action spaces. The first is joint space versus end-effector space, covered in end-effector, where end-effector actions leave inverse kinematics to the robot's controller. The second is absolute versus delta. An absolute action names a target, such as "move the gripper to this pose," and a delta action names a change, such as "move 2 centimeters forward and rotate 5 degrees." Many vision-language-action models output delta end-effector actions. OpenVLA, for example, outputs seven values per step: three for change in position, three for change in rotation, and one for the gripper.
Diagram titled Same motion, four ways to write it. Four tiles show one robot motion written as an action vector: absolute joint targets, a change per joint, an absolute end-effector tool pose, and a change in tool pose. Each tile ends with a gripper value of 1.0, highlighted in orange because its convention often differs between datasets.
The same motion can be stored four ways. Only the gripper value looks alike in all of them, and its convention is the one most often flipped between datasets.

Key takeaways

  • An action space defines what each value a robot policy outputs means, including units, reference frame, and range.
  • Joint versus end-effector and absolute versus delta are the two main design choices, and the gripper is almost always one more dimension.
  • When datasets are pooled, mismatched action spaces are an easy error to miss, because they load and normalize without complaint.

Common action space choices

ChoiceWhat each action saysWhere you see it
Absolute joint positionThe target angle for each jointLeader-follower rigs such as the SO-101, where the leader's joint readings are recorded as the follower's targets
Joint velocityHow fast each joint should moveOne of several action options stored in DROID
Absolute end-effector poseThe target position and orientation of the toolClassical motion planning and many teleoperation logs
Delta end-effector poseThe change in tool position and orientation since the last stepMany VLAs, including OpenVLA
Gripper commandOpen, closed, or a width in betweenNearly every manipulation dataset, as one extra dimension
Common ways robot datasets define an action, and where each one shows up.

How it works

A robot records its commands at a fixed rate, and each step stores an action vector next to the observations from the cameras and proprioception. Training normalizes each action dimension using statistics computed over the dataset, and the policy learns to predict vectors in that same space. A policy can run only where the controller accepts its action space. Converting between spaces needs the robot's kinematics, and converting between absolute and delta actions depends on the frame rate and on which frame the deltas are measured in. DROID shows how many options one dataset can carry: each step stores commanded joint positions, joint velocities, Cartesian positions, Cartesian velocities, and gripper position and velocity, and different training codebases pick different ones.

Before you pool robot datasets, check what each action number means

An action vector is a list of numbers until you know its space. Datasets recorded on different robots, or with different software, can agree on the camera footage and disagree on almost everything in the action column. The quiet problems:
  • a gripper value where 1 means open in one dataset and closed in another
  • end-effector deltas measured in the base frame in one dataset and the gripper frame in another
  • delta actions recorded at one frame rate and replayed at another
In Voxel51, DROID holds 1,000 robot manipulation episodes recorded as MCAP, each with end-effector and joint actions on separate topics next to three cameras, so you can check what a recorded command looks like on camera.

Robotics Droid

1,000 episodes

Real-world robot manipulation episodes from DROID, stored as MCAP with three synced cameras and fields for task prompt, success, and number of grasps.

Try this: Pause an episode during the grasping phase and compare target_gripper_position in /action/ee with gripper_state in /robot/derived. Note which way each one counts before you mix in another dataset.

Open DROID in Voxel51

Free with a work or .edu email.

Go deeper

Why it matters

For anyone curating robot data, the action space is metadata to check, never to assume. Pooled datasets break in quiet ways: a gripper value where 1 means open in one dataset and closed in the next, joint angles in degrees mixed with radians, or deltas computed at 15 Hz fed to a policy that runs at 30 Hz. None of these stop a training run. The statistics look normal and the loss goes down, while the policy learns contradictory commands. Checking a few episodes per source, with the recorded actions played against the camera footage, can catch these before they cost a training run. This is one of the core problems behind cross-embodiment learning.
For how normalization statistics and camera rename maps depend on correct metadata at training time, see what training reads besides the frames.

Frequently asked questions

How do you convert between absolute and delta actions?

Subtract consecutive targets to get deltas, or add deltas to a starting pose to get targets. Both directions need the control rate and the reference frame, which is why the conversion often goes wrong when datasets are pooled.

What is a delta action?

A delta action is a change relative to the current state, such as moving the gripper 2 centimeters to the left, instead of an absolute target. Delta actions are easier to learn across different starting positions, but their meaning depends on the control rate and the reference frame, so two datasets with the same delta format can still disagree.

Why does the gripper usually get its own dimension?

Opening and closing the gripper is the decisive moment in most manipulation tasks, and it behaves differently from arm motion. Many datasets record it as one value, either a continuous width or a near-binary open or closed command. Its convention, whether 1 means open or closed, is one of the first things to check when combining datasets.

Related terms

black and white photo of Jesse Mostipak
Director of Growth
Jesse Mostipak is the Director of Growth at Voxel51, where the work is helping humans find and trust what the brand knows, and teaching the Google knowledge graph and the LLMs answering on their behalf to do the same. That question, how knowledge gets built inside a system, is one Jesse has been chasing for years. Earlier versions of it ran through a New York City high school science classroom, data science and machine learning, and developer relations at Kaggle, Posit (formerly RStudio), and Baseten. The answer doesn't change much depending on whether the learner is a teenager, a software engineer, or a knowledge graph. Jesse holds a Master's in Education from CUNY Hunter College. LinkedIn
See all articles by Jesse Mostipak
Last updated November 12, 2026

Building visual or physical AI?

Let's talk.