cd9ae9a4f65ea725492d0b036cf12b83c6775510
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
Languages
Python
78.7%
Shell
21.3%