2026-02-09 04:52:32 +00:00
2026-02-09 03:39:49 +00:00
2026-02-09 04:52:32 +00:00
2026-02-09 03:39:49 +00:00
2026-02-09 04:20:22 +00:00
2026-02-09 03:39:49 +00:00
2026-02-09 04:52:32 +00:00
2026-02-09 03:39:49 +00:00
2026-02-09 03:39:49 +00:00
2026-02-09 04:20:22 +00:00
2026-02-09 04:00:11 +00:00
2026-02-09 03:39:49 +00:00
2026-02-09 04:52:32 +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 Geofencing

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

GPS-Denied Navigation

Navigation: All vehicles navigate using relative positioning only:

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

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

Requirements

  • Ubuntu 22.04 or 24.04 (WSL2 supported)
  • 16GB RAM recommended
  • 50GB disk space

Installation

git clone https://git.sirblob.co/SirBlob/simulation.git
cd simulation
bash setup.sh

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

Quick Start

cd ~/simulation
source activate_venv.sh
bash scripts/run_simulation.sh

For WSL with graphics issues:

bash scripts/run_simulation.sh --software-render

Controlling the UAV

Once the simulation is running, use MAVProxy commands in the console:

mode guided      # Switch to GUIDED mode
arm throttle     # Arm the drone
takeoff 5        # Takeoff to 5 meters
guided 10 5 -10  # Fly to position (North, East, Down)
rtl              # Return to launch
land             # Land

Or via ROS 2:

# Arm
ros2 service call /mavros/cmd/arming mavros_msgs/srv/CommandBool "{value: true}"

# Takeoff
ros2 service call /mavros/cmd/takeoff mavros_msgs/srv/CommandTOL "{altitude: 5}"

# Fly to position (local coordinates)
ros2 topic pub /mavros/setpoint_position/local geometry_msgs/PoseStamped \
  "{header: {frame_id: 'map'}, pose: {position: {x: 10, y: 5, z: 5}}}"

Simulation Options

# Default
bash scripts/run_simulation.sh

# Custom world
bash scripts/run_simulation.sh --world iris_runway

# Rover instead of copter
bash scripts/run_simulation.sh --vehicle Rover

# Software rendering (WSL)
bash scripts/run_simulation.sh --software-render

Uninstall

bash scripts/uninstall.sh         # Remove ArduPilot and plugin
bash scripts/uninstall.sh --all   # Remove everything

Documentation

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