A small, opinionated, human-readable language for describing robot intent.
End-to-end industrial-profile programs. Each scenario ships as three companion files: the natural-language prompt (*.en.txt), the URML program (*.urml.yaml), and a self-contained capability manifest (*.manifest.yaml) with US-federal-compliant provenance.
simple-pick-and-place— the minimum-viable industrial example for first-time integrators. One pick-place cycle written with the core twelve: navigate to a pick bin, detect a red widget, grasp it, move to the red kitting tray, place it, return home, report cycle completion to the line controller. Modeled on the line-reconfiguration scenario inMANIFESTO.md§Motivating Scenarios. Retained as the documented composition-equivalent of the industrial primitives below.pick-place-tool-change— the same line story written with the industrial profile's own Layer-2 verbs (RFC-0013): wait for the safety door,swap_toolto fit the wide gripper,pick_fromthe bin,place_atthe red tray, report. Showspick_from/place_at/swap_toolend to end;swap_toolrides the declaredtool_change_stationdocking service.kawasaki-as-program—call_program(RFC-0015): wait for the safety door, then invoke two commissioned on-controller Kawasaki AS-language programs by name (pick_place_cycle,home_all), and report. The program names are URML-facing identifiers the adapter maps to the real AS programs, declared in the manifest'sprograms:block; an undeclared name is rejected at validation. This is the binding the Kawasaki-Robotics maintainer endorsed on khi_ros2 issue #9. A fourth companion file (*.echo-response.json) drives the hermetic hero SVG (docs/assets/kawasaki-as-program-to-motion.svg), regenerated withmake kawasaki-demo-record.
urml validate simple-pick-and-place.urml.yaml \
-m simple-pick-and-place.manifest.yaml --profile industrial
urml validate pick-place-tool-change.urml.yaml \
-m pick-place-tool-change.manifest.yaml --profile industrial
Each companion manifest declares third-party-audited US provenance, so the bundled default policy (RFC-0004) accepts it. Pass --no-policy to skip Pass 5 when exercising programs against manifests without provenance blocks. To watch the tool-change example run on the hermetic mock:
urml execute pick-place-tool-change.urml.yaml \
-m pick-place-tool-change.manifest.yaml --profile industrial --no-policy
See the examples convention in /examples/README.md.