# AiRO AI Robotics Lab functional digital twin

This station runs application-level Python against AiRO's virtual robot driver. It does not emulate Raspberry Pi 5, RDK BPU, Hailo or internal arm-controller firmware, and never connects to physical hardware.

## Robot
- Exact six-axis origins, axes, limits, visual transforms and meshes: Elephant Robotics `mycobot_ros2`, `humble`, `mycobot_description/urdf/mycobot_280_rdkx5/`.
- Source: https://github.com/elephantrobotics/mycobot_ros2/tree/humble/mycobot_description/urdf/mycobot_280_rdkx5
- Local vendor URDF: [mycobot_280_rdkx5.urdf](mycobot_280_rdkx5.urdf).
- Geometry and textures copied locally. The browser-ready GLB converts vendor polygon primitives to supported faces, resolves an invalid wrist material binding to its existing material, and uses Draco mesh compression; see [LICENSE.txt](LICENSE.txt), BSD-2-Clause, copyright 2020 Elephant Robotics.
- Runtime joint/mesh source hashes: [ASSET-SHA256.json](ASSET-SHA256.json).
- Pi/workstation and pump props reuse AiRO's existing Lab packing assets. Their prior credits remain unchanged.

## Python
- Locally hosted Pyodide 314.0.7 / CPython WebAssembly. Official core release SHA-256 checked against GitHub's release digest.
- [Runtime provenance](../python/SOURCE.json), [Pyodide licence](../python/LICENSE.txt), [CPython licence](../python/CPYTHON-LICENSE.txt).
- https://pyodide.org/en/stable/usage/webworker.html
- `airo_lab` is AiRO's virtual driver, not the vendor's `pymycobot` package. Programs use `await` for asynchronous motion and camera calls. No hardware port or robot address is exposed.

## Deliberate approximations
- AiRO adds a 50 mm suction tool fixture; its dimensions are not a calibrated vendor tool definition.
- Numerical inverse kinematics and interpolated joints; conservative table/link-origin checks, not complete mesh collision or motor/torque simulation.
- Simplified suction seal and rigid object attachment; one-dimensional gravity on release, with plane/bin-floor contact. No vacuum dynamics or contact-force model.
- Fixed virtual overhead orthographic camera, calibrated to the block top plane. Colour components are measured from actual rendered pixels, without using block labels/positions. This is colour thresholding, not neural AI, Hailo or BPU inference.
- Virtual-time speed settings are not measured physical servo speeds.
- Circuit connections determine power, USB, camera and pump availability. USB/CSI/PCIe represent whole cables, not electrical pin-level protocols. AI HAT presence does not imply accelerator execution.
- One arm station is shown. Commercial package quantities and procurement BOM are unchanged.

Physical validation still requires the exact purchased robot/tool, measured camera/tool calibration, vendor SDK integration, power checks and supervised prototype tests.
