This toolbox contains Robot Operating System (ROS) packages with functionality to simulate and run experiments with different types of drones.
This README explains the usage of this repository with the following sections:
The main goal of this repository is to easily get started with drone simulation and experiments. To this end, the repository is structured as follows:
It includes the following packages:
- A toolbox for the different supported drones (see Supported drones).
- px4_tools: provides a PX4 control interface for running simulations and experiments and includes launch files for PX4-related packages.
- drone_gazebo: provides custom world and vehicle models for simulations in Gazebo. Take care that most of the vehicle models are implemented in this fork of the PX4-SITL_gazebo repository.
Moreover, it includes the following directories:
- doc: a documentation directory (see Documentation).
- .github: containing CONTRIBUTING.md about how to contribute to this repository.
The figure below shows how the repository can be used (together with the repositories it is dependent on) to create a full drone simulation/experiment pipeline:
This figure shows that the setup is modular to any navigation/planner/controller algorithm and any type of drone. Specifically, this repository contains the packages to implement:
- A PX4 control interface to interface any algorithm implemented with a ROS node to the PX4 autopilot via the MAVROS interface.
- Drone-specific functionality, including system identification simulation/experiment launch files and data post-processing.
The code is meant to be run from a launch file in the external navigation/planner/controller package. Note that the algorithms in this package do not need to run using ROS nodes with ROS communication, as long as there is one ROS interface node to establish communication with the node px4_control_interface_node. This option is not shown in the figure. A template controller package is available here and can be used as a baseline implementation for interfacing the custom navigation/planning/controller code with the PX4 control interface.
- NXP HoverGames (hovergames_toolbox)
For each of the supported drones, a toolbox package (ROS metapackage) is created. These toolboxes provide code for different purposes:
- System identification:
- Parameters for drone model used in model-based controller (e.g., dynamical model for MPC)
- Parameters for drone model used in simulator (e.g., SDF in Gazebo)
- Running a simulation or experiment with one of the pre-defined PX4 controllers or an external controller.
The documentation contains tutorials including the usage of PX4, PX4 with Gazebo simulation, PID tuning, and using a companion computer. Furthermore, it contains a troubleshooting section.
Documentation corresponding to a specific drone type can be found in drone_name/README.md.