Is the macro module required for saving the calibration values?

Hi, I would like to ask if the macro module required for saving the calibration values, so that the "High accuracy" calibration state will persist for the following data recording sessions?

In our Android app the "High accuracy" state is back to "unreliable" every time we re-connect the IMUs to the app, which didn't seem like a persistent calibration to me. We only read out the calibration state in the sensor fusion module, and called the "mbl_mw_sensor_fusion_write_calibration_data" function to write it to the board, but didn't use the "macro module".

It says in the tutorial that "You can combine the write operation with macro module to store the calibration data in the flash memory". Does that mean in order to have persistent calibration state, we have to use the macro module?

Thanks in advance.

Comments

  • It says in the tutorial that "You can combine the write operation with macro module to store the calibration data in the flash memory". Does that mean in order to have persistent calibration state, we have to use the macro module?

    Yes

  • Do you have any samples of writing the calibration data to memory with Android? I am trying to run the Python examples but when I execute the sample macro_setup.py it never ends. I need to kill the process for the code to finish.

  • You have to move the sensor around.

    Please see this tutorial section and watch the video: https://mbientlab.com/tutorials/Calibration.html

  • I was able to get the sensor to calibrate using the Python calibrate example, but I am not able to get the calibration information to save to the board. I tried using the Python marco example but I cannot get it to work. When I tried to run the Python macro_setup.py it never stops running.

    I am really wondering if you have an example of it using Android. I am having an issue converting your Python code to Android since the call are very different in each.

  • Hey awsllcjeff, I will see what I can do. It's been tough because our Android dev is currently on hiatus.

  • Thanks. I really appreciate any help I can get.

  • Laura, I am wondering if you have any updates on getting the example code. Thanks.

  • Laura,
    I finally got the code working to calibrate the sensor, but now I am having issues with storing the calibration data in a macro. I followed the code examples to store the data and it seams to work except that it returns null for the macro ID and when I reconnect to the sensor the calibration data is gone. Here is the code I am using:

    CancellationTokenSource cts = new CancellationTokenSource();
                        sensorFusionBosch.start();
                        sensorFusionBosch.calibrate(cts.getToken(), state -> {
                            Log.i("MainActivity", state.toString());
                        })
                                .onSuccess(task2 -> {
                                    sensorFusionBosch.stop();
                                    final Macro macro2 = metawear.getModule(Macro.class);
                                    macro2.startRecord(true);
                                    sensorFusionBosch.writeCalibrationData(task2.getResult());
                                    macro2.endRecordAsync().continueWith(new Continuation<Byte, Void>() {
                                        @Override
                                        public Void then(Task<Byte> task) throws Exception {
                                            Log.i("MainActivity", "Macro ID = " + task.getResult());
                                            return null;
                                        }
                                    });
                                    return null;
                                });
    
  • We still don't have an Android person on staff. I can provide Python snippets if you want.

Sign In or Register to comment.