An Open-Source Simulation Platform for Autonomous Vision-Guided UAV Missions.
GamaFlyware.Showcase.mp4
The platform can support several features:
- Navigating areas via Python code
- Autonomous landing in pads
- Simulatenous Localization and Mapping (SLAM)
- Surveying indoor or outdoor environments
- SLAM point cloud processing
- Live plotting of flight data
- Missions in several maps
The system is implemented in a DockerHub image to be run on a Desktop, including all the tools, GUI and instalations. Should be simple to start using.
You can also read my Software Engineering B.A. Capstone Project about GamaFlyware.
Make sure you have the following installed on your Linux Ubuntu 22.04 host:
- VSCode and Contaier extension
To install VSCode and the Container extension:
sudo snap install --classic codeAfter installing VSCode, launch it and open the Extensions Marketplace. Search for and install the Dev Containers extension (by Microsoft).
- Docker & Docker Compose plugin
sudo snap install --classic codeThen, open VSCode and install the Dev Containers extension from the Extensions Marketplace.
sudo apt-get update
sudo apt-get install docker.io docker-compose-plugin -y- NVIDIA drivers
To enable GPU acceleration with Docker Compose, download and install the latest NVIDIA drivers for your GPU from the official NVIDIA website. After installing the drivers, also install the NVIDIA Container Toolkit:
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart dockerNote: Proper driver installation is required for GPU passthrough and CUDA support inside containers.
- Clone this repository:
git clone https://github.com/RenatoBrittoAraujo/GamaFlywareThis prebuilt image (~40 GB) contains PX4-Autopilot, Gazebo Garden, ROS 2 Humble, and all dependencies:
sudo docker pull renatobrittoaraujo/gamaflyware:1Note: Download may take several minutes.
- Remove or rename any existing container named
gamaflyware. - Edit
docker-compose.ymlif you need to change RAM/CPU limits or adapt GPU settings for non-Ubuntu hosts. - Start in detached mode:
sudo docker compose up -dOn the host, permit the container to open windows (Gazebo, OpenCV GUIs, etc.):
xhost local:dockerIn VSCode, type Ctrl+Shift+P and select Dev Containers: Restore and Reopen in Container. This will automatically restore all recommended terminals for your workspace.
- Open a shell in the container
sudo docker exec -it gamaflyware bash- Start PX4 SITL + Gazebo
cd PX4-Autopilot
source /opt/ros/humble/setup.bash
make px4_sitl gz_x500- Build & run your ROS 2 package
cd ws
source /opt/ros/humble/setup.bash
source install/setup.bash
colcon build --packages-select mission
ros2 run mission land- Launch XRCE or MAVROS agent
- MAVROS:
source /opt/ros/humble/setup.bash
ros2 run mavros mavros_node --ros-args -p fcu_url:=udp://@127.0.0.1:14545- Run QGroundControl
./QGroundControl.AppImage- Bridge Gazebo camera to ROS
cd ws
source /opt/ros/humble/setup.bash
source install/setup.bash
ros2 run ros_gz_image image_bridge /camera- MAVROS “broadcast request timeout” warning:
- Install
ssinside container:
sudo apt-get update && sudo apt-get install -y iproute2- List UDP ports:
ss -uln- Rerun MAVROS with correct port:
ros2 run mavros mavros_node --ros-args -p fcu_url:=udp://:14540@127.0.0.1:<YOUR_PORT>- Changing Gazebo world/model paths:
Use models folder gz to insert your new models.