You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Readme.markdown
+36-10Lines changed: 36 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,25 +5,41 @@ Shumai is _the_ Extended Kalman Filter (EKF) for fixed-wing aircraft. It provide
5
5
6
6
In this first release only roll and pitch are included but yaw, position and wind estimation will follow shortly.
7
7
8
+
What you should understand very clearly about this filter is it has gimbal lock / singularity issues. UAVs aren't used for aerobatics (yet) so if you keep things gentle and smooth (±45 degrees from level in pitch and roll) you'll be just fine.
9
+
8
10
Shumai was developed by [Tim Trueman](http://github.com/timtrueman) and [Ryan Beall](http://diydrones.com/profile/RyanBeall). It's based on a [BYU paper](http://contentdm.lib.byu.edu/ETD/image/etd1527.pdf)[PDF].
9
11
10
-
Quickstart
12
+
Installation
11
13
==========
14
+
15
+
Mac/Linux/Unix
16
+
1. Install X-Plane (this takes the longest)
17
+
2. Download source code
18
+
3. sudo easy_install numpy
19
+
4. Start X-Plane and set the checkbox that outputs data
20
+
5. run "python shumai.py" in the command line
21
+
22
+
Windows
12
23
1. Install X-Plane (this takes the longest)
13
24
2. Download source code
14
-
3. Install Python
15
-
4. Install numpy
16
-
5. Install curses (if available)
17
-
6. Start X-Plane and run "python shumai.py" in the command line
25
+
3. Install the 32-bit Python 2.6 package
26
+
4. Install the 32-bit numpy package
27
+
5. Set the registry thingy so python works in the command line
28
+
6. Start X-Plane and set the checkbox that outputs data
29
+
7. run "python shumai.py" in the command line
18
30
19
-
Configuration
31
+
Future
20
32
=============
21
-
Todo.
33
+
Yaw estimate
34
+
Position estimate
35
+
Wind vector estimate
36
+
Altitude estimate
37
+
Airspeed estimate
38
+
Tuning / noise / real hardware testing (perhaps a genetic algorithm for tuning)
39
+
Porting to other languages/platforms (microcontrollers)
Q: Why does your filter suffer from gimbal lock / singularities? I want to do aerobatics!<br/>
67
+
A: The vast majority of UAVs are not going to be doing crazy maneuvers; a few common sense rules keeps things simple and allows for optimized precision. Also if you think you can solve this problem, email me or just write the code! This is open source after all.
def__linearized_model_output_matrix(self, p, q, r, Vair):
148
174
""" Axhat, ayhat and azhat are used to compute the the expected accelerometer readings given the model (the flight dynamics of a fixed-wing aircraft). Once we have these we can look at the actual readings and adjust things accordingly. [ISEFMAV 2.26] """
def__gain_calculation_and_variance_update(self, p, q, r, Vair):
154
180
""" Calculate linearized output equations...this is the magic of the Kalman filter; here we are figuring out how much we trust the sensors [ISEFMAV 2.27] """
""" Sensor noise penalty, needs a better explanation of how it works. Tau is a tuning parameter which is increased to reduce the Kalman gain on x-axis accelerometer during high pitch rate maneuvers (that flight dynamic is unmodeled). I'm trying values between 10-100. [ISEFMAV 2.28] """
""" Divergence is when the EKF has departed from reality is is confused. I log it so you can see when the EKF goes into a broken state. You can try resetting it and it may come back (no guarantees but it's been known to work). """
0 commit comments