The RPG Quadrotor Control repository provides packages that are intended to be used with ROS. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.
The source code is released under a MIT license.
- [[Installation Guide|Installation-Guide]]
For the following installation instructions you will need git which you can set up with the following commands:
# in file folder
git config user.name "Your Name Here"
git config user.email "Same e-mail as used for github"
. /opt/ros/noetic/setup.bash
Get catkin tools with the following commands:
conda create -n YOURNAME python=3.10
# and make sure you activate conda env when each time you use this project
conda activate YOURNAME # activate conda env
# python >3.10 will conflict with ros-noetic
pip install catkin-tools
Create a catkin workspace with the following commands by replacing <ROS VERSION>
with the actual version of ROS you installed:
#将所有ros相关源文件放在 src下
catkin build
We strongly recommend to set up ssh keys with github to simplify your workflow. You can do so by following the instructions on how to set up an ssh key. Henceforth, always clone repositories using the ssh url:
[[https://github.com/uzh-rpg/rpg_quadrotor_control/wiki/images/ssh_link.png|alt=ssh_link]]
ros have done that
Install system and ROS dependencies:
sudo apt-get install libgoogle-glog-dev protobuf-compiler ros-$ROS_DISTRO-octomap-msgs ros-$ROS_DISTRO-octomap-ros ros-$ROS_DISTRO-joy
Install vcstool:
pip install vcstool
Clone dependencies:
vcs-import < rpg_quadrotor_control/dependencies.yaml
Make sure the GUIs in your rqt cache are updated (Don't worry if this outputs an error because the file could not be found, we just want to remove it if it is already there):
rm ~/.config/ros.org/rqt_gui.ini
Build:
catkin build
Add sourcing of your catkin workspace to your .bashrc
file:
source ~/.bashrc
If you are using the sbus_bridge, add your user to the dialout group:
sudo usermod -aG dialout $USER
If you are using GPIO or ADC functionalities from the rpg_single_board_io repository, follow the set up instructions in its readme.
To test you installation, follow the [[Test the Framework|Test-the-Framework]] instructions.
Instructions for the installation and usage of this software is provided along with further details in our Wiki. If you have questions or problems with this framework, please use the issue tracker. Please don't send us emails since they might not be answered. If you would like to contribute, please read the How to Contribute page first.
This repository contains a complete framework for flying quadrotors based on control algorithms developed by the Robotics and Perception Group. We also provide an interface to the RotorS Gazebo plugins to use our algorithms in simulation. Together with the provided simple trajectory generation library, this can be used to test our sofware entirely in simulation. We also provide some utility to command a quadrotor with a gamepad through our framework as well as some calibration routines to compensate for varying battery voltage. Finally, we provide an interface to communicate with flight controllers used for First-Person-View racing.
The theory behind the included algorithms is summarized in the theory document contained in this repository as well as in our RA-L18 Paper with a technical report attached for further details as well as in our RA-L17 Paper.
This repository makes use of some basic functionalities from the rpg_quadrotor_common repository and when working with real hardware, the GPIO and ADC functionalities in the rpg_single_board_io repository might come in handy.
If you use this work in an academic context, please cite the following two RA-L publications:
M. Faessler, A. Franchi, and D. Scaramuzza, "Differential Flatness of Quadrotor Dynamics Subject to Rotor Drag for Accurate Tracking of High-Speed Trajectories," IEEE Robot. Autom. Lett. (RA-L), vol. 3, no. 2, pp. 620–626, Apr. 2018. [PDF]
@Article{Faessler18ral,
author = {Matthias Faessler and Antonio Franchi and Davide Scaramuzza},
title = {Differential Flatness of Quadrotor Dynamics Subject to Rotor
Drag for Accurate Tracking of High-Speed Trajectories},
journal = {{IEEE} Robot. Autom. Lett.},
year = 2018,
volume = 3,
number = 2,
pages = {620--626},
month = apr,
doi = {10.1109/LRA.2017.2776353},
issn = {2377-3766}
}
M. Faessler, D. Falanga, and D. Scaramuzza, "Thrust Mixing, Saturation, and Body-Rate Control for Accurate Aggressive Quadrotor Flight," IEEE Robot. Autom. Lett. (RA-L), vol. 2, no. 2, pp. 476–482, Apr. 2017. [PDF]
@Article{Faessler17ral,
author = {Matthias Faessler and Davide Falanga and Davide Scaramuzza},
title = {Thrust Mixing, Saturation, and Body-Rate Control for Accurate
Aggressive Quadrotor Flight},
journal = {{IEEE} Robot. Autom. Lett.},
year = 2017,
volume = 2,
number = 2,
pages = {476--482},
month = apr,
doi = {10.1109/LRA.2016.2640362},
issn = {2377-3766}
}
Watch the video demonstrating what can be done by the control algorithms in this repository:
And the video teaser for our presentation at ICRA 2018: