Kalman filter for Eurobot

Committer:
madcowswe
Date:
Tue Mar 20 12:43:16 2012 +0000
Revision:
0:a0285293f6a6
Algo done, vars not done

Who changed what in which revision?

UserRevisionLine numberNew contents of line
madcowswe 0:a0285293f6a6 1 /* mbed SRF05 Ultrasonic Rangefiner Library
madcowswe 0:a0285293f6a6 2 * Copyright (c) 2007-2010, cstyles, sford
madcowswe 0:a0285293f6a6 3 *
madcowswe 0:a0285293f6a6 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
madcowswe 0:a0285293f6a6 5 * of this software and associated documentation files (the "Software"), to deal
madcowswe 0:a0285293f6a6 6 * in the Software without restriction, including without limitation the rights
madcowswe 0:a0285293f6a6 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
madcowswe 0:a0285293f6a6 8 * copies of the Software, and to permit persons to whom the Software is
madcowswe 0:a0285293f6a6 9 * furnished to do so, subject to the following conditions:
madcowswe 0:a0285293f6a6 10 *
madcowswe 0:a0285293f6a6 11 * The above copyright notice and this permission notice shall be included in
madcowswe 0:a0285293f6a6 12 * all copies or substantial portions of the Software.
madcowswe 0:a0285293f6a6 13 *
madcowswe 0:a0285293f6a6 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
madcowswe 0:a0285293f6a6 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
madcowswe 0:a0285293f6a6 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
madcowswe 0:a0285293f6a6 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
madcowswe 0:a0285293f6a6 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
madcowswe 0:a0285293f6a6 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
madcowswe 0:a0285293f6a6 20 * THE SOFTWARE.
madcowswe 0:a0285293f6a6 21 */
madcowswe 0:a0285293f6a6 22
madcowswe 0:a0285293f6a6 23
madcowswe 0:a0285293f6a6 24 #ifndef MBED_RFSRF05_H
madcowswe 0:a0285293f6a6 25 #define MBED_RFSRF05_H
madcowswe 0:a0285293f6a6 26
madcowswe 0:a0285293f6a6 27 #include "mbed.h"
madcowswe 0:a0285293f6a6 28 #include "RF12B.h"
madcowswe 0:a0285293f6a6 29
madcowswe 0:a0285293f6a6 30 #define CODE0 0x22
madcowswe 0:a0285293f6a6 31 #define CODE1 0x44
madcowswe 0:a0285293f6a6 32 #define CODE2 0x88
madcowswe 0:a0285293f6a6 33
madcowswe 0:a0285293f6a6 34 /* SAMPLE IMPLEMENTATION!
madcowswe 0:a0285293f6a6 35 RFSRF05 my_srf(p13,p21,p22,p23,p24,p25,p26,p5,p6,p7,p8,p9);
madcowswe 0:a0285293f6a6 36
madcowswe 0:a0285293f6a6 37
madcowswe 0:a0285293f6a6 38 void callbinmain(int num, float dist) {
madcowswe 0:a0285293f6a6 39 //Here is where you deal with your brand new reading ;D
madcowswe 0:a0285293f6a6 40 }
madcowswe 0:a0285293f6a6 41
madcowswe 0:a0285293f6a6 42 int main() {
madcowswe 0:a0285293f6a6 43 pc.printf("Hello World of RobotSonar!\r\n");
madcowswe 0:a0285293f6a6 44 my_srf.callbackfunc = callbinmain;
madcowswe 0:a0285293f6a6 45
madcowswe 0:a0285293f6a6 46 while (1);
madcowswe 0:a0285293f6a6 47 }
madcowswe 0:a0285293f6a6 48
madcowswe 0:a0285293f6a6 49 */
madcowswe 0:a0285293f6a6 50 class DummyCT;
madcowswe 0:a0285293f6a6 51
madcowswe 0:a0285293f6a6 52 class RFSRF05 {
madcowswe 0:a0285293f6a6 53 public:
madcowswe 0:a0285293f6a6 54
madcowswe 0:a0285293f6a6 55 RFSRF05(
madcowswe 0:a0285293f6a6 56 PinName trigger,
madcowswe 0:a0285293f6a6 57 PinName echo0,
madcowswe 0:a0285293f6a6 58 PinName echo1,
madcowswe 0:a0285293f6a6 59 PinName echo2,
madcowswe 0:a0285293f6a6 60 PinName echo3,
madcowswe 0:a0285293f6a6 61 PinName echo4,
madcowswe 0:a0285293f6a6 62 PinName echo5,
madcowswe 0:a0285293f6a6 63 PinName SDI,
madcowswe 0:a0285293f6a6 64 PinName SDO,
madcowswe 0:a0285293f6a6 65 PinName SCK,
madcowswe 0:a0285293f6a6 66 PinName NCS,
madcowswe 0:a0285293f6a6 67 PinName NIRQ);
madcowswe 0:a0285293f6a6 68
madcowswe 0:a0285293f6a6 69 /** A non-blocking function that will return the last measurement
madcowswe 0:a0285293f6a6 70 *
madcowswe 0:a0285293f6a6 71 * @returns floating point representation of distance in cm
madcowswe 0:a0285293f6a6 72 */
madcowswe 0:a0285293f6a6 73 float read0();
madcowswe 0:a0285293f6a6 74 float read1();
madcowswe 0:a0285293f6a6 75 float read2();
madcowswe 0:a0285293f6a6 76
madcowswe 0:a0285293f6a6 77 /** A assigns a callback function when a new reading is available **/
madcowswe 0:a0285293f6a6 78 void (*callbackfunc)(int beaconnum, float distance);
madcowswe 0:a0285293f6a6 79 DummyCT* callbackobj;
madcowswe 0:a0285293f6a6 80 void (DummyCT::*mcallbackfunc)(int beaconnum, float distance);
madcowswe 0:a0285293f6a6 81
madcowswe 0:a0285293f6a6 82
madcowswe 0:a0285293f6a6 83
madcowswe 0:a0285293f6a6 84 /** A short hand way of using the read function */
madcowswe 0:a0285293f6a6 85 operator float();
madcowswe 0:a0285293f6a6 86
madcowswe 0:a0285293f6a6 87 private :
madcowswe 0:a0285293f6a6 88 RF12B _rf;
madcowswe 0:a0285293f6a6 89 DigitalOut _trigger;
madcowswe 0:a0285293f6a6 90 InterruptIn _echo0;
madcowswe 0:a0285293f6a6 91 InterruptIn _echo1;
madcowswe 0:a0285293f6a6 92 InterruptIn _echo2;
madcowswe 0:a0285293f6a6 93 InterruptIn _echo3;
madcowswe 0:a0285293f6a6 94 InterruptIn _echo4;
madcowswe 0:a0285293f6a6 95 InterruptIn _echo5;
madcowswe 0:a0285293f6a6 96 Timer _timer;
madcowswe 0:a0285293f6a6 97 Ticker _ticker;
madcowswe 0:a0285293f6a6 98 void _rising (void);
madcowswe 0:a0285293f6a6 99 void _falling (void);
madcowswe 0:a0285293f6a6 100 void _startRange (void);
madcowswe 0:a0285293f6a6 101 float _dist[3];
madcowswe 0:a0285293f6a6 102 char _code[3];
madcowswe 0:a0285293f6a6 103 int _beacon_counter;
madcowswe 0:a0285293f6a6 104 bool ValidPulse;
madcowswe 0:a0285293f6a6 105
madcowswe 0:a0285293f6a6 106 };
madcowswe 0:a0285293f6a6 107
madcowswe 0:a0285293f6a6 108 #endif