79 lines
2.3 KiB
Markdown
79 lines
2.3 KiB
Markdown
# Architecture Overview
|
|
|
|
## Modes
|
|
|
|
### 1. Standalone (1 Terminal)
|
|
|
|
```bash
|
|
python standalone_simulation.py --pattern circular
|
|
```
|
|
|
|
```
|
|
┌────────────────────────────────────────┐
|
|
│ standalone_simulation.py │
|
|
│ PyBullet + Controllers + Camera │
|
|
└────────────────────────────────────────┘
|
|
```
|
|
|
|
### 2. Gazebo + ROS 2 (2 Terminals)
|
|
|
|
```
|
|
Terminal 1 Terminal 2
|
|
┌───────────────────┐ ┌───────────────────┐
|
|
│ Gazebo + Bridge │◄──────►│ run_gazebo.py │
|
|
└───────────────────┘ ROS └───────────────────┘
|
|
```
|
|
|
|
### 3. ArduPilot GPS-Denied (2 Terminals)
|
|
|
|
```
|
|
Terminal 1 Terminal 2
|
|
┌───────────────────┐ ┌───────────────────┐
|
|
│ Gazebo + │◄──────►│ ArduPilot SITL │
|
|
│ ArduPilot Plugin │ JSON │ + MAVProxy │
|
|
└───────────────────┘ └───────────────────┘
|
|
```
|
|
|
|
## Data Flow
|
|
|
|
### Standalone
|
|
```
|
|
Controller → PyBullet → Telemetry → Controller
|
|
```
|
|
|
|
### Gazebo
|
|
```
|
|
Controller → /cmd_vel → Gazebo → /odometry → Controller
|
|
```
|
|
|
|
### ArduPilot
|
|
```
|
|
Gazebo ◄─── JSON/UDP ───► SITL ◄─── MAVLink ───► MAVProxy
|
|
```
|
|
|
|
## Key Files
|
|
|
|
| File | Purpose |
|
|
|------|---------|
|
|
| `drone_controller.py` | Your landing algorithm |
|
|
| `gazebo_bridge.py` | Gazebo ↔ ROS bridge |
|
|
| `camera_viewer.py` | Camera display |
|
|
| `config.py` | Configuration |
|
|
|
|
## GPS-Denied Sensors
|
|
|
|
| Sensor | Data |
|
|
|--------|------|
|
|
| IMU | Orientation, angular velocity |
|
|
| Altimeter | Altitude, vertical velocity |
|
|
| Camera | Downward image |
|
|
| Landing Pad | Relative position |
|
|
|
|
## Topics
|
|
|
|
| Topic | Direction |
|
|
|-------|-----------|
|
|
| `/cmd_vel` | → Drone commands |
|
|
| `/drone/telemetry` | ← Sensor data |
|
|
| `/drone/camera` | ← Camera images |
|