# Drone Landing Simulation (GPS-Denied) Land a drone on a moving platform using only relative sensors. ## Quick Start ### Standalone (1 Terminal) ```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 GPS-Denied (2 Terminals) **Terminal 1 - Gazebo:** ```bash ./scripts/run_ardupilot_sim.sh runway ``` **Terminal 2 - Controller:** ```bash ./scripts/run_ardupilot_controller.sh ``` ## Installation ```bash ./setup/install_ubuntu.sh ./setup/install_ardupilot.sh # Optional for ArduPilot source activate.sh ``` ## Files | File | Description | |------|-------------| | `drone_controller.py` | **Your landing algorithm (used everywhere)** | | `standalone_simulation.py` | PyBullet simulation | | `run_gazebo.py` | Gazebo + ROS 2 interface | | `run_ardupilot.py` | ArduPilot + MAVLink interface | | `config.py` | Configuration settings | | `camera_viewer.py` | Camera feed window | ## Sensors (GPS-Denied) | Sensor | Data | |--------|------| | IMU | Orientation, angular velocity | | Altimeter | Altitude, vertical velocity | | Camera | Downward image | | Landing Pad | Relative position (when visible) | ## Documentation - [Installation](docs/installation.md) - [Architecture](docs/architecture.md) - [ArduPilot Guide](docs/ardupilot.md) - [Gazebo Guide](docs/gazebo.md) - [Drone Logic Guide](docs/drone_guide.md)