Software for an Umbratek UTRA 6-1000 six-axis arm on its cart: a jog panel in the browser that moves it one exact step at a time or to a pose planned by dragging, programs taught by hand and run under the PC's supervision, a command-line helper, and a simulator and a MuJoCo twin to try it all without the arm.
Without the arm, against the simulator (Python 3.8 or later; the panel and the simulator need only its standard library):
git clone --recurse-submodules https://github.com/Inventor22/umbratek-code
cd umbratek-code
python tools/utra_sim.py # a stand-in for the arm's controller
python scripts/jog_server.py 127.0.0.1 # in another window; then open http://127.0.0.1:8765
With the arm: wire it up and join its network (docs/connecting.md), then:
python scripts/arm.py find # find the controller on this PC's networks
python scripts/jog_server.py 192.168.2.1
The panel's first start downloads three.js (about 2 MB) for its 3D view and checks it against pinned hashes; after that it works offline. In a clone made without --recurse-submodules, git submodule update --init fetches Umbratek's SDK.
A click moves a joint exactly one step from where the last click sent it, so quick clicks add up instead of getting lost. Drag a joint's ring in the 3D view and an amber shadow arm shows the pose; nothing moves until Move, which first checks the whole path for collisions with the arm itself, its cart and the floor. More in the jog panel.
In Tool mode, drag an arrow to slide the tool along X, Y or Z, or a ring to turn it about that axis. The joints follow by inverse kinematics, keeping the arm's elbow and wrist as they are, and Move takes the arm there, turning all its joints together.
Hold for freedrive, guide the arm by hand, and press Record here at each pose: it joins the program as a move. The server runs programs itself, with straight lines, waits, I/O and steps the brain plans, and checks every move before it's sent. More in programs, teaching and the cell.
A planned move asks the brain, a separate process, for its path, and a learned skill for its next short burst of motion. The jog server checks every answer, whole, before anything moves (joint limits, collisions with the arm, its cart, the floor, the tool and the keep-out zones, and that the arm is still where the brain was told it was), refuses it with its reasons if any part fails, and caps its speed. The stub brain (python brain/stub/stub_brain.py, standard library only) is the example: it plans straight there or up and over what's in the way, and has one scripted skill. More in the brain interface and the brain's README.
- Keep the E-stop within reach whenever the motors are enabled.
- Clear the arm's whole reach before running
homeor the notebook demos. They move several joints through large arcs at up to about 30 deg/s. jogandhomeleave the motors enabled, holding position. Use Umbratek Studio to disable them, or press the E-stop, which cuts power to the arm; after releasing the E-stop, runreset.
| Page | What's in it |
|---|---|
| Connecting to the arm | Wiring, booting and networking the controller; Umbratek Studio |
| The jog panel | Steps and speeds, the redline, planning a pose, the tool gizmo, collision checks, STOP and the watchdogs |
| Programs, teaching and the cell | Programs and runs, freedrive, tools, frames, targets and keep-out zones, planned and learned steps, the server's API |
| Controlling the arm from Python | scripts/arm.py and Umbratek's SDK |
| Troubleshooting | No arm found, E-stop and servo errors, network clashes, a joint past its limit |
| What's where | Every folder and file in this repo |
| The brain | The stub brain and the twin, and how to try them |
| Tests and the simulator | The suites, their environments, and tools/utra_sim.py |
| Decisions | Why it's built the way it is |
| The pictures | How the pictures above are filmed, and how to film them again |
CAD for the mounting plate and gripper, and the UTRA quick start guide, are in Inventor22/umbratek-cad.



