# 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 python camera_viewer.py # View camera ``` ### ArduPilot GPS-Denied (2 Terminals) **Terminal 1:** ```bash ./scripts/run_ardupilot_sim.sh camera ``` **Terminal 2:** ```bash sim_vehicle.py -v ArduCopter -f gazebo-iris --model JSON --console # GPS-denied mode: param set ARMING_CHECK 0 mode stabilize arm throttle force ``` ## Installation ```bash ./setup/install_ubuntu.sh ./setup/install_ardupilot.sh # Optional source activate.sh ``` ## Files | File | Description | |------|-------------| | `standalone_simulation.py` | All-in-one simulation | | `run_gazebo.py` | Gazebo controllers | | `scripts/run_ardupilot_sim.sh` | ArduPilot launcher (auto GPU) | | `camera_viewer.py` | Camera feed window | | `drone_controller.py` | **Your landing algorithm** | | `config.py` | Configuration | ## Sensors (GPS-Denied) | Sensor | Data | |--------|------| | IMU | Orientation, angular velocity | | Altimeter | Altitude, vertical velocity | | Camera | Downward image | | Landing Pad | Relative position (when visible) | ## Options ```bash --pattern stationary, linear, circular, square, random --speed Speed in m/s (default: 0.5) ``` ## Docs - [Installation](docs/installation.md) - [Architecture](docs/architecture.md) - [ArduPilot](docs/ardupilot.md) - [Gazebo](docs/gazebo.md)