SpartanLIFT (Swarm dePloyment in Autonomous Robot TeleoperAtioNs for Load-Intensive Flight and Transport)
MSc thesis regarding the application of a teleoperated multi-UAV system for cooperative payload transport.
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.2 LTS
Release: 22.04
Codename: jammy
$ echo $ROS_DISTRO
humble
The general ROS2 underlay is automatically sourced during each terminal startup in my configuration. I've achieved so simply by
adding source /opt/ros/humble/setup.bash
to the ~/.bashrc
file. If you don't want to do so, always remember to manually source it.
Additionally, at the time of this project's creation, to correctly use ROS2 and Gazebo Garden we need to configure ros_gz
in the local machine from source: this contains all additional packages needed for the ROS2-Gazebo integration.
We can simply clone the repository in a workspace as a ROS2 package. Precise instructions can be found in the GitHub repository.
Once configured, be sure to also source that overlay before using this project.
Note: if you don't want to configure ros_gz
, check if pre-compiled packages are available.
$ gz sim --version
Gazebo Sim, version 7.7.0
Copyright (C) 2018 Open Source Robotics Foundation.
Released under the Apache 2.0 License.
I initially started with Ardupilot, but I soon had to switch over to PX4 because the former was not yet ready to be used in ROS2 projects when I started out. Among many things, this meant migrating from Gazebo 6 (Ignition) to Gazebo (Garden).
Drone models and world files downloaded from the Fuel models page:
- X3 drone by OpenRobotics
- X4 drone by OpenRobotics
- Tugbot depot by MovAi
- Tugbot warehouse by MovAi I modified them in order to use it for my project.
To build this project you can easily follow the official guidelines to build and execute ROS2 nodes. Here's a short step-by-step:
git clone
this project in a local folder- Install all dependencies, specified in the Requirements chapter
- Source your global ROS2 environment (aka the underlay)
- Build the project using
colcon build
- (optional) Execute smoke and unit tests with
colcon test
- Source the
install/setup.bash
script (aka the overlay) - Start the desired node or launch file
For a more specific list, see the output of the "discover dependencies" task task.
A simple list:
- ROS2 Humble → Installed as per official guide
- colcon → Installed as per official guide (with autocompletion)
- fmt → Installed from source
- pugixml → Installed from source
- PX4 → Installed as per official guide
- eProsima Micro XRCE-DDS Agent → Installed as per official guide
To this you should also add all the other dependencies specified by third-party libraries used by the project.
As per this version, the output of colcon build
has some warning messages to it. Moreover, I still have some warning myself, which I'll eventually resolve.
An example of output after a complete run, for the sake of completeness, can be found in this file.
To generate doxygen style documentation, simply move to the root of the project and execute doxygen doc/Doxyfile
.
Output files will be created in the doc/html and doc/latex subfolders.