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
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?
Replies