95 lines
3.2 KiB
Markdown
95 lines
3.2 KiB
Markdown
# Architecture Overview
|
|
|
|
## Operation Modes
|
|
|
|
### 1. Standalone (Any Platform)
|
|
|
|
Single process, no ROS 2 required:
|
|
|
|
```bash
|
|
python standalone_simulation.py --pattern circular
|
|
```
|
|
|
|
```
|
|
┌────────────────────────────────────────┐
|
|
│ standalone_simulation.py │
|
|
│ ┌──────────────────────────────────┐ │
|
|
│ │ PyBullet Physics + Camera │ │
|
|
│ │ Built-in Controller │ │
|
|
│ │ Rover Movement │ │
|
|
│ └──────────────────────────────────┘ │
|
|
└────────────────────────────────────────┘
|
|
```
|
|
|
|
### 2. Gazebo + ROS 2 (2 Terminals)
|
|
|
|
**Terminal 1:**
|
|
```bash
|
|
ros2 launch gazebo/launch/drone_landing.launch.py
|
|
```
|
|
|
|
**Terminal 2:**
|
|
```bash
|
|
python run_gazebo.py --pattern circular
|
|
```
|
|
|
|
```
|
|
Terminal 1 Terminal 2
|
|
┌───────────────────┐ ┌───────────────────┐
|
|
│ Gazebo + Bridge │◄──────►│ run_gazebo.py │
|
|
│ (Physics) │ ROS │ + Controllers │
|
|
└───────────────────┘ └───────────────────┘
|
|
```
|
|
|
|
### 3. ArduPilot SITL (2 Terminals)
|
|
|
|
**Terminal 1:**
|
|
```bash
|
|
ros2 launch ardupilot_gz_bringup iris_runway.launch.py
|
|
```
|
|
|
|
**Terminal 2:**
|
|
```bash
|
|
mavproxy.py --console --map --master=:14550
|
|
```
|
|
|
|
```
|
|
┌─────────────────────────────────────────────┐
|
|
│ Single Launch Command │
|
|
│ (Starts SITL + Gazebo + RViz) │
|
|
├─────────────────────────────────────────────┤
|
|
│ ArduPilot SITL ◄──► Gazebo ◄──► ROS 2 │
|
|
│ ▲ │
|
|
│ │ /ap/* topics │
|
|
│ ▼ │
|
|
│ MAVProxy (GCS) │
|
|
└─────────────────────────────────────────────┘
|
|
```
|
|
|
|
## Key Components
|
|
|
|
| Component | Description |
|
|
|-----------|-------------|
|
|
| `drone_controller.py` | Your landing algorithm |
|
|
| `gazebo_bridge.py` | Gazebo ↔ ROS bridge |
|
|
| `mavlink_bridge.py` | MAVLink commands |
|
|
| `camera_viewer.py` | Camera display |
|
|
|
|
## ROS 2 Topics
|
|
|
|
| Topic | Direction | Description |
|
|
|-------|-----------|-------------|
|
|
| `/drone/telemetry` | ← | Sensor data (JSON) |
|
|
| `/cmd_vel` | → | Velocity commands |
|
|
| `/drone/camera` | ← | Camera images |
|
|
| `/rover/telemetry` | ← | Landing pad position |
|
|
|
|
## ArduPilot Topics
|
|
|
|
| Topic | Type |
|
|
|-------|------|
|
|
| `/ap/pose/filtered` | Position |
|
|
| `/ap/twist/filtered` | Velocity |
|
|
| `/ap/imu/filtered` | IMU |
|
|
| `/ap/battery` | Battery |
|