Added algorithm implementations for
- Magnetometer calibration (3 axis)
- 6DOF IMU
for GNU Octave / Matlab and for C++.
Jump to download section.
Added algorithm implementations for
for GNU Octave / Matlab and for C++.
Jump to download section.
So, here is some more information…
Picture of the new control “station” is below. Tablet is not fixed to the RC-set yet. Now I am using a very basic RC-set which has USB connection to test handling and usage, but will need some more sophisticated controller in the future.
Added Basic matrix and rotation math operation libraries for download (see download section)
More information will follow soon (a week or two ) :
- Magnetometer calibration algorithm
- Mathematical model will come later
I have not had much time but at least I have tried to solve the problem of excessive vibrations when heli is tested on the stand. As the vibrations reach measurement limits of the sensors the only way is mechanical dumping.
Thus I created a new IMU board holder consisting of a heavy iron plate & soft foam.
Here it is
Besides this I have decided to add support for centripetal acceleration calculation in the INS as it is intended to be used with some regular plane models in the future (when velocity and rates are know calculation is pretty easy: ).
Last week I returned to the to INS just to verify one idea.
The algorithm presented in the INS section works with (at least) two nonparallel vectors (acceleration/velocity and magnetometer).
This means that
But for the magnetometer it means you have to know its declination and inclination during flight or estimate it prior flight.
For declination and inclination earth magnetic field calculation is needed. It requires position and date which in turn require GPS data.
Estimation prior filght (when the object is steady) is one-time estimation and is hard to re-estimate during flight. This is more than enough for small UAV, but for some long range UAV this could be a problem.
But actually there is a solution. Magnetometer can be turned into “2D” mode. Inclination is ignored and transformed to 0. 3-axis magnetometer measurement is still needed but now the INS can primarily align to acceleration/velocity vector and correct for heading. This also eliminates roll and pitch errors due to magnetic field distortions/anomalies. On the other hand it reduces information of one axis of one vector which influences absolute accuracy.
The modification is quite simple
Measured magnetic vector can be substituted by the modified one.
Expected magnetic field in ENU will also contain only East and North component, Up compoment will be set to 0. Now magnetic field errors corrupt mostly heading. Inclination can freely change during flight.
And there is another possible improvement .
As the estimated attitude error (stored in the error quaternion) does not have to be transferred to the estimated attitude (represented by a quaternion too) every step, it actually can be thrown away when for example a longer ladting acceleration of UAV is detected. This would further improve accuracy in IMU mode.
Finally, I have started working on the pitch and roll controllers.
What I lack the most is time, but at least the project continues.
Finally, heading controller is complete. Simple PSD failed during tests, so state space controller with zeroing steady state deviation has been used. The controller utilizes angular velocity and heli heading.
Roll and pitch controllers will follow.
Plus first piece of source code is available for download.
It contains basic peripheral control. It has been written in C++ for Linux .
See Download section for more information.