GithubHelp home page GithubHelp logo

uav_geometric_controller's People

Contributors

evankaufman avatar kanishkegb avatar ku-ya avatar mbshbn avatar skulumani avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

fdcl-gwu

uav_geometric_controller's Issues

Linux Python vs Anaconda distribution

Provide more detail about the issues of using Anaconda and ROS

  • Instructions to fix path
  • pip commands to install useful science packages - scipy, numpy, etc
  • Instructions for python3 and python
  • Instructions for installing python packages in user space rather than system

TLDR: Don't use Anaconda but simply use the system python interpreter

Modularize functions

It might make sense to separate the functionality of ROS and the non-ROS related functions.

For example, the controller functions should simply accept the state, desired state, and constants and output the required Moment or Force.

A separate function should then output this value to ROS and the hardware.

This will enable easier testing using gtest

Motor/Moment mapping

The mapping from controller moment to motor commands is done using

  // Given the UAV arm length of 0.31 m and a prop. angle of 15 deg.
  invFMmat <<  0.0000,    1.2879,   -0.1725,   -0.0000,    1.1132,    0.3071,
  -1.1154,    0.6440,    0.1725,    0.9641,   -0.3420,    0.7579,
  -1.1154,   -0.6440,   -0.1725,   -0.9641,   -0.7712,    1.7092,
  -0.0000,   -1.2879,    0.1725,         0,    1.1132,    0.3071,
  1.1154,   -0.6440,   -0.1725,    0.9641,   -0.3420,    0.7579,
  1.1154,    0.6440,    0.1725,   -0.9641,   -0.7712,    1.7092;

which is found here. It might make sense to make this a function rather than hard coded.

Some ideas:

Inputs: Motor arm length, angle of rotors, number of rotors
Outputs: Mapping matrix

I'll also give this a shot since it's easy and I probably can't screw it up too much

Output plotting

Python can read and output a bag file

  • Ensure timing is consistent between messages. It's using the header stamp on each message
  • Define the experiment epoch (start of roscore, user selected, something else?)
  • Create publication quality plots on demand (flag in plotter). Use Latex for text, better colors, increase font sizes, and save as eps
  • Flag to automatically save all plots

ROS_DEBUG_STREAM

Use the various capabilities of logging to improve debugging using rosconsole

  • Provide an example function of logging
  • How to view the log using the console/terminal
  • Set logging level parameters

Controller Gains

Gains should be function of the system

Use a linear system analysis to relate the gains k_R and k_omega to settling time, and percent overshoot

PX4 implementation

I truly appreciate your work.

I am going to add PX4 standard messages to your project. My first impression of the code, it shouldn't be so complicated.

Is there any point or remarks that I need to be aware about this matter? A similar project would also be a great asset.

Another question, I want to use just part of Geo-controller (Position controller) and use PX4 to do the rest (basic controller). Can you also help me in this matter?

Cheers

Improve documentation

Complete instructions

  • Installing ROS
  • Building the package
  • run nodes in ROS
  • View topics/messages
  • Testing

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.