← Project indexROBOTICS / 14 OF 16
AGIBOT G2 / Lingxi X2 · ETHANYEANG / SHENZHEN

AGIBOT G2 / Lingxi X2

A local console for AGIBOT G2: a 3D skeleton and joint panel in the browser, and a headset view that pins five camera feeds in space with controller-driven arms.

Console run · headset page and joint panel

Screen capture from 2026-10-19 — source 1:16–2:30, played here at 2× (37 s): the headset page in tablet mode (same interface as in the headset; tablet mode is easier to record). Five camera panels sit pinned in space, the joint panel on the right tracks all 22 joints, and the status bar reads unlocked, both arms following.

Lingxi X2 · simulation scenes · 4:09

Chapter cards run through basic locomotion, manipulation, navigation and fault diagnosis, ending on the real X2 Ultra beside its simulation twin. Kept whole; only re-compressed.

THE PROJECT

A local console I wrote for AGIBOT G2: the backend talks to the robot over the official GDK, and the front end is a single web process that the desktop and headset views share.

Desktop: 22 joints on one screen

22 body joints (5 waist, 3 head, 7 per arm), two 10-DOF hands, the chassis and seven camera feeds live on one page: drag sliders, jog a joint, save and recall poses. The 3D view layers the URDF's 69 visual meshes over a joint skeleton and follows the real angles.

Headset: camera panels pinned in space

The /xr page is where it differs: five camera feeds (head, left eye, right eye, left hand, right hand) are panels pinned in 3D space, each refreshing independently, so you turn your head to compare them. Hold A or X and that arm follows the controller; release and it stops. The trigger only closes or opens the hand; the grip button drags a panel elsewhere. A status board follows your gaze and shows whether the robot is unlocked.

Safety is designed in

Locked by default, auto-locking after 60 seconds idle; a single command is capped at 0.35 rad and 0.5 rad/s and clamped again against the URDF limits. The chassis is hold-to-drive — the server sends zero velocity if it stops hearing refreshes for 0.35 s. When the robot loses power the GDK keeps returning its last frame, so the UI shows the age of that data and turns red past three seconds; otherwise stale numbers read as a live robot.

This page records platform integration and a teleoperation interface: every motion came from a person, not an autonomous policy. There is also a chaptered reel of Lingxi X2 simulation scenes, closing on the real X2 Ultra beside its simulation twin.

Experiments describe their actual environment and scope. Check the linked source for implementation details, license, current support and reproduction steps.