Meccanoid Embodied Lab

A browser-only simulation of a Meccanoid G15-style two-wheeled robot. Everything on this Space runs in your browser: a three.js arena, a simulated chest camera and microphone, and a set of experimental controllers you can switch between and compare.

Simulation only. No physical robot, camera, microphone, Bluetooth link or motor is connected. The body is a kinematic model with nominal dimensions, not a measured digital twin.

What you can run here

What does not work on this static copy

Source, model and licences

Licensing. This Space is MIT except where noted (LICENSE). The Human Cortex component is GPL-3.0-or-later, and the full GPL text sits next to it: human-cortex/LICENSE and js/human-controller.LICENSE.txt for js/human-controller.js. Third-party code, models and data keep their own licences; see THIRD_PARTY_NOTICES.md:

Methods and local setup (from the original deployment)

Live site: https://codex.opentransformers.online/meshdirect/releases/meccanoid-20260921/

An actual browser-rendered, simulation-only Meccanoid G15 experiment. It has a full FlyBrain spiking-network condition, explicit ablation controls, a deliberately simple reactive baseline, manual wheel control, and a shared room controlled through private SG MCP tools. The website provides a rendered chest-camera view, an arena overview, a close-up, telemetry, event logs and labelled replay.

What runs where

No physical camera, Bluetooth connection, microphone or motor is opened by the robot simulation. No AGILLM training process was changed and no paid compute was provisioned.

Run the local neural simulation

From the root of the source repository (GitHub release), run:

python3 -m http.server 8000 --bind 127.0.0.1 --directory site

Open http://127.0.0.1:8000/ in a WebGL2/Web Worker capable browser. Do not open index.html as a file URL. This runs local simulation without an API key. The live chat tab needs the deployed shared service; it is not a promise that the remote chat connection works offline. The included recorded replay works locally.

Reproduce the neural and physics tests

With Node.js:

node --expose-gc tests/benchmark.cjs

This runs the same full LIF worker as the browser, not a smaller substitute circuit. The report contains 20 passing assertions and 18 trials: six conditions, three deterministic starting positions, 800 neural/body ticks each. A connected run was repeated and produced the identical state/output trace. Timings were measured on the GETH CPU, not on a phone or the physical robot.

Measured results are in results/benchmark.json and per-tick samples in results/neural-traces.json.

The connected gain-50 condition moved 1.57, 2.78 and 2.75 nominal metres but reached the target in 0/3 starts. Original gain 1, disconnected recurrent edges, silenced descending neurons and disconnected inputs each produced zero movement in the tested regime. The naive reactive baseline also failed to reach the target in these three starts; it is a weak comparator, not a validated navigation stack.

What the neural experiment models

Upstream source: https://github.com/snedea/flybrain Pinned upstream commit: 9191824d17871b7851645782d53d23f213ddb938.

The graph contains 139,255 simplified LIF neurons and 2,698,236 signed weighted edges. Exact anatomical descending pools contain 647 left, 650 right and 8 centre neurons. The worker and mapping were reused from the previous 14 September FlyBrain experiment. MIT attribution is retained in UPSTREAM-LICENSE.md.

Synthetic left/right beacon signals, contact and tonic inputs drive coarse annotated sensory pools. These pools are disjoint from the descending readout pools. The controller does not receive raw rendered RGB camera pixels. The camera view is a separate observation channel available to the assistant and user.

The decoder reads only descending-neuron firing. It does not read target coordinates or obstacle positions. It filters left/right activity and converts it to a forward velocity and differential wheel velocity. The moving condition uses recurrent gain 50. That gain and the sensory/body mappings are engineering choices, not biological calibration. Original gain 1 remains selectable.

One neural tick is mapped to 0.05 nominal simulator seconds. This is an arbitrary engineering time mapping, not a measured physiological timestep. Distances and velocities are nominal scene units labelled in metres; no physical motor speed was calibrated.

Body and camera limitations

This is a planar differential-drive kinematic model with circle-to-box collision checks. It is not a complete measured digital twin, rigid-body dynamics model, balance controller or grasping simulator. Wheel radius, track width, collision radius, joint axes and camera placement are illustrative. There is no slip, torque, battery or floor-friction model. Collision prevents translation; it does not magically reflect the heading or steer to the goal. The robot rolls rather than lifting its feet.

The parametric 3D model is intended to make the robot, four arm joints and camera intelligible. The chest-camera and arena screenshots are rendered with Three.js from the same immutable recorded pose and tick. They are not image-generated demonstrations or pre-scripted trajectories.

Chat-control interface

Backend name on SG1 and SG2: meccanoid-sim.

Core tools:

The observer's ID is valid for at most 180 seconds and only while the room revision remains unchanged. A stale observation is rejected. Each mutation has an idempotent request ID. A completed request must not repeat the motion when retried. Invalid parameters fail rather than being translated to arbitrary hardware commands. Stop does not require an observation. Motion expiry zeros wheel commands even if the next chat message never arrives. Service restart starts stopped and never resumes a pending movement.

Commands use the existing private SG connection. The public spectator is read-only. The service has no physical actuation or arbitrary shell execution tool. The private mesh service is distinct from the public static release path.

The successful independently verified chat-navigation replay travelled 3.81 nominal metres, reached within 0.2581 m of the target, and recorded zero collisions. It used rendered observations and simulator telemetry. This is not a camera-only general-navigation benchmark. Its motion time was 14.95 nominal seconds; actual chat/tool/observation wall time was much longer. One successful route is not evidence of reliable navigation in arbitrary rooms.

A separate lead-assistant visual test inspected real rendered frames, turned and drove 1.295 m through a gap without collisions. That route was interrupted by a service update and is not counted as a second successful navigation run. The saved successful independent replay remains available separately.

Additional experimental modules

An independently contributed tiny transformer and local audio tools may be included in the source tree. Their own reports and interface labels state their status. The tiny controller is map-informed demonstration imitation, not a general language model or camera-only policy. The robot simulation never starts microphone capture automatically. Generated speech or synthetic audio-loop tests must not be described as hearing a real person or playing a physical robot speaker.

Deployment and evidence

The published report links neural trials, browser checks and recorded chat evidence. The browser tests use Playwright Chromium because a direct Browser/IAB tool is not exposed in the builder session. They exercise desktop/mobile views, actual neural movement and interventions, pause/reset/manual timeout, backend-to-frontend pose agreement and replay labels. Saved screenshots are actual browser captures.

The isolated service runs as an unprivileged meccanoid-sim user with bounded CPU/RAM and read-only code. Only simulation state, observations and results are writable. Existing training, laptop controls, nginx authentication and firewall configuration were not modified.