tahamajs/CPS / Files /ComputerAssignments /CA2 /FINAL_PROJECT_DOCUMENTATION.md
tahamajs's picture
|
download
raw
2.57 kB
# AirMouse Pro — Master System Architecture & Verification Report
**Project Root:** `~/Documents/uni/CPS/Files/ComputerAssignments/CA2`
**System:** Cyber-Physical System (CPS) AirMouse Pro
**Version:** 3.0.0
---
## 1. Executive Summary
AirMouse Pro is a high-precision, low-latency cyber-physical system transforming an Android smartphone into a 3D air-mouse and spatial gesture controller for desktop operating systems. The system comprises four tightly integrated subsystems:
1. **Android Client (Kotlin):** Sensor reading, Madgwick AHRS fusion (beta=0.041), 3-step calibration (Gyro bias, Mag figure-8, Accel 6-position), motion gesture engine, Perfetto trace integration.
2. **Go Desktop Server:** High-throughput native server supporting TCP (9090), WebSocket (9091), UDP Discovery (9092), and REST Admin API (8081).
3. **Python MCP Server & Bridge (`airmouse_server_mcp.py`):** FastMCP tool suite with 444 system, ADB, PyAutoGUI, calibration, build, and Perfetto analysis tools.
4. **Antigravity Workspace (.agents):** 22 domain skills, development rules, dynamic memory state, and extended 5-lifecycle hook engine.
---
## 2. Mathematical Models & Sensor Fusion
- **Madgwick AHRS Gain (beta):** Fixed at 0.041 for optimal gyro drift rejection and accelerometer stability.
- **Gyro Units:** Raw rad/s directly from Android `SensorManager` without unit double conversion.
- **Gesture Engine Thresholds:**
- Click: Angular speed > 8.0 rad/s on Gyro Y-axis (300ms cooldown).
- Double Click: Interval < 400ms between consecutive left clicks.
- Scroll: Acceleration > 8.0 m/s^2 (2.0 m/s^2 debounce threshold, 100ms cooldown).
- Right-Click: Roll tilt > 45° held for >= 500ms.
- **Cursor Motion Pipeline:** Power-law non-linear acceleration combined with Kalman predictive blending.
---
## 3. Network Architecture & Protocols
- **TCP Socket (Port 9090):** Primary newline-delimited JSON stream for orientation and commands with 500ms ACK retransmissions (max 3 retries).
- **WebSocket (Port 9091):** Browser dashboard and Web UI event channel.
- **UDP Discovery (Port 9092):** Auto-discovery of local PC servers on LAN.
- **REST Admin API (Port 8081):** Runtime status inspection and dynamic configuration.
---
## 4. Verification & QA Status
- **Environment & Build:** Java, Go, Android SDK, and Python syntax verified 100%.
- **Go Native Server:** `-race` detector clean, unit tests passing.
- **Android Client:** Gradle assembleDebug & assembleRelease compiled cleanly.
- **MCP Server:** Syntax check and FastMCP stdio interface verified.

Xet Storage Details

Size:
2.57 kB
·
Xet hash:
dc15acc3ada84bef6022ab08ecc00c8d3cde7fb1b103d2237b84dbee6f81ced7

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.