Files
RDC_Simulation/README.md

4.5 KiB

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

Windows (Standalone - No ROS 2 Required)

. .\activate.ps1
python standalone_simulation.py

# With moving rover
python standalone_simulation.py --pattern circular --speed 0.3

Linux (Full ROS 2 Setup)

source activate.sh

# Terminal 1: Simulator
python simulation_host.py

# Terminal 2: ROS bridge
python ros_bridge.py

# Terminal 3: Controllers
python controllers.py --pattern circular --speed 0.3

Architecture

┌─────────────────────────────────────────────────────────────────────────┐
│  STANDALONE MODE (Windows)              FULL MODE (Linux + ROS 2)       │
│  ─────────────────────────              ──────────────────────────      │
│                                                                         │
│  ┌──────────────────────┐     ┌───────────────┐    ┌───────────────┐   │
│  │standalone_simulation │     │simulation_host│◄──►│  ros_bridge   │   │
│  │  (All-in-one)        │     └───────────────┘    └───────┬───────┘   │
│  └──────────────────────┘                                  │           │
│                                                  ┌─────────▼─────────┐ │
│                                                  │   controllers.py  │ │
│                                                  │ (Drone + Rover)   │ │
│                                                  └───────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘

Files

File Description
standalone_simulation.py Windows: All-in-one simulation (no ROS 2)
simulation_host.py PyBullet physics simulator
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

# Standalone (Windows)
python standalone_simulation.py --pattern circular --speed 0.3

# Full mode (Linux)
python controllers.py --pattern circular --speed 0.3

Options:
  --pattern, -p   Rover pattern: stationary, linear, circular, square
  --speed, -s     Rover speed in m/s (default: 0.5)
  --amplitude, -a Rover amplitude in meters (default: 2.0)

GPS-Denied Sensors

The drone has no GPS. Available 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

Document Description
Installation Setup for Ubuntu, macOS, Windows
Architecture System components and data flow
Protocol Sensor data formats
Drone Guide How to implement landing logic
Rover Controller Movement patterns
PyBullet PyBullet-specific setup
Gazebo Gazebo-specific setup (Linux only)

Platform Support

Platform Standalone Full (ROS 2) Gazebo
Windows ⚠️ Complex
Linux
macOS ⚠️ Limited

Getting Started

  1. Windows: Run python standalone_simulation.py
  2. Linux: Read docs/drone_guide.md
  3. Edit drone_controller.py to implement your algorithm
  4. Test with different rover patterns