ROBOTICS

Prove a robot's behavior before anything moves

Write a behavior for an arm or a drone, run it through randomized trials in a simulator, and let a policy decide every move.

A behavior is an ivy-agent whose steps are robot moves: find an object, move the tool, close the jaws, take off, land. A MuJoCo simulator runs inside IVYX Studio, proves the behavior over many trials and writes the count onto it. Every move goes through the capability gateway, so the laboratory's policy reads each one.

The Robotics workbench: a pick-and-place behavior for the Franka Panda, proven 20 of 20 in the simulator, its nine steps grouped as reach, grasp, transport and place with editable heights and a speed of 0.25 m/s; the simulator drawing the Panda above a red cube and a blue tray, with its joint angles; and a chart of each step over the last run, with no unintended contacts. On the left, the Ivy Marketplace open on its Robotics tab, listing the nine published behaviors.
Red object → tray · Panda in the Robotics workbench: the behavior's steps, the simulator, and the chart of the last run.20 of 20 trialsno unintended contactsSee this behavior

From a sentence to a proven behavior

Each stage is a capability, so each one goes through the same gateway and lands in the same record.

  1. 1

    Write

    robotics.behavior.write

    Ask for a pick-and-place, a stack or a flight. The file is written in the example's shape, checked against what is on the bench.

  2. 2

    Run once

    robotics.behavior.run

    One run in the simulator, drawn in the Scene, with the result read from the simulator rather than from the agent.

  3. 3

    Prove

    robotics.sim.scenario

    Trials with the object placed somewhere new each time. The count is written onto the behavior.

  4. 4

    Publish

    Ivy Marketplace

    The behavior goes out with its steps, its test case and its proof, and installs beside the extension it needs.

  5. 5

    A real robot

    not yet

    This version drives the simulator only. A move meant for anything else is refused, and the refusal says so.

A behavior is an agent

Steps are moves

Find an object in the scene, offset a pose, move the arm, open or close the gripper, take a drone off, fly it, land it. The agent editor offers them as steps under its Robot group.

Written from a sentence

Ask the AI Assistant for a pick-and-place, a stack or a flight, and the robot-behavior-authoring skill writes the behavior in the shape of the example and runs it once.

It says what it needs

The behavior's file names the robot it was written for, an arm with a gripper or a drone, and the extension its steps belong to. A behavior for another robot asks you to import that robot first.

Published like any agent

A proven behavior is published to the Ivy Marketplace with its steps, its tests and its proof. Adding one asks for extension-robotics, which comes from the extension marketplace.

Red object → tray · SO-101, step by step

ivy.agent.pick-place-so101

  1. 01Find the red object
  2. 02A pose above the cube
  3. 03Move above the cube
  4. 04The grasp pose
  5. 05Come down on the cube
  6. 06Close the jaws
  7. 07A pose to lift to
  8. 08Lift the cube
  9. 09Find the tray
  10. 10A pose over the tray
  11. 11Carry it over the tray
  12. 12A pose to let go from
  13. 13Lower into the tray
  14. 14Open the jaws

20 of 20 trials in the simulator · MuJoCo 3.17.0

Red object → tray · SO-101, as the marketplace lists it today. See the whole behavior

Proven in the simulator

MuJoCo runs inside the window, in a Worker of its own. A scenario places the object somewhere new on every trial, runs the behavior through the gateway as a real run, and reads the result from the simulator: was the object inside the tray, did the drone land on the pad, how many unintended contacts were counted.

The count is written onto the behavior as its evidence, and the scenario the setup writes passes at nine trials in ten with no contact. Change a height or a speed and the old proof no longer counts. The same step runs as an Evaluate gate in an MLOps pipeline.

What the published behaviors were proven with

9
behaviors on the marketplace
178 / 180
trials succeeded
0
unintended contacts
MuJoCo 3.17.0
in the simulator

Summed from the proof each behavior was published with. The publisher ran these trials; the registry keeps the counts and runs nothing again.

The gate reads every move

One action word for moving

Every move declares device.actuate, so a single policy rule can select all of them, on an arm or a drone.

A move names its target

A move must say whether it is meant for the simulator or a real robot. A rule can let the simulator run freely and hold everything else.

A yes covers a behavior

Approval binds to the behavior, not to a pose that changes on every call. One yes for a behavior covers its moves.

An envelope, written for you

Setting up a workspace can write a laboratory envelope: the arm at most 0.3 m/s and 2 cm above the table, the drone inside a 4 m cage under 1.5 m. A move outside it is refused with its reason.

- name: so101-lab-envelope
  description: The student's arm moves on the table top,
    slowly, after one yes per behavior.
  rules:
    - kind: capability
      action: [device.actuate]
      effect: deny
      when:
        - { path: target, op: neq, value: sim }
        - { path: speed, op: gt, value: 0.3 }
      reason: The move is faster than the laboratory
        envelope allows (at most 0.3 m/s).
    - kind: capability
      action: [device.actuate]
      effect: require
      approval: plan
      scope: workspace
      when:
        - { path: target, op: neq, value: sim }
    - kind: capability
      action: [device.actuate]
      effect: allow
      when:
        - { path: target, op: eq, value: sim }
An excerpt of the arm's envelope that setting up a workspace writes into .punica/policy.yaml.

Bring the robot you teach with

Six arms and two drones from MuJoCo Menagerie. Each is fetched with its meshes and measured on your machine: where an arm's jaws close, how far it reaches, and a bench laid out from that reach. A URDF of your own imports too.

Arms

  • SO-101
  • Koch
  • Franka Panda
  • UR5e
  • xArm 7
  • WidowX 250 S

Drones

  • Skydio X2
  • Crazyflie 2

A behavior is on the marketplace

Moves are planned around the table, the tray and the objects before they are made. A pose nothing free can reach is refused in a sentence instead of being tried.

The Robotics workbench on the Land on the pad mission: a Skydio X2 behavior proven 20 of 20 in the simulator, with three steps, take off to 0.7 m, fly over the pad and land; the drone drawn over an orange pad, its altitude, speed and tilt beside it and the run read as landed; and a chart of the three steps over 8.7 seconds. On the left, the Ivy Marketplace open on its Robotics tab, listing the nine published behaviors.
A Skydio X2 landing on a pad the scenario moves on every trial.

Work with it

The workbench and the Scene

The mission, the behavior as a story with editable heights, the simulator drawn as it runs, and the proof, on one tab. Drag a cube, the tray or a gate across the table and run again.

Missions

Tasks in order, from putting the cube in the tray to going over a wall, each proven by its scenario. A student starts here.

Read a run back

The Timeline draws a trial's trace and puts the arm where it was. Export a run as MCAP and open it in Foxglove.

Program it in Python

The ivyx-robotics client sends every call through ivyx serve, the same door a model uses, so the envelope and the record are the same.

Behaviors on the marketplace

9 behaviors are published today, each with the simulator proof it was published with. Add one from the Robotics tab of the Ivy Marketplace inside IVYX Studio.

Browse all 9 behaviors →

What it does not do

It does not move a real robot yet

This version drives the simulator. A move for any other target is refused, and the refusal says so.

It does not measure force

Neither the simulator nor the SO-101's servos has a force sensor. A force asked for is recorded as asked.

A grasp is held, not gripped

Once the jaws close on an object the simulator holds it to them, without friction. What a proof shows is where the behavior approaches and where it lets go.

It does not see

Finding an object reads the simulator's state. No camera is read.

A proof is the publisher's

The registry keeps the count a behavior was published with and runs nothing again. Prove it on your own bench before you rely on it.