# Architecture ## System Overview ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Gazebo │◄───►│ ArduPilot SITL │◄───►│ Controller │ │ (Physics) │JSON │ (Flight Ctrl) │MAV │ (Your Logic) │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ ▼ ▼ ~/ardupilot_gazebo src/drone_controller.py ``` ## Terminal Layout **Terminal 1:** ``` ./scripts/run_ardupilot_sim.sh │ ▼ Gazebo + ArduPilot Plugin ``` **Terminal 2:** ``` ./scripts/run_ardupilot_controller.sh │ ├── ArduPilot SITL (background) │ └── run_ardupilot.py │ └── src/drone_controller.py ``` ## Data Flow ``` Gazebo ◄─── JSON/UDP ───► SITL ◄─── MAVLink ───► Controller │ │ │ │ Physics │ Flight control │ Your logic │ Sensors │ EKF │ 3-phase mission │ Rendering │ Stabilization │ QR detection ▼ ▼ ▼ Display Attitude/Position Commands ``` ## Key Files | File | Purpose | |------|---------| | `src/drone_controller.py` | 3-phase mission logic | | `scripts/run_ardupilot.py` | MAVLink interface | | `src/mavlink_bridge.py` | MAVLink utilities | | `src/gazebo_bridge.py` | Gazebo ROS bridge | | `config.py` | Configuration | ## 3-Phase Mission ``` ┌────────┐ QR Found ┌─────────┐ Timeout ┌──────┐ │ SEARCH │───────────────►│ COMMAND │──────────────►│ LAND │ └────────┘ └─────────┘ └──────┘ │ │ │ ▼ ▼ ▼ Detect QR Send to rover Track & descend ```