Phase difference between channels sometimes changes value after calibration

Hello. I have been using raw data taken from the Kraken (thanks to the HeIMDALL DAQ Firmware) to make angle estimations by my own. I noticed that SOMETIMES without changing the position of the transmitter or the Kraken, the phase difference between two receivers changes completely after the Kraken calibrates.

With the Kraken calibrating I mean the calibration that the Kraken performs at (random?) times, not the one that performs first when it is initializing.

For example, suppose the phase difference between two channels is, let’s say, 0.3 rad (over a long period of time: every second the difference is close to 0.3 rad). Then the Kraken performs a calibration, and just after that the phase difference may become, let’s say, -0.3 rad (over a long period of time). The change does not seem to be related to the periodicity of the phases. And obviously the angle estimation made with these two channels changes completely after this.

Does someone has any idea what could cause this problem? I repeat, it happens only sometimes after re-calibration.

The Kraken calibration time depends on how often it’s set within the daq_chain_config.ini file. By default it should be set to check for calibration every 10 minutes.

If the phase difference has changed within those 10 minutes it will be fixed at the next calibration.

But if calibration shouldn’t need to occur every 10 minutes. It should just check the phases with the noise source on, confirm that they are still OK, and then resume, without changing any calibration.

If it’s constantly needing to recalibrate maybe there is some other program hogging the CPU on your machine, causing samples to be dropped? That could cause the USB stream to reorder, resulting in calibration being wrong.

What system are you running on, and is your DSP software quite CPU intensive?

Would you mind sharing how you achieved this? I’m trying to do the same thing and could use some guidance. Which classes did you modify, and how so?