Inertial measurement unit orientation filter example.

Dependencies:   mbed IMUfilter

Committer:
aberk
Date:
Sat Nov 27 12:03:06 2010 +0000
Revision:
1:9133b457bb41
Parent:
0:56aa1ac6b59d
Changed constructor arguments to reflect changes in library API.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aberk 0:56aa1ac6b59d 1 #include "IMUfilter.h"
aberk 0:56aa1ac6b59d 2
aberk 0:56aa1ac6b59d 3 Serial pc(USBTX, USBRX);
aberk 0:56aa1ac6b59d 4
aberk 1:9133b457bb41 5 //Change the second parameter (which is a tuning parameter)
aberk 1:9133b457bb41 6 //to try and get optimal results.
aberk 1:9133b457bb41 7 IMUfilter imuFilter(0.1, 10);
aberk 0:56aa1ac6b59d 8
aberk 0:56aa1ac6b59d 9 AnalogIn accelerometerX(p15);
aberk 0:56aa1ac6b59d 10 AnalogIn accelerometerY(p16);
aberk 0:56aa1ac6b59d 11 AnalogIn accelerometerZ(p17);
aberk 0:56aa1ac6b59d 12 AnalogIn gyroscopeX(p18);
aberk 0:56aa1ac6b59d 13 AnalogIn gyroscopeY(p19);
aberk 0:56aa1ac6b59d 14 AnalogIn gyroscopeZ(p20);
aberk 0:56aa1ac6b59d 15
aberk 0:56aa1ac6b59d 16 int main() {
aberk 0:56aa1ac6b59d 17
aberk 0:56aa1ac6b59d 18 while(1){
aberk 0:56aa1ac6b59d 19
aberk 0:56aa1ac6b59d 20 wait(0.1);
aberk 0:56aa1ac6b59d 21 //Gyro and accelerometer values must be converted to rad/s and m/s/s
aberk 0:56aa1ac6b59d 22 //before being passed to the filter.
aberk 0:56aa1ac6b59d 23 imuFilter.updateFilter(gyroscopeX.read(),
aberk 0:56aa1ac6b59d 24 gyroscopeY.read(),
aberk 0:56aa1ac6b59d 25 gyroscopeZ.read(),
aberk 0:56aa1ac6b59d 26 accelerometerX.read(),
aberk 0:56aa1ac6b59d 27 accelerometerY.read(),
aberk 0:56aa1ac6b59d 28 accelerometerZ.read());
aberk 0:56aa1ac6b59d 29 imuFilter.computeEuler();
aberk 0:56aa1ac6b59d 30 pc.printf("%f, %f, %f\n", imuFilter.getRoll(), imuFilter.getPitch(), imuFilter.getYaw());
aberk 0:56aa1ac6b59d 31
aberk 0:56aa1ac6b59d 32 }
aberk 0:56aa1ac6b59d 33
aberk 0:56aa1ac6b59d 34 }