# Drone Landing Simulation (GPS-Denied) Land a drone on a moving platform using only relative sensors (IMU, altimeter, camera). ## Quick Start ### Standalone (1 Terminal - Any Platform) ```bash source activate.sh python standalone_simulation.py --pattern circular ``` ### Gazebo + ROS 2 (2 Terminals) **Terminal 1:** ```bash ros2 launch gazebo/launch/drone_landing.launch.py ``` **Terminal 2:** ```bash source activate.sh python run_gazebo.py --pattern circular ``` ### ArduPilot SITL (2 Terminals) **Terminal 1:** ```bash gz sim -v4 -r ~/ardupilot_gazebo/worlds/iris_runway.sdf ``` **Terminal 2:** ```bash sim_vehicle.py -v ArduCopter -f gazebo-iris --model JSON --console ``` ## Installation ```bash # Ubuntu/Debian ./setup/install_ubuntu.sh # ArduPilot SITL (optional) ./setup/install_ardupilot.sh # Activate environment source activate.sh ``` ## Files | File | Description | |------|-------------| | `standalone_simulation.py` | All-in-one simulation | | `run_gazebo.py` | Gazebo controllers | | `drone_controller.py` | **Your landing algorithm** | | `camera_viewer.py` | Drone camera window | | `config.py` | Configuration | ## Sensors | Sensor | Data | |--------|------| | IMU | Orientation, angular velocity | | Altimeter | Altitude, vertical velocity | | Camera | 320x240 downward image | | Landing Pad | Relative position (when visible) | ## Options ```bash --pattern, -p stationary, linear, circular, square, random --speed, -s Speed in m/s (default: 0.5) ``` ## Documentation | Document | Description | |----------|-------------| | [Installation](docs/installation.md) | Setup guide | | [Architecture](docs/architecture.md) | System overview | | [ArduPilot](docs/ardupilot.md) | ArduPilot SITL | | [Drone Guide](docs/drone_guide.md) | Algorithm guide |