2026-02-09 06:54:00 +00:00
2026-02-09 06:31:00 +00:00
2026-02-09 05:51:51 +00:00
2026-02-09 05:51:51 +00:00
2026-02-09 04:20:22 +00:00
2026-02-09 03:39:49 +00:00
2026-02-09 06:06:07 +00:00
2026-02-09 06:54:00 +00:00
2026-02-09 03:39:49 +00:00
2026-02-09 04:20:22 +00:00
2026-02-09 05:56:51 +00:00
2026-02-09 04:00:11 +00:00
2026-02-09 03:39:49 +00:00
2026-02-09 05:51:51 +00:00
2026-02-09 03:39:49 +00:00
2026-02-09 03:39:49 +00:00
2026-02-09 04:52:32 +00:00
2026-02-09 04:00:11 +00:00

UAV-UGV Simulation

GPS-Denied Navigation with Vision-Based Localization

A ROS 2 simulation environment for UAV and UGV development using GPS-denied navigation with vision-based localization, while maintaining GPS-based geofencing for safety.

Features

  • GPS-Denied Navigation: Visual odometry, optical flow, and EKF sensor fusion
  • GPS-Based Geofencing: Safety boundaries using GPS (navigation remains GPS-free)
  • Multi-Vehicle Support: Coordinated UAV and UGV operations
  • ArduPilot SITL: Full flight controller simulation
  • Gazebo Harmonic: Modern physics simulation
  • ROS 2 Integration: Full ROS 2 Humble/Jazzy support

Requirements

  • Ubuntu 22.04 or 24.04 (WSL2 supported)
  • 16GB RAM recommended
  • 50GB disk space
  • NVIDIA GPU recommended (software rendering available)

Installation

git clone <repository-url> ~/sim/uav_ugv_simulation
cd ~/sim/uav_ugv_simulation
bash setup.sh

Installation takes 20-40 minutes (builds ArduPilot from source).

Quick Start

The UAV automatically arms, takes off, and executes a mission:

cd ~/sim/uav_ugv_simulation
source activate_venv.sh

# Hover mission
bash scripts/run_autonomous.sh --mission hover

# Square pattern
bash scripts/run_autonomous.sh --mission square

# Circle pattern
bash scripts/run_autonomous.sh --mission circle

# WSL/Software rendering
bash scripts/run_autonomous.sh --software-render --mission hover

Manual Mode (MAVProxy)

bash scripts/run_simulation.sh
# Wait for EKF initialization (~15 seconds), then:
# mode guided
# arm throttle force
# takeoff 5

ROS 2 Mode

source /opt/ros/humble/setup.bash
ros2 launch uav_ugv_simulation full_simulation.launch.py

Mission Types

Mission Description
hover Take off, hover for 30 seconds, land
square Fly a 5m square pattern
circle Fly a circular pattern

GPS-Denied Navigation

Navigation uses only relative positioning:

  • Visual odometry from cameras
  • Optical flow sensors
  • IMU integration
  • Local coordinate frames (NED)

GPS is ONLY used for geofencing (safety boundaries), NOT for navigation or position control.

Project Structure

uav_ugv_simulation/
├── setup.sh                    # Installation script
├── scripts/
│   ├── run_autonomous.sh       # Autonomous simulation
│   ├── run_simulation.sh       # Manual simulation
│   └── kill_simulation.sh      # Cleanup
├── src/
│   ├── control/                # UAV/UGV controllers
│   ├── vision/                 # Visual odometry, optical flow
│   ├── localization/           # EKF sensor fusion
│   ├── navigation/             # Path planning
│   └── safety/                 # Geofencing, failsafe
├── launch/                     # ROS 2 launch files
├── config/                     # Configuration files
├── models/                     # Gazebo models
└── worlds/                     # Gazebo worlds

Commands

Command Description
bash scripts/run_autonomous.sh Run autonomous simulation
bash scripts/run_simulation.sh Run manual simulation
bash scripts/kill_simulation.sh Kill all processes
bash scripts/uninstall.sh Uninstall ArduPilot

Documentation

License

MIT License

Description
No description provided
Readme 646 KiB
Languages
Python 78.7%
Shell 21.3%