Skip to content

Controlling a hexacopter with coaxial tilt rotors in simulation, understanding the various dynamics of such a system and creating a controller that will enable a stable positioning system with multiple functionalities.

License

Notifications You must be signed in to change notification settings

ars-21/Eklavya-Copter-Control

 
 

Repository files navigation

Eklavya'22 Copter Control

Designing & Implementing an Optimal Control System of an Overactuated Hexacopter with Co-axial Tilt-Rotors for Efficient Omnidirectional Flight in Simulation(Gazebo) using ROS & Python. Learning about dynamics of a basic UAV and further implementing that knowledge in understanding the various dynamics of our system.

Demo

Table of Contents

About The Project

Drone aviation is an emerging industry with possible applications in agriculture, healthcare, e-commerce as well as traffic control. We were interesting in getting first hand experience in Dynamics of a UAV to get a firm grasp on the principles needed to work with drones in the future.

Extending the maneuverability of unmanned areal vehicles promises to yield a considerable increase in the areas in which these systems can be used. Some such applications are the performance of more complicated inspection tasks and the generation of complex uninterrupted movements of an attached camera. In our project, we our designing and implementing a control system for a novel aerial platform that combines the advantages of existing multi-rotor systems with the agility of omnidirectionally controllable platforms. We are using a hexacopter with co-axial tiltable rotors(omav) allowing the system to decouple the control of position and orientation.

This project involves understanding key concepts of Dynamics of UAVs, Modern Robotics, Control Systems, ROS, Gazebo which is essential knowledge to understand and work in the field of Robotics

Our full project report can be found here

Brief Presentation can be found here

Detailed Presentation can be found here

Project workflow

  • To learn about different control systems
  • Understanding Dynamics of a UAV and of our system(omav)
  • Design a Control System for our model(omav)which is a model of hexacopter modelled by ETH-Zürich
  • Implementing the Control System in Simulation(Gazebo)

Tech Stack

File Structure

👨‍💻Eklavya-Copter-Control
 ┣ 📂assets                             # Installation.md & all reference gifs, images
 ┣ 📂report                             # Project Report & Presentation
 ┣ 📂rotors_comm                        # msg files for WindSpeed
 ┣ 📂rotos_description                  # All urdfs and meshes
 ┃ ┣ 📂meshes
 ┃ ┣ 📂urdf
 ┃ ┃ ┗ 🗃️omav.xacro                     # Drone Model
 ┃ ┣ 🗃️CMakeLists.txt
 ┃ ┗ 🗃️package.xml
 ┣ 📂rotors_gazebo                      # Launch Files, World Files & other Gazebo resources
 ┃ ┣ 📂launch
 ┃ ┃ ┗ 🗃️mav.launch                     # Main Launch File
 ┃ ┣ 📂models
 ┃ ┣ 📂resource
 ┃ ┣ 📂worlds
 ┃ ┃ ┗ 🗃️basic.world                    # World used in Gazebo
 ┃ ┣ 🗃️CMakeLists.txt
 ┃ ┗ 🗃️package.xml
 ┣ 📂rotors_gazebo_plugins              # All Gazebo Plugins
 ┣ 📂scripts                            # Controller Python Scripts
 ┃ ┣🗃️control_omav.py                   # Main Controller Script
 ┃ ┣🗃️pid_omav.py
 ┃ ┣🗃️force_desired.py
 ┃ ┣🗃️moment_desired.py
 ┃ ┣🗃️moment_force_allocation.py
 ┃ ┣🗃️speed.py
 ┃ ┗🗃️takeoff.py                        # Drone Testing Script
 ┣ 🗃️LICENSE
 ┣ 🗃️README.md
 ┣ 🗃️dependencies.rosinstall
 ┣ 🗃️rotors_demos.rosinstall
 ┣ 🗃️rotors_hil.rosinstall
 ┗ 🗃️rotors_minimal.rosinstall

Getting Started

Prerequisites and installlation

Installation

Installation Guide For Forkers

Installation Guide For beginners

Execution

Open two terminal windows and run the following commands

  • Terminal 1
source ~/catkin_ws/devel/setup.bash
roslaunch rotors_gazebo mav.launch mav_name:=omav
  • Terminal 2
source ~/catkin_ws/devel/setup.bash
cd ~/Eklavya-Copter-Control/scripts
chmod +x .                      
python3 control_omav.py

Algorithm Flowchart

Control System Controller and Sensor Readings, Reference Data Flowchart Simplified code structure

Model And Implementation

Model

Gains (Tuning Parameters)

Implementation

Designing & Implementing an Optimal Control System of an Overactuated Hexa-copter with Co-axial Tilt-Rotors for Efficient Omnidirectional Flight in Simulation(Gazebo) using ROS & Python. Learning about the dynamics of a basic UAV and further implementing that knowledge in understanding the various dynamics of our system.

  • Designing Optimal Control System for Position Control using PID Algorithm
  • Designing Optimal Control System for Attitude Control
  • Implementing Control System with PID Tuning in Simulation(Gazebo) for reaching arbitrary altitude
  • Implementing Control System with PID Tuning in Simulation(Gazebo) for reaching Co-ordinates in free space
  • Implementing Control System with Tuning in Simulation(Gazebo) with decoupled Position and Orientation

Future Work

  • Improve Tuning, Control Algorithm for Efficient, Accurate, Stable and Fast Flight with decoupled Position and Orientation
  • Achieve Stable Flight in presence of external disturbances like Wind,...
  • Exploring different Control Systems & Approaches to improve performance of system
  • Implement obstacle avoidance

Contributors

Acknowledgements and References

License

MIT License

Citation

@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"
}

About

Controlling a hexacopter with coaxial tilt rotors in simulation, understanding the various dynamics of such a system and creating a controller that will enable a stable positioning system with multiple functionalities.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 82.9%
  • Python 8.4%
  • CMake 8.1%
  • Other 0.6%