Git Product home page Git Product logo

fjiwrogno / eklavya-copter-control Goto Github PK

View Code? Open in Web Editor NEW

This project forked from apr0t0/eklavya-copter-control

0.0 0.0 0.0 356.61 MB

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: MIT License

Shell 0.19% C++ 82.92% Python 8.39% C 0.41% CMake 8.10%

eklavya-copter-control's Introduction

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

eklavya-copter-control's People

Contributors

apr0t0 avatar ars-21 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.