Code Monkey home page Code Monkey logo

crazyflie-project's Introduction

The Crazyflie Project

This repository contains the necessary code to run the simulations and experiments presented in the thesis. This includes relevant Matlab/Simulink models as well as modifications to the existing firmware and drivers. The system is best run with a MOCCAP like VICON or Optitrack, but can also be run using Bitcrazes UWB LPS system as demonstrated in this video.

Dependencies

The real-time implementation can currently be run on a Ubuntu 14.04 (Trusy) with a ROS Indigo installation. In addition, the following stacks need to be installed

  • Openni driver - For publishing raw data from the kinect (if applicable) [1].
  • Ros_numpy - For data conversion related to the disparity images of the kinect (if applicable) [2].
  • Crazyflie driver - For communicating with the crazyflie, modified from the original by Wolfgang [3].
  • Crazyflie firmware - Modified from the original to support SE(3) control [4].

Getting started

First of all, this project requires a machine with a Ubuntu 14.04 installation, which preferrably should be installed natively. Simply follow the tutorials on installing ROS Indigo and setting up a catkin environment. Once done, clone the openni_driver and ROS_numpy stacks if using the kinect camera. If so, basic image processing and kalman filtering can be accomplished by cloning the kinect_vision project. For all the ROS stacks, simply place them in the ./catkin_ws/src/ directory. Once complete, clone the modified ROS driver which has been re-written to support the loading of trajectories.

At this point, you should have at the very least a Ubuntu 14.04 installation with the crazyflie_ros driver. We then need to switch to the full_control branch of the driver, simply done through

cd ~/catkin_ws/src/crazyflie_ros/
git checkout full_control

Next, clone the crazyflie firmware from and follow the instructions on how to set up and configure the system in a linux environment. Note especially that in order to use the USB radio without root priveliges, new udev rules need to be written. Oncce this has been done, checkout the se3_control branch, make and flash the firmware using the following commands

cd ~/.../crazyflie-firmware
it submodule init
git submodule update
git ckeckout se3_control
make clean && make all -j4
make cload

Now that all the dependencies have been installed and the firmware image has been flashed, simply install the [crazyflie_trajectory] stack. By sourcing the environment and running the launch file

cd ~/catkin_ws
source devel/setup.bash
roslaunch crazyflie_trajecotry example.launch

the ros program is run. Refer to the documentation in /crazy_ros/docs/ for documentation on the python code and ros program, and after running the program, use -hfor help regarding available options and usage.

Directories

/crazyflie-documentation/*

To be included shortly when the M.Sc. thesis is published, and unofficial report can be provided at request.

/crazyflie-simulink/*

This directory contains enough code to explore the general quad-rotor dynamics in a Simulink/Matlab environment. A special case study of the Crazyflie is included, and the project can be navigated by running init_project -h.

All controllers and estimators outlined in the report can be simulated in this directory, and new methods of control can be explored in well tested dynamics. Discrete time implementations of the differential flatness equations are included, as well as RLS/ctRLS parameter estimators, KF/UKF/EKF/GPF/AHRS state-estimators, PID/MRAC/MOPC/LQR/SE(3) controllers. The details of all the mentioned algorithms with references can be found in the /crazy_documentation/*.

/crazyflie-ros/*

This code is deprecated and will be committed as soon as it is in a good state.

crazyflie-project's People

Contributors

danilsson avatar mgreiff avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

crazyflie-project's Issues

Compatibility with quaternion controller

The last commit seems to indicate this project is compatible with the quaternion controller from mikehamer.

However, the only references to FullControl messages are commented.

Did you manage to create trajectories for its controller and to send them to the drone ? If so, do you have an example of a working source code doing so ? Or at least informations on how to replicate it ?

Thanks a lot

max_ang_ref is not defined for the iLQR controllers

Hi Marcus,

Firstly, you did a remarkable job testing so many controllers and estimators for the Crazyflie. Your repo serves as a great resource for new entrants who want to get up to speed with systems and control for the UAVs.

There is one error and I need your help in fixing it. For the iLQR controllers, you have defined a constant 'max_ang_ref' within the zero yaw, LP filtered random steps1 block. Can you suggest suitable values for this or how to automate it?

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.