Aaron Berk
/
IMUfilter_HelloWorld
Inertial measurement unit orientation filter example.
main.cpp@0:56aa1ac6b59d, 2010-08-03 (annotated)
- Committer:
- aberk
- Date:
- Tue Aug 03 15:09:45 2010 +0000
- Revision:
- 0:56aa1ac6b59d
- Child:
- 1:9133b457bb41
Version 1.0
Who changed what in which revision?
User | Revision | Line number | New 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 | 0:56aa1ac6b59d | 5 | IMUfilter imuFilter(0.1); |
aberk | 0:56aa1ac6b59d | 6 | |
aberk | 0:56aa1ac6b59d | 7 | AnalogIn accelerometerX(p15); |
aberk | 0:56aa1ac6b59d | 8 | AnalogIn accelerometerY(p16); |
aberk | 0:56aa1ac6b59d | 9 | AnalogIn accelerometerZ(p17); |
aberk | 0:56aa1ac6b59d | 10 | AnalogIn gyroscopeX(p18); |
aberk | 0:56aa1ac6b59d | 11 | AnalogIn gyroscopeY(p19); |
aberk | 0:56aa1ac6b59d | 12 | AnalogIn gyroscopeZ(p20); |
aberk | 0:56aa1ac6b59d | 13 | |
aberk | 0:56aa1ac6b59d | 14 | int main() { |
aberk | 0:56aa1ac6b59d | 15 | |
aberk | 0:56aa1ac6b59d | 16 | while(1){ |
aberk | 0:56aa1ac6b59d | 17 | |
aberk | 0:56aa1ac6b59d | 18 | wait(0.1); |
aberk | 0:56aa1ac6b59d | 19 | //Gyro and accelerometer values must be converted to rad/s and m/s/s |
aberk | 0:56aa1ac6b59d | 20 | //before being passed to the filter. |
aberk | 0:56aa1ac6b59d | 21 | imuFilter.updateFilter(gyroscopeX.read(), |
aberk | 0:56aa1ac6b59d | 22 | gyroscopeY.read(), |
aberk | 0:56aa1ac6b59d | 23 | gyroscopeZ.read(), |
aberk | 0:56aa1ac6b59d | 24 | accelerometerX.read(), |
aberk | 0:56aa1ac6b59d | 25 | accelerometerY.read(), |
aberk | 0:56aa1ac6b59d | 26 | accelerometerZ.read()); |
aberk | 0:56aa1ac6b59d | 27 | imuFilter.computeEuler(); |
aberk | 0:56aa1ac6b59d | 28 | pc.printf("%f, %f, %f\n", imuFilter.getRoll(), imuFilter.getPitch(), imuFilter.getYaw()); |
aberk | 0:56aa1ac6b59d | 29 | |
aberk | 0:56aa1ac6b59d | 30 | } |
aberk | 0:56aa1ac6b59d | 31 | |
aberk | 0:56aa1ac6b59d | 32 | } |