GithubHelp home page GithubHelp logo

captjulian / collaborative_aerial_transportation Goto Github PK

View Code? Open in Web Editor NEW

This project forked from intelligent-control-lab/collaborative_aerial_transportation

0.0 0.0 0.0 113.06 MB

This repository is dedicated to build a simulation test bed for developping aerial manipulation algorithms.

License: MIT License

Shell 0.08% C++ 49.03% Python 43.71% C 1.75% CMake 5.43%

collaborative_aerial_transportation's Introduction

Aerial collaborative manipulation

This repository contains a python-ROS-gazebo framework for aerial collaborative manipulation development using UAVs based on the open sourced rotorS project. This platform is dedicated to be a test bed for the collaborative control strategy developpment. It is centralized in the sense that all the agents communicate with a central control node. It can be decentralized in the sense of assymetric information among the agents.

Installations

  1. Install this package with ROS indigo or ROS kinetic:
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros-latest.list'
$ wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install ros-kinetic-desktop-full ros-kinetic-joy ros-kinetic-octomap-ros ros-kinetic-mavlink python-wstool python-catkin-tools protobuf-compiler libgoogle-glog-dev ros-kinetic-control-toolbox
$ sudo rosdep init
$ rosdep update
$ source /opt/ros/kinetic/setup.bash
  1. create your ROS package:
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace  # initialize your catkin workspace
  1. clone the project into the src directory of your workspace:
git clone https://github.com/intelligent-control-lab/Collaborative_Aerial_Transportation.git
cd ..
catkin_make
source devel/setup.bash

Launch an example

Collaborative transportation example Here is an example of the centralized collaborative payload transportation task. Four UAVs are physically connected to a box payload via spherical joints. During the example the system expeirence two phases, the hovering and the trajectory following. After steadily hovering, the planner generates a high-order polynomial trajectory that the four UAVs follows simultaneously. Force-torque sensors are attached to the joints between UAVs and the payload. More complecated strategies can be developped based on the current framework.

collaborative transportation

roslaunch rotors_gazebo collaborative_hovering.launch
cd src/Collaborative_Aerial_Transportation/rotors_gazebo/scripts/collaborative
python mellinger_collaborative_nlopt.py 

Single UAV control example Here is the example of controlling a single UAV to hover and follow a referenced trajectory.

roslaunch rotors_gazebo mellinger_hummingbird.launch
cd src/Collaborative_Aerial_Transportation/rotors_gazebo/scripts/collaborative
python mellinger_trj_nlopt.py

Contents and References

Position controller for UAV: Mellinger controller. This controller is based on the work of D.Mellinger and V.Kumar, and should be cited if this content is used in a scientific publication (or the preceding conference papers): [1] D. Mellinger and V. Kumar,**b"Minimum snap trajectory generation and control for quadrotors" **, 2011 IEEE International Conference on Robotics and Automation, Shanghai, 2011, pp. 2520-2525.

@INPROCEEDINGS{5980409,
author={D. {Mellinger} and V. {Kumar}},
booktitle={2011 IEEE International Conference on Robotics and Automation},
title={Minimum snap trajectory generation and control for quadrotors},
year={2011},
pages={2520-2525},
doi={10.1109/ICRA.2011.5980409},
ISSN={1050-4729},
month={May},}

Minimum snap polynomial trajectory generation The trajectory generation part is a python version of the implementation of the reaserch paper: [2] C. Richter, A. Bry, and N. Roy, “Polynomial trajectory planning for aggressive quadrotor flight in dense indoor environments,” in International Journal of Robotics Research, Springer, 2016. A more complete C++ open source version including feasibility verification can also be seen and refers to: ethz-asl/mav_trajectory_generation.

@incollection{richter2016polynomial,
  title={Polynomial trajectory planning for aggressive quadrotor flight in dense indoor environments},
  author={Richter, Charles and Bry, Adam and Roy, Nicholas},
  booktitle={Robotics Research},
  pages={649--666},
  year={2016},
  publisher={Springer}
}

ROS rotors_gazebo environment The UAV-payload model is developped based on the existing work of ethz-asl/rotors_simulator. This simulator is based on the work of the following research paper:

[3] Furrer, Fadri & Burri, Michael & Achtelik, Markus & Siegwart, Roland. (2016). "RotorS – A Modular Gazebo MAV Simulator Framework”

@Inbook{Furrer2016,
author="Furrer, Fadri
and Burri, Michael
and Achtelik, Markus
and Siegwart, Roland",
editor="Koubaa, Anis",
chapter="RotorS---A Modular Gazebo MAV Simulator Framework",
title="Robot Operating System (ROS): The Complete Reference (Volume 1)",
year="2016",
publisher="Springer International Publishing",
address="Cham",
pages="595--625",
isbn="978-3-319-26054-9",
doi="10.1007/978-3-319-26054-9_23",
url="http://dx.doi.org/10.1007/978-3-319-26054-9_23"
}

Basic usage

The agents are identified by their unique namespace of their ROS message topics. A control node can receive state informations from any agent by subscribing its topic. Agents receive motor speed messages as control input.

For the generation of polynomial trajectories, key frame vertices have to be given to the planner, including their positions and other constraints on higher order derivatives. The details can be seen in the example python script.

Here is an example of a minimum snap polynomial trajectory generation result: image

License

The MIT License (MIT)

collaborative_aerial_transportation's People

Contributors

hzyu17 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.