Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (7.6%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: ankushsingh999
  • License: apache-2.0
  • Language: Python
  • Default Branch: main
  • Size: 25.2 MB
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 1
  • Open Issues: 0
  • Releases: 0
Created almost 3 years ago · Last pushed over 2 years ago
Metadata Files
Readme Contributing License Citation

README.md

Robust Trajectory Tracking Control for Quadrotor UAVs

Team : Ankush Singh Bhardwaj & Anuj Pai Raikar

Complying to the code of conduct laid out by the professor we have made the repo containing codes and derivation of the control laws private.

This project aims to develop a robust control scheme to enable a quadrotor, specifically the Crazyflie 2.0 platform, to track desired trajectories in the presence of external disturbances. The control design will be implemented and tested using MATLAB and ROS (Robot Operating System).

image

Crazyflie 2.0 Overview

The Crazyflie 2.0 is a micro air vehicle (MAV) quadrotor weighing only 27 grams. It is equipped with four 7mm coreless DC motors, providing a maximum takeoff weight of 42g.

Dynamic Model and Control Design

The quadrotor dynamic model is described by the equations of motion, considering the translational and angular coordinates. The control inputs on the system are the force and moments applied by the propellers. A sliding mode control approach is used to track desired trajectories for altitude and attitude control.

The project consists of the following parts:

Trajectory Generation: MATLAB or Python script to generate quintic trajectories for the translational coordinates (x, y, z) of the Crazyflie quadrotor. The quadrotor will visit five waypoints sequentially, and the desired trajectories will be plotted. The waypoints to visited are:

image

The sequence of visiting the waypoints does matter. The velocity and acceleration at each waypoint must be equal to zero.

Sliding Mode Controller: Designed and implemented boundary layer-based sliding mode control laws for altitude and attitude control. The control laws will enable the quadrotor to track the desired trajectories and visit the waypoints.

To convert the desired position trajectories (xd, yd, zd) to desired roll and pitch angles (ϕd, θd), the desired forces in x and y direction can be calculated using PD control (according to Eq. (1) and (2)), and the resulting desired forces can be then converted to desired ϕ and θ according to Eq. (3) and Eq. (4):

image

image

ROS Implementation: Developed a ROS node in Python or MATLAB to evaluate the performance of the control design on the Crazyflie 2.0 quadrotor in Gazebo. The ROS node incorporated the trajectory generation and sliding mode control laws.

RESULTS

Tested the control script developed and observed the quadrotor to move smoothly with minimal overshoot or oscillations to track the trajectories generated.

https://github.com/ankushsingh999/Robust-Traj-Control-for-UAVs/assets/64325043/461eecf5-ae48-4f56-ae06-22efd8e68120

A visualization script was run to plot actual trajectories on top of the reference trajectories to ensure satisfactory performance was achieved.

trajectory

The video and the graph show us that the UAV converges to the reference trajectory in fraction of seconds and the error between the desired and actual trajectories is minimal.

Owner

  • Login: ankushsingh999
  • Kind: user

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Silano"
  given-names: "Giuseppe"
  orcid: "https://orcid.org/0000-0002-6816-6002"
- family-names: "Aucone"
  given-names: "Emanuele"
- family-names: "Iannelli"
  given-names: "Luigi"
  orcid: "https://orcid.org/0000-0003-2034-0005"
title: "CrazyS: A Software-In-The-Loop Platform for the Crazyflie 2.0 Nano-Quadcopter"
doi: 10.1109/MED.2018.8442759
year: 2018
start: 352 # First page number
end: 357 # Last page number
date-released: 2018-03-02
url: "https://github.com/gsilano/CrazyS"

preferred-citation:
  type: inbook
  authors:
  - family-names: "Silano"
    given-names: "Giuseppe"
    orcid: "https://orcid.org/0000-0002-6816-6002"
  - family-names: "Iannelli"
    given-names: "Luigi"
    orcid: "https://orcid.org/0000-0003-2034-0005"
  title: "Robot Operating System (ROS): The Complete Reference (Volume 4)"
  chapter: "CrazyS: a software-in-the-loop simulation platform for the Crazyflie 2.0 nano-quadcopter"
  publisher: "Springer International Publishing"
  doi: 10.1007/978-3-030-20190-6_4
  start: 81 # First page number
  end: 115 # Last page number
  url: "https://link.springer.com/chapter/10.1007/978-3-030-20190-6_4"
  isbn: "978-3-030-20190-6"
  preprint: "https://giuseppesilano.net/publications/rosChapter19.pdf"

GitHub Events

Total
Last Year