23c619c4ddee173c20931ac2ba14766f0415e82b
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)
source activate.sh
python standalone_simulation.py --pattern circular --speed 0.3
Gazebo + ROS 2 (Linux/WSL2)
Terminal 1:
ros2 launch gazebo/launch/drone_landing.launch.py
Terminal 2:
source activate.sh
python run_gazebo.py --pattern circular
python camera_viewer.py # Optional: view camera feed
ArduPilot SITL (Realistic Flight Controller)
Terminal 1:
source ~/ardu_ws/install/setup.bash
ros2 launch ardupilot_gz_bringup iris_runway.launch.py
Terminal 2:
mavproxy.py --console --map --master=:14550
Installation
# 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
# 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 | Full setup guide |
| Architecture | System overview |
| ArduPilot | ArduPilot SITL guide |
| Gazebo | Gazebo guide |
Description
Languages
Python
66.3%
Shell
25.4%
PowerShell
4.5%
Dockerfile
3.8%