QR code tracking accuracy

Hello,

I hope you’re doing well. I’m reaching out because I’m experiencing some challenges with tracking accuracy in my project, where precision is very important.

I’m using a single QR code (15 cm size) with the following settings:

customProfileSettings.AnalysisInterval = MarkerDetectorFullAnalysisInterval.Max;
customProfileSettings.CameraHint = MarkerDetectorCamera.RGB;
customProfileSettings.CornerRefinement = MarkerDetectorCornerRefineMethod.None;
customProfileSettings.ResolutionHint = MarkerDetectorResolution.High;
customProfileSettings.FPSHint = MarkerDetectorFPS.Max;
customProfileSettings.UseEdgeRefinement = false;
_detectorSettings.QRSettings.EstimateQRLength = false;
_detectorSettings.QRSettings.QRLength = 0.15f;
_detectorSettings.MarkerDetectorProfile = MarkerDetectorProfile.Custom;
_detectorSettings.CustomProfileSettings = customProfileSettings;
_detectorSettings.MarkerType = MarkerType.QR;

However, I’m occasionally getting shifted positions and rotations (approximately 3 degrees in rotation). The results are significantly worse when I’m looking from above at around 90 degrees. This issue is reproducible across different environments and lighting conditions.

I don’t believe I can use plane detection since it’s possible that my QR code might be placed on a diagonal surface.

I have two main questions:

  1. How can I make QR code tracking as precise as possible?

  2. Does Magic Leap 2 support continuous tracking?

I would greatly appreciate any guidance or suggestions you might have. Thank you for your time and assistance.

Best regards, Oleksii

Unity Editor version: 2022.3.54.f1
ML2 OS version: 1.12.0
Unity SDK version : 2.6.0

You can use the Accuracy profile to get higher accuracy. However depending on your environment you may want to modify the values. For example modify Corner Refinement or using the World Cameras Unfortunately, there is not much more that you can do outside of this.

The marker tracker is “continuous” you will get a callback each time the marker tracker detects a marker. However, it runs at a much lower interval than Head Pose.