Mahony AHRS on STM32F401

I have the following problem. I'm trying to implement a filter Mahony / Madgwick used to estimate the orientation of the object.

STM32F401 processor which the accelerometer / magnetometer LIS303DLHC and gyroscope L3GD20.

My evaluation board

stm32f401 orientation

I am using that filter c implementationhttps://code.google.com/p/moveonpc/source/browse/external/MahonyAHRS/MahonyAHRS.c?name=mater]

I have two functions, one using only two sensors

MahonyAHRSupdateIMU (float gx,  float gy, float gz, float x, float y, float z)

Surprisingly to function properly need to give MahonyAHRSupdateIMU (-GX, -GY, -GZ, AX, AY, AZ); I do not why not MahonyAHRSupdateIMU (-GX, -GY, GZ, AX, AY, AZ); 

Although this variant is functioning properly, but because of the lack of magnetometer I'm dealing with an increasing error in the Z axis

Another option is to use all three sensors and here I have a problem

MahonyAHRSupdate (float gx, gy float, float g, float and x, float y, float z, float x, float we float m)

I do not know if I should give arguments

MahonyAHRSupdate (-gx, -gy, -gz, ax, ay, az, mx, my, mz) 

MahonyAHRSupdate (-gx, -gy, -gz, ax, ay, az, mx, mz, my)

.

.

.

MahonyAHRSupdate (-gx, -gy, -gz, ax, ay, az, -mz, -my, -mx)

It gives me a total of 48 possibilities. I modified the microprocessor program so that after pressing the button, program caused another function (with different configuration data from the magnetometer). I examined all the possibilities and none of them work properly. This is particularly evident with a turnover above 180 degrees.

The filter at the output returns in the form of a quaternion qw, qx, qy, qz The data are sent via the UART protocol to the PC where the data is visualized in OpenGL (two separate programs: one QT, the second pure OpenGL).

It converts the characters quaternionu matrix, and visualizes simply each axle. Quaternion before conversion is subjected to a process of normalization (just in case, although the processor also this can be done).

Filter using only two sensors work much better than using up to three, which is totally illogical. Someone may know something with the topic?

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –

Activity