A Dropbear observation is expressed in the selected model’s coordinates, not
necessarily your controller’s coordinates. Convert at the RobotIO boundary
and validate the returned model action before converting it back.
Matching a vector length is not enough. Joint order, units, camera order,
gripper convention, and absolute-versus-delta semantics must all match.
The production catalog currently exposes the three contracts below. Check
Models before opening a
session because
availability is region- and account-dependent.
MolmoAct2 SO-101
Observation
side_frame: H×W×3 RGB image.
wrist_frame: H×W×3 RGB image from a distinct arm-mounted camera.
joint_positions: six finite values in LeRobot SO-101 order and degrees.
gripper_position: LeRobot’s 0–100 position convention.
actions_remaining: optional nonnegative buffer depth; the policy loop sets
this when needed.
Action
Each returned action has this order:
The values are absolute targets in the same degrees and gripper convention as
the observation. A normal chunk contains 30 actions for a 30 Hz controller.
On an underrun, the managed loop uses the current observation position as its
hold target. Your robot controller must still enforce per-tick changes, motor
limits, watchdogs, and the physical stop path.
MolmoAct2 LIBERO
Observation
The eight state values are end-effector position, end-effector rotation as an
axis-angle vector converted from the environment’s XYZW quaternion, then the
two simulator gripper joint positions.
Action
A normal chunk contains ten 7D robosuite/LIBERO delta actions at 10 Hz:
Use the action directly only with the matching LIBERO/robosuite environment
configuration. A physical robot controller has a different contract.
MolmoAct2 DROID
Observation
exterior_frame: required H×W×3 uint8 RGB view.
wrist_frame: required H×W×3 uint8 RGB view.
second_exterior_frame: optional second exterior RGB view. When omitted,
Dropbear maps the first exterior view to both exterior inputs.
joint_positions: seven finite Franka joint positions in radians.
gripper: one finite value from 0 (open) to 1 (closed).
Action
Each returned action has this order:
The values are absolute joint targets in radians followed by the unit-interval
gripper target. A normal chunk contains 15 actions for a 15 Hz controller.
Dropbear provides DROID inference, not a Franka safety controller. Stop at
predict() until your local stack validates joint, velocity, acceleration,
workspace, collision, gripper, watchdog, and e-stop behavior.
Validate at the boundary
For every model:
- Record the raw controller state and the converted model state.
- Assert camera color order, dtype, shape, and source identity.
- Assert vector length, order, units, and finite values.
- Inspect one non-actuating prediction.
- Reject every output outside local limits before any coordinate conversion.
- Test hold and e-stop behavior without cloud connectivity.
Continue to the SO-101 or Franka recipe.