Isaac Tools
Account

Your first body file

A body file (robot.isaac.yaml) describes one robot: its boards, motors, sensors, power, rigid links, mounts, buses, and non-electronic parts. Everything else is generated from it. The structural reference is Body file reference.

Start in the editor

Open /build/new and start from one of the reference bodies. The form on the left and the YAML on the right stay in sync; edit either. Every change is validated in a web worker, and when the body is valid the BOM total and the wiring diagram update.

  • Adding a part opens a registry picker with search.
  • Pin dropdowns only offer GPIOs of the chosen board whose capabilities fit the pin (a PWM pin needs a PWM capable GPIO; an output can never be an input-only pin), and never a GPIO used elsewhere on the board.
  • Errors appear next to the section they belong to and in the list under the YAML.

Save a draft to keep working later; drafts are private to your wallet.

The rules the validator checks

  • Exactly one primary board.
  • Every GPIO is used at most once per board.
  • Every part id exists in the registry (the error names the file to add).
  • Actuators and sensors reference boards that exist; bus pins fit the board's pin capabilities.
  • Each role appears once, except button, touch, and encoder.
  • Links and joints form one tree.
  • tracked and diffdrive robots have two drive motors or a drive shortcut.
  • A companion has display, audio_in, audio_out, motion, and battery roles.
  • skills.interface matches the class.

The body hash

bodyHash = keccak256(canonicalJSON(body without calibration)). It is the robot's identity on-chain: registering a robot records it, and every session recording carries it. Calibration is excluded so recalibrating does not change identity.

Export

"Export zip" downloads the body file with the BOM, wiring diagram, pinout, sim model, calibration profile, and assembly guide. Firmware scaffolds and the ROS 2 export come from the command line:

pnpm isaac gen bodies/my-robot/robot.isaac.yaml --out out/my-robot