FORCA: A Force-Aware Coding Agent for Contact-Rich Robot Manipulation

Xiao Tan1,*, Yixuan Wang1,*, Zhexi Wang1,2, Wenzhen Yuan1
1University of Illinois Urbana-Champaign, 2Tsinghua University
*Equal contribution
FORCA revising a cucumber-peeling program from recorded blade force

FORCA is a coding agent that writes force-aware robot programs and refines them by reasoning over recorded force and visual feedback from real executions.
The figure illustrates how FORCA works in cucumber peeling.

Abstract

Coding agents can translate language instructions into robot programs. For contact-rich manipulation, a key challenge is to generate and refine control logic that responds to physical interaction. We present FORCA, a coding agent that takes visual observations and wrist force/torque (F/T) measurements as input to write Python programs for contact probing and force-responsive motion. Between executions, the agent inspects force records alongside visual outcomes to diagnose failures and revise both motion and force-feedback control logic. FORCA requires no demonstrations, task-specific training, or simulation. Across five real-robot tasks, we demonstrate its effectiveness in three forms of contact-rich manipulation: improving manipulation accuracy, adapting to changes in object or surface properties, and regulating contact under surface variation and object motion. Compared with a vision-only variant of the same agent, FORCA improves grasp accuracy and task success and reduces contact loss in wiping and peeling.

Video

Method

Given a language instruction and RGB-D observations, FORCA writes a complete Python task program with access to the measured wrist wrench. The program runs on the robot without querying the foundation model. During a rollout, contact probes refine geometric estimates such as surface height or grasp position, and a 100 Hz loop reads the wrench and adjusts motion for actions that need sustained contact. Between rollouts, the agent relates force events in the recorded trace to robot motion and visible outcomes, and revises parameters, contact conditions, control logic or the action sequence.

Overview of FORCA
Overview of FORCA. The agent generates a task program that uses force feedback during execution. Recorded force, robot-state and visual observations inform revisions between rollouts, and generated routines and notes are retained for later reuse.
Predefined skill modules
Predefined skill modules. (a) SAM 3 localizes the tool named in the instruction. (b) GraspGen proposes candidate grasps, and the VLM selects one. (c) PyRoKi plans the trajectory. (d) The robot executes the routine to acquire the tool.

Results

We evaluate FORCA on five real-robot tasks with a UR5e arm and a wrist F/T sensor, and compare it with a vision-only variant of the same agent that uses the same foundation model, instructions and skills but has no access to force data.

Precise manipulation

In drawer opening and door-handle operation, FORCA refines the visually estimated grasp pose by probing the handle and door panel. It succeeds in all 10 trials on both tasks, compared with 4/10 and 1/10 for the vision-only agent.

Drawer opening and door-handle operation
Panels 1–3 show FORCA estimating geometry visually, refining it through contact probing, and grasping. Panel 4 compares outcomes with the vision-only agent.
Grasp error (mean ± std) and task success over 10 trials.
TaskMethodTrans. err. (mm) ↓Rot. err. (°) ↓Success (%) ↑
DrawerVision-only8.3 ± 5.49.6 ± 3.240
FORCA5.3 ± 1.61.0 ± 0.3100
DoorVision-only65.3 ± 16.955.5 ± 14.910
FORCA20.0 ± 0.90.6 ± 0.5100

Adapting to new physical conditions

In cube-to-target, the robot knocks an object so it slides into a target region. FORCA develops a program for a cube on a whiteboard, then continues from it when the object (cube or cylinder) or the surface (whiteboard or woodboard) changes. In each new configuration it reaches the target within a few additional revisions.

Cube-to-target landing positions and object/surface variants
(a) Object positions across attempts. (b) Object and surface configurations.
Distance to target per attempt
Distance to the target band per attempt, starting from the program developed for the cube on the whiteboard.

Online contact regulation

In vase wiping, both agents refine their programs on a static vase and are then deployed without further revision on a vase that a person moves by hand. FORCA follows the moving surface with force feedback, while the vision-only program loses contact.

Vase wiping results and force traces
Vase wiping: (a) static vase and (b) zero-shot transfer to a hand-held vase. Outcomes, execution frames and normal force traces.
Vase wiping, averaged over 10 trials.
VaseMethodRemoval (%) ↑Contact loss (%) ↓Max. force (N) ↓
StaticVision-only7342.611.8
FORCA990.711.3
Hand-heldVision-only2155.917.5
FORCA931.612.3

In cucumber peeling, the robot peels a strip from a cucumber held by a person. FORCA keeps the blade in contact along the uneven surface and produces a continuous strip.

Cucumber peeling rollouts
Cucumber peeling: setup, strip coverage after one pass, key frames and normal force.
Peeling, averaged over 10 trials (%).
MethodContact loss ↓Excess force ↓Peeled ↑
Vision-only40.613.437.4
FORCA2.22.781.1

Iterative program revision

Door-handle development histories
Door-handle development histories. Each marker is one execution, placed at the stage where it failed.

FORCA failed mostly at pressing the handle down. It located the latch release and end stop from the recorded press force, then fixed the remaining failures in pulling and releasing. The vision-only agent failed mostly at grasping and pulling, as the handle kept slipping out of the gripper.

BibTeX

@article{tan2026forca,
  title   = {FORCA: A Force-Aware Coding Agent for Contact-Rich Robot Manipulation},
  author  = {Tan, Xiao and Wang, Yixuan and Wang, Zhexi and Yuan, Wenzhen},
  journal = {arXiv preprint arXiv:XXXX.XXXXX},
  year    = {2026}
}