Go Down

### Topic: Using MPU6050 with kalman filter (Read 8797 times)previous topic - next topic

#### kazafwing

##### Jan 31, 2013, 03:55 am
Since I am the first time to use the MPU6050, I have some question about that.

How to link the kalman filter program with the MPU6050 program? I was found the MPU6050 program in arduino playground. Also, I found the kalman filter program in the internet.

Thanks for help.

#### kazafwing

#1
##### Jan 31, 2013, 04:02 am

The code of the Kalman filter is shown below:
Code: [Select]
`// KasBot V1  -  Kalman filter module    float Q_angle  =  0.01; //0.001    //0.005    float Q_gyro   =  0.0003;  //0.003  //0.0003    float R_angle  =  0.01;  //0.03     //0.008    float x_bias = 0;    float P_00 = 0, P_01 = 0, P_10 = 0, P_11 = 0;     float  y, S;    float K_0, K_1;  float kalmanCalculate(float newAngle, float newRate,int looptime)  {    float dt = float(looptime)/1000;                                    // XXXXXXX arevoir    x_angle += dt * (newRate - x_bias);    P_00 +=  - dt * (P_10 + P_01) + Q_angle * dt;    P_01 +=  - dt * P_11;    P_10 +=  - dt * P_11;    P_11 +=  + Q_gyro * dt;        y = newAngle - x_angle;    S = P_00 + R_angle;    K_0 = P_00 / S;    K_1 = P_10 / S;        x_angle +=  K_0 * y;    x_bias  +=  K_1 * y;    P_00 -= K_0 * P_00;    P_01 -= K_0 * P_01;    P_10 -= K_1 * P_00;    P_11 -= K_1 * P_01;        return x_angle;  }`

#### michinyon

#2
##### Jan 31, 2013, 08:19 am
It depends what you are trying to filter,  and if you are trying to filter a single variable or
some kind of fusion of several variables,  which may or may not have some physical model
interconnecting them.

#### kazafwing

#3
##### Feb 01, 2013, 04:23 am
How can I get the raw data from MPU6050??

As I saw that the register map mention the 1A, 1B and 1C address is used for config. Also, the 0D, 0E and 0F is used for read data from X, Y and Z.
Should I use those address to get some raw data??

#### michinyon

#4
##### Feb 01, 2013, 04:29 am
You need to get the datasheet for the device and read it carefull.  The 6050 can be used in quite
a number of ways  and it has a lot of registers to put data in and out of.

#### michinyon

#5
##### Feb 01, 2013, 04:51 am
Quote
The code of the Kalman filter is shown below:

This code is specifically for a segway-type device in one dimension  and probably won't do you much
good for anything else.

#### michinyon

#6
##### Feb 01, 2013, 05:03 am
You need a bunch of documents for this device.   The one describing the register set is called RM-MPU-6000A.pdf

This device has a lot of registers that you can read or write to, through I2C,  the register numbers go up to 117 decimal.

The accelerometer measurement is in 6 registers  3B to 40 hex  and the gyro measurement in 43 to 48 hex.

You need to configure the device,  and then get the data from the device,   and then you can do any calculations
you like ( including Kalman filter, if you want to ) after you get the data.

The device has the really nifty feature that it can be programmed to calculate the orientation of the device
itself, which means the arduino doesn't have to do it.

For configuring and accessing the data from the device, I recommend the library developed by Jeff Rowberg
which is apparently called MPU6050

#### dheerajp

#7
##### Feb 18, 2013, 06:57 pm
i want to use this MPU-6050 for balancing bot using kalman filter can it be done??

thanq

#### caymanguy

#8
##### Jul 04, 2014, 12:29 pm
this is 6050 with kalman

Go Up

Please enter a valid email to subscribe