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.
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.
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
Choice
What each action says
Where you see it
Absolute joint position
The target angle for each joint
Leader-follower rigs such as the SO-101, where the leader's joint readings are recorded as the follower's targets
Joint velocity
How fast each joint should move
One of several action options stored in DROID
Absolute end-effector pose
The target position and orientation of the tool
Classical motion planning and many teleoperation logs
Delta end-effector pose
The change in tool position and orientation since the last step
Many VLAs, including OpenVLA
Gripper command
Open, closed, or a width in between
Nearly 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.
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.
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.
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