I am facing difficulties with using the measurements by the magnetometer. When the Navio2 module boots, for the first time I try to read the magnetometer, everything works but after the first time, usually, it is not possible to get any more measurements. The magnetometer only returns 0 values for al 3 axes. I have read another topic, where it is stated that this is probably caused by a driver issue and it was not supported back then.
Since some time has passed, I am wondering if there is a fix around this issue because everything I tried doesn’t seem to work. I have to reboot Navio2 to get the magnetometer to function properly again, yet this is not a solution to the problem.
Yes, I mean this post. Regarding the screenshot, I do not have anything to provide since I call the function to read the magnetometer data and a 3x1 vector is returned containing zeros values, i.e., m9m = [0.0, 0.0, 0.0]. This happens when I use your scripts to obtain measurements but also scripts that I have written but entirely based on the your scripts use the magnetometer.
I am using the MPU9250 magnetometer since you do not provide the Python drivers for the LSM9DS1. I hope this changes soon since I can’t really understand why you provide your customers only with the Python drivers for MPU9250 and not for both IMUs as it is the case for C++.
In terms of the magnetometer calibration. I have tried and calculated the two matrices corresponding to the hard- and iron-distortion but the issue continues to exist. I don’t think that this is a calibration issue because zero values are returned when the registers are “read”.
I have not tested the unit outside. Will do and provide the results.
Accelerometer and gyroscope data are entirely fine. There is not any problem with these sensors.
The magnetometer returns correct data only the first time I execute some code and for the entire execution. As soon as the first execution is finished, then the second time I execute the same script, a zero vector is returned as the magnetometer measurement.
I have not tried Ardupilot but I don’t think that this is the problem. The magnetometer should work fine provided that I run the examples by Emlid. I wrote some code to be able and run C++ from Python and the problem related to the magnetometer does not appear in the case of LSM9DS1. It seems to work fine in terms of measurements collection. The problem only exists when I select the MPU9250 IMU for usage.