Drone Landing Simulation (GPS-Denied)
A GPS-denied drone landing simulation using relative sensors (IMU, altimeter, camera, landing pad detection) with PyBullet and Gazebo simulators.
Quick Start
Platform Compatibility
| Feature |
Ubuntu |
Arch |
macOS |
Windows |
| Standalone |
✅ |
✅ |
✅ |
✅ |
| ROS 2 |
✅ |
⚠️ |
❌ |
❌ |
| Gazebo |
✅ |
⚠️ |
❌ |
❌ |
All platforms support standalone mode - no ROS 2 required!
Files
| File |
Description |
standalone_simulation.py |
All-in-one simulation (no ROS 2) |
simulation_host.py |
PyBullet simulator (ROS 2 mode) |
ros_bridge.py |
UDP ↔ ROS 2 bridge |
gazebo_bridge.py |
Gazebo ↔ ROS 2 bridge |
controllers.py |
Runs drone + rover controllers |
drone_controller.py |
Drone landing logic (edit this) |
rover_controller.py |
Moving landing pad |
Controller Options
GPS-Denied Sensors
| Sensor |
Data |
| IMU |
Orientation, angular velocity |
| Altimeter |
Altitude, vertical velocity |
| Velocity |
Estimated horizontal velocity |
| Camera |
320x240 downward-facing image |
| Landing Pad |
Relative position when visible |
Documentation
Getting Started
- Run
python standalone_simulation.py
- Watch the drone land automatically
- Edit
drone_controller.py to implement your own algorithm
- Test:
python standalone_simulation.py --pattern circular