README.md 5.51 KB
Newer Older
Dominic Clifton's avatar
Dominic Clifton committed
1
# Cleanflight
Dominic Clifton's avatar
Dominic Clifton committed
2
3
4
5
6

Clean-code version of baseflight flight-controller - flight controllers are used to fly multi-rotor craft and fixed wing craft.

This fork differs from baseflight in that it attempts to use modern software development practices which result in:

Dominic Clifton's avatar
Dominic Clifton committed
7
1. greater reliability through code robustness and automated testing. 
Dominic Clifton's avatar
Dominic Clifton committed
8
9
10
2. easier maintainance through code cleanliness.
3. easier to develop new features. 
4. easier to re-use code though code de-coupling and modularisation.
dongie's avatar
dongie committed
11

Dominic Clifton's avatar
Dominic Clifton committed
12
The MultiWii software, from which baseflight originated, violates many good software development best-practices. Hopefully this fork will go some way to address them. If you see any bad code in this fork please immediately raise an issue so it can be fixed, or better yet submit a pull request.
Dominic Clifton's avatar
Dominic Clifton committed
13

Dominic Clifton's avatar
Dominic Clifton committed
14
15
## Additional Features

16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Cleanflight also has additional features not found in baseflight.

* Multi-color RGB LED Strip support (each LED can be a different color using variable length WS2811 Addressable RGB strips - use for Orientation Indicators, Low Battery Warning, Flight Mode Status, etc)
* OneShot ESC support.
* Support for additional targets that use the STM32F3 processors (baseflight only supports STM32F1).
* Support for the TauLabs Sparky board (~$35 STM32F303 I2C sensors, based board with acc/gyro/compass and baro!)
* Support for the OpenPilot CC3D board. (~$20 STM32F103 board, SPI acc/gyro)
* Support for the CJMCU nano quadcopter board.
* Support for developer breakout boards: (Port103R, EUSTM32F103RC, Olimexino, STM32F3Discovery).
* Support for more than 8 RC channels - (e.g. 16 Channels via FrSky X4RSB SBus).
* Support for N-Position switches via flexible channel ranges - not just 3 like baseflight or 3/6 in MultiWii
* Lux's new PID (uses float values internally, resistant to looptime variation).
* Simultaneous Bluetooth configuration and OSD.
* Better PWM and PPM input and failsafe detection than baseflight.
* Better FrSky Telemetry than baseflight.
* MSP Telemetry.
* RSSI via ADC - Uses ADC to read PWM RSSI signals, tested with FrSky D4R-II and X8R.
* Autotune - ported from BradWii, experimental - feedback welcomed.
* OLED Displays - Display information on: Battery voltage, profile, rate profile, version, sensors, RC, etc.
* In-flight manual PID tuning and rate adjustment.
* Rate profiles and in-flight selection of them.
* Graupner PPM failsafe.
* Graupner HoTT telemetry.
* Configurable serial port scenarios for Serial RX, Telemetry, MSP, GPS - Use most devices on any port, softserial too.
+ more many minor bug fixes.
Dominic Clifton's avatar
Dominic Clifton committed
41
42
43
44
45

For a list of features, changes and some discussion please review the thread on MultiWii forums and consult the documenation.

http://www.multiwii.com/forum/viewtopic.php?f=23&t=5149

46
47
48
49
## Installation

See: https://github.com/cleanflight/cleanflight/blob/master/docs/Installation.md 

Dominic Clifton's avatar
Dominic Clifton committed
50
## Documentation
51

52
There is lots of documentation here: https://github.com/cleanflight/cleanflight/tree/master/docs 
Dominic Clifton's avatar
Dominic Clifton committed
53
54
55
56
57
58
59
60
61
62
63

If what you need is not covered then refer to the baseflight documentation. If you still can't find what you need then visit the #cleanflight on the Freenode IRC network

## IRC Support and Developers Channel

There's a dedicated IRC channel here:

irc://irc.freenode.net/#cleanflight

If you are using windows and don't have an IRC client installed then take a look at HydraIRC - here: http://hydrairc.com/

Dominic Clifton's avatar
Dominic Clifton committed
64
Etiquette: Don't ask to ask and please wait around long enough for a reply - sometimes people are out flying, asleep or at work and can't answer immediately.
Dominic Clifton's avatar
Dominic Clifton committed
65

Dominic Clifton's avatar
Dominic Clifton committed
66
## Videos
Dominic Clifton's avatar
Dominic Clifton committed
67
68
69
70
71
72
73
74
75

There is a dedicated Cleanflight youtube channel which has progress update videos, flight demonstrations, instrutions and other related videos.

https://www.youtube.com/playlist?list=PL6H1fAj_XUNVBEcp8vbMH2DrllZAGWkt8

Please subscribe and '+1' the videos if you find them useful.

## Configuration Tool

76
To configure Cleanflight you should use the Cleanlight-configurator GUI tool (Windows/OSX/Linux) that can be found here:
Dominic Clifton's avatar
Dominic Clifton committed
77

78
79
80
https://chrome.google.com/webstore/detail/cleanflight-configurator/enacoimjcgeinfnnnpajinjgmkahmfgb

The source for it is here:
81

Dominic Clifton's avatar
Dominic Clifton committed
82
https://github.com/cleanflight/cleanflight-configurator
83

Dominic Clifton's avatar
Dominic Clifton committed
84
## Contributing
dongie's avatar
dongie committed
85

Dominic Clifton's avatar
Dominic Clifton committed
86
Contributions are welcome and encouraged.  You can contribute in many ways:
Dominic Clifton's avatar
Dominic Clifton committed
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105

* Documentation updates and corrections.
* How-To guides - received help?  help others!
* Bug fixes.
* New features.
* Telling us your ideas and suggestions.

The best place to start is the IRC channel on freenode (see above), drop in, say hi. Next place is the github issue tracker:

https://github.com/cleanflight/cleanflight/issues
https://github.com/cleanflight/cleanflight-configurator/issues

Before creating new issues please check to see if there is an existing one, search first otherwise you waste peoples time when they could be coding instead!

## Developers

There is a developers section in the `docs/development` folder.

Before making any code contributions, take a note of the https://github.com/multiwii/baseflight/wiki/CodingStyle
Dominic Clifton's avatar
Dominic Clifton committed
106
107
108

For this fork it is also advised to read about clean code, here are some useful links:

Dominic Clifton's avatar
Dominic Clifton committed
109
110
111
112
113
* http://cleancoders.com/
* http://en.wikipedia.org/wiki/SOLID_%28object-oriented_design%29
* http://en.wikipedia.org/wiki/Code_smell
* http://en.wikipedia.org/wiki/Code_refactoring
* http://www.amazon.co.uk/Working-Effectively-Legacy-Robert-Martin/dp/0131177052
Dominic Clifton's avatar
Dominic Clifton committed
114
115
116
117
118
119
120

TravisCI is also used to run automatic builds

https://travis-ci.org/cleanflight/cleanflight

[![Build Status](https://travis-ci.org/cleanflight/cleanflight.svg?branch=master)](https://travis-ci.org/cleanflight/cleanflight)

Akfreak's avatar
Akfreak committed
121
122
123
## Cleanflight Releases
https://github.com/cleanflight/cleanflight/releases

Dominic Clifton's avatar
Dominic Clifton committed
124