80 lines
2.5 KiB
Markdown
80 lines
2.5 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
# Install (choose your platform)
|
|
./setup/install_ubuntu.sh # Ubuntu/Debian
|
|
./setup/install_arch.sh # Arch Linux
|
|
./setup/install_macos.sh # macOS
|
|
.\setup\install_windows.ps1 # Windows (PowerShell)
|
|
|
|
# Activate and run
|
|
source activate.sh # Linux/macOS
|
|
. .\activate.ps1 # Windows
|
|
|
|
python standalone_simulation.py --pattern circular --speed 0.3
|
|
```
|
|
|
|
## 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
|
|
|
|
```bash
|
|
python standalone_simulation.py --help
|
|
|
|
Options:
|
|
--pattern, -p stationary, linear, circular, square
|
|
--speed, -s Speed in m/s (default: 0.5)
|
|
--amplitude, -a Amplitude in meters (default: 2.0)
|
|
```
|
|
|
|
## 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
|
|
|
|
| Document | Description |
|
|
|----------|-------------|
|
|
| [Installation](docs/installation.md) | All platform setup guides |
|
|
| [Architecture](docs/architecture.md) | System components |
|
|
| [Protocol](docs/protocol.md) | Sensor data formats |
|
|
| [Drone Guide](docs/drone_guide.md) | Landing algorithm guide |
|
|
| [PyBullet](docs/pybullet.md) | PyBullet setup |
|
|
| [Gazebo](docs/gazebo.md) | Gazebo setup (Linux) |
|
|
|
|
## Getting Started
|
|
|
|
1. Run `python standalone_simulation.py`
|
|
2. Watch the drone land automatically
|
|
3. Edit `drone_controller.py` to implement your own algorithm
|
|
4. Test: `python standalone_simulation.py --pattern circular` |