Iacon Autonomics

Mobile gamepad

Driving an environment from a phone

A full controller as a touch surface: two analog sticks, a d-pad, four face buttons, bumpers and pressure triggers. Every control captures its own pointer, so a thumb sliding off a button still releases it — the failure that makes most on-screen pads unusable. Try it with a mouse here; it is built for thumbs in landscape.

Gamepad — attached
Teleopgridworld · episode 0184 · seed 1738 ms
L20.00
L30.00 / 0.00
R20.00
R30.00 / 0.00
L 0.00 0.00R 0.00 0.00L2 0.00 · R2 0.00—
workspace/human/gamepad/mobile-gamepad.tsx
Gamepad — detached
TeleopNo target attached
L20.00
L30.00 / 0.00
R20.00
R30.00 / 0.00
No target: the pad still works, nothing is being driven
Emitted state
{
  "buttons": [],
  "axes": {},
  "triggers": {}
}
onInput fires on every press, release, stick move and trigger change

Pad primitives

The parts, on their own

Each control is usable outside the pad — a single stick for a two-axis actuator, a pressure trigger for a throttle, a labelled button for a discrete action. Accents are identity, never state: cyan for motion, violet for surfaces, teal for system, orange for pressure.

Analog stick
L30.00 / 0.00
Thumb anywhere in the pad takes the stick
Analog stick — sticky
TRIM0.00 / 0.00
sticky: holds position on release, for a trim axis
Analog trigger
L20.00
R20.00
Press high for light, low for full
Pad buttons
Momentary: they report press and release, not clicks

Teleop console

The pad in context

What an operator actually sees on a phone: who is driving above, the controls below. Taking control here is the same act the takeover bar records, so the steps a human drove stay separable from the ones the policy drove.

Phone — landscape
Human drivinggridworld · episode 0184 · seed 17Step 412124 human38 ms
Teleopgridworld · episode 018438 ms
L20.00
L30.00 / 0.00
R20.00
R30.00 / 0.00
Sized to a phone held sideways