107 lines
2.5 KiB
Markdown
107 lines
2.5 KiB
Markdown
# Drone Landing Simulation (GPS-Denied)
|
|
|
|
A GPS-denied drone landing simulation with multiple backends. Land a drone on a moving platform using only relative sensors (IMU, altimeter, camera).
|
|
|
|
## Quick Start
|
|
|
|
### Standalone Mode (No ROS 2 - Any Platform)
|
|
|
|
```bash
|
|
source activate.sh
|
|
python standalone_simulation.py --pattern circular --speed 0.3
|
|
```
|
|
|
|
### Gazebo + ROS 2 (Linux/WSL2)
|
|
|
|
**Terminal 1:**
|
|
```bash
|
|
ros2 launch gazebo/launch/drone_landing.launch.py
|
|
```
|
|
|
|
**Terminal 2:**
|
|
```bash
|
|
source activate.sh
|
|
python run_gazebo.py --pattern circular
|
|
python camera_viewer.py # Optional: view camera feed
|
|
```
|
|
|
|
### ArduPilot SITL (Realistic Flight Controller)
|
|
|
|
**Terminal 1:**
|
|
```bash
|
|
source ~/ardu_ws/install/setup.bash
|
|
ros2 launch ardupilot_gz_bringup iris_runway.launch.py
|
|
```
|
|
|
|
**Terminal 2:**
|
|
```bash
|
|
mavproxy.py --console --map --master=:14550
|
|
```
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
# Ubuntu/Debian (includes ROS 2 + Gazebo)
|
|
./setup/install_ubuntu.sh
|
|
|
|
# With ArduPilot SITL
|
|
./setup/install_ardupilot.sh
|
|
|
|
# Activate environment
|
|
source activate.sh
|
|
```
|
|
|
|
| Platform | Install Script |
|
|
|----------|---------------|
|
|
| Ubuntu/Debian | `./setup/install_ubuntu.sh` |
|
|
| ArduPilot SITL | `./setup/install_ardupilot.sh` |
|
|
| Arch Linux | `./setup/install_arch.sh` |
|
|
| macOS | `./setup/install_macos.sh` |
|
|
| Windows | `.\setup\install_windows.ps1` |
|
|
|
|
## Files
|
|
|
|
| File | Description |
|
|
|------|-------------|
|
|
| `standalone_simulation.py` | **All-in-one** (no ROS 2) |
|
|
| `run_gazebo.py` | Gazebo controllers |
|
|
| `run_ardupilot.py` | ArduPilot launcher |
|
|
| `camera_viewer.py` | Drone camera window |
|
|
| `drone_controller.py` | **Your landing algorithm** |
|
|
| `config.py` | Configuration |
|
|
|
|
## Sensors Available
|
|
|
|
| Sensor | Data |
|
|
|--------|------|
|
|
| IMU | Orientation (roll, pitch, yaw), angular velocity |
|
|
| Altimeter | Altitude, vertical velocity |
|
|
| Velocity | Estimated velocity (x, y, z) |
|
|
| Camera | Downward-facing image |
|
|
| Landing Pad | Relative position when visible |
|
|
|
|
## Configuration
|
|
|
|
Edit `config.py` to customize:
|
|
- Drone/rover positions
|
|
- Controller gains (Kp, Kd)
|
|
- Camera settings
|
|
- Landing thresholds
|
|
|
|
## Command Line Options
|
|
|
|
```bash
|
|
# Movement patterns
|
|
--pattern, -p stationary, linear, circular, square, random
|
|
--speed, -s Speed in m/s (default: 0.5)
|
|
--amplitude, -a Amplitude in meters (default: 2.0)
|
|
```
|
|
|
|
## Documentation
|
|
|
|
| Document | Description |
|
|
|----------|-------------|
|
|
| [Installation](docs/installation.md) | Full setup guide |
|
|
| [Architecture](docs/architecture.md) | System overview |
|
|
| [ArduPilot](docs/ardupilot.md) | ArduPilot SITL guide |
|
|
| [Gazebo](docs/gazebo.md) | Gazebo guide | |