Ctrl+F

Force as an Interface for
Humanoid Loco-Manipulation

Mengjie Zhao*, Yuxin Chen*, Yiyang Shao, Chuye Hong, Jiakang Chen, Koushil Sreenath, Masayoshi Tomizuka

University of California, Berkeley *Equal contribution

Abstract

Humanoid motion trackers know where the body should be, not how hard it should act on the world. Ctrl-F adds that missing channel: an explicit 3-D force command at each designated force body, a hand or a foot in our experiments. A motion–force tracker, trained without any object, realises the commanded force while following the reference motion, and a high-level planner chooses the command online from object state and proprioception. On a Unitree G1 this drags, pushes, raises and kicks loads up to 20 kg where a force-blind tracker moves nothing, and the high-level planner adapts its command when the object's mass changes mid-task.

Video

A pose says nothing about interaction

SONIC, 0 kg in the box
SONIC, 2 kg in the box

Method

The interface is a reference motion plus a force command. A low-level tracker follows the motion and produces the commanded force at each force body. A high-level planner decides that force.

Stage 1: object-free force training of the motion-force tracker. Stage 2: a high-level force planner on the frozen tracker.

Stage 1: train the tracker to realise a commanded force

Training has no objects. Each episode samples a 3-D force command for a force body and applies the opposite wrench to it. The only way to hold the reference pose under that wrench is to push back with exactly the commanded force, so the tracker learns the correspondence between a force command and the action that realises it.

The trained tracker under an external force. The hand sinks when only the wrench is applied and recovers once the matching command is given. (0.5×)

On hardware, the commanded force measured on a crane scale. (0.5×)

Stage 2: learn what force to command

With the tracker frozen, a planner reads the object state and the robot's proprioception and outputs one force command per force body. It is trained with an analytical wrench-allocation model as its teacher and refined by reinforcement learning scored on the object's motion. Its command adapts when the load changes.

Mid-task mass change in simulation. Green arrows are the force commands. (0.5×)

Hardware

Unitree G1 with onboard sensing and AprilTag object pose. SONIC is the baseline and runs the same clips on the same objects. Loads are the weight added to the object.

Drag a crate

0 kg
8 kg
14 kg
SONIC
Ctrl-F

Wheels locked. SONIC moves only the empty crate. Ctrl-F moves all three.

Push a box

0 kg
20 kg
SONIC
Ctrl-F

SONIC moves neither box. Ctrl-F pushes both.

Raise a box, 2 kg

SONIC
Ctrl-F

SONIC's hands slide off the box. Ctrl-F lifts it in 9 of 10 trials.

Sweep a box, 1 kg

SONIC
Ctrl-F

SONIC cannot balance on one leg and never moves the box.

Stand kick

SONIC, 0 kg
Ctrl-F, 0 kg
Ctrl-F, 20 kg

SONIC cannot stand and kick on one leg. Ctrl-F kicks both the empty box and the 20 kg one.

Frame strips of the hardware deployment: drag, push, raise, kick, sweep, and raise-walk-kick

Hardware deployment.

Load changes mid-task

Weight is added while the robot is already working. The planner's command follows the load, with no force sensor in the loop.

Drag, weight added

SONIC, 0 → 8 kg
Ctrl-F, command frozen, 8 → 14 kg
Ctrl-F, 8 → 14 kg

SONIC stops. With the command frozen, the robot slows down. With the planner, it keeps its pace.

Hold a load, 1 + 1 kg

Ctrl-F, zero command
Ctrl-F

Same network in both. With the command held at zero, the hand sinks as weight is added. With the planner, it stays at the reference height.

Simulation

Nine tasks using the hands, the feet, or both. Object mass is randomised between episodes and changed during them.

Raise
Push
Drag
Lift
Hold
Sweep
Kick
Raise-Kick
Raise-Sweep

The nine tasks, with the planner's force commands drawn in green.

Completion rate and object error as object mass increases, and success rate per task, for Ctrl-F, Ctrl-F without the command, and SONIC

Without the force command, completion drops as mass grows. Ctrl-F stays above 90% across the range.

Try it

The trained policies, live in your browser on MuJoCo physics. In the first demo you set the force command yourself and the tracker realises it. In the other two the command comes from the learned high-level planner.

Loading…

Citation

@misc{zhao2026ctrlf,
  title         = {Ctrl-F: Force as an Interface for Humanoid Loco-Manipulation},
  author        = {Mengjie Zhao and Yuxin Chen and Yiyang Shao and Chuye Hong and
                   Jiakang Chen and Koushil Sreenath and Masayoshi Tomizuka},
  year          = {2026},
  eprint        = {2611.05507},
  archivePrefix = {arXiv},
  primaryClass  = {cs.RO},
  url           = {https://arxiv.org/abs/2611.05507}
}

Built on mjlab and MuJoCo Warp.