Start a new topic

Marker and 3D Object Recognition Features

We need data on our current direction, so we need to use Aruco instead of QR codes. However, it seems that Aruco recognition is currently not working. Is this intentional? If not, do you have plans to support Aruco or various other markers in the future?

Additionally, I noticed on the official website that there is information about 3D object recognition feature, not just image tracking technology, which is not present in the documentation. Will the ability to recognize 3D objects be added in future versions? If so, when can we expect this addition?


The current version is 0.21.1 and is in testing.

Please check it out and get back to us.


The issue is closed and you'll write more here.


We chose to use Aruco because it has a high recognition rate over long distances (a 5cm marker is recognized at a distance of 2m).


Test device: Lenovo ThinkReality A3 Dev Kit 


Additional questions

1. Currently, the camera seems to recognize the entire area, but I would like to increase the QR recognition rate by narrowing the focus window area and zooming in on the image in the narrowed area like a typical QR app. Is there any way to do this?

I need values for each vertex and Z in the QR degree center.

Currently, the QR only seems to give me the XZ direction from the center.


Can I request a feature to provide values including vertices and Z?


On Aruco - I'll file a Feature Request for that. Similar to Aruco QRCodes with level 1 have the highest detection distance because they have the lowest amount of data stored and the largest squares. If you want to use Aruco regardless you can use their textures with Image Tracking instead. 

On The focus window - This will need to go into a Feature Request as well. Currently there's no possibility to do this. 

On vertices and Z direction:

I can capture this as a Feature Request as well. 

Since the marker size is fixed, you should be able to calculate the vertex positions based on the center position, XZ direction and fixed physical marker size. 

E.g. Upper Left Corner Position = QR Center + XZ Direction * 0.5

Depending on your needs you will need to play with local and world coordinates. 

As a second option you could create a prefab with child objects at each corner that is instantiated for the QR Code. The child objects will give you transform data on the vertices. 


Please note that our Feature Request process may take a lot of time right now. I recommend using QR Codes instead of Aruco as a workaround in the meantime. 



Yes, I understand. 

Thank you for your response. 

For now, I'm testing with QR codes.

I'm using a 5cm/v1 QR,

spacesQrCodeManager with a value of 0.05, 

The recognition rate is fluctuating around 1 meter.

When it's bad, I have to get as close as 15-30cm.


Do you have any ideas on how to improve recognition rates?

On the A3 devkit we are expecting a detection distance of about 1.6m for a QR code the size of 5x5cm. Please note that the size should be measured without including silent regions, using the finder pattern as boundaries.

1m is a bit low. Is there anything in your environment that could cause this? Low/unstable lighting, rapid movement of the glasses or the QR codes? 

If possible, please capture a video or screenshots with TR cast and/or send me your apk + QR code used. If you do not want to post it here, you can send a link to support@spaces.qualcomm.com

Due to security concerns, we are unable to send you any photos or videos, sorry. We've continued to test and have made some additional discoveries.


I've been experimenting with the Dev kit on the Qr 1 stage 10cm / V3 format, and it doesn't recognize it even at 50cm.

Sometimes it works fine at 1.6 meters.

Sometimes it doesn't recognize at all. 


I didn't move fast and kept the maximum range of 45 degrees.


I'm not sure if there are any additional configurations I need to make.


Translated with www.DeepL.com/Translator (free version)

If you can not send videos, can you perhaps send one of the QR codes you've been using? Another option would be to create a random QR code that shows the same behaviour on your side if you can't share your original QR codes. 


Can you please try using the pre built Snapdragon Spaces samples that come with the SDK package on your A3? The QR Code size expected for the samples is 10cm. 

If the samples show better range and detection quality, it's likely that something with your app configuration is broken. 


What detection mode are you using for the QR Codes? Is it set to anything other than the dynamic mode? If possible make a screenshot of your SpacesQrCodeManager within Unity. 

I generated a QR code from https://www.nayuki.io/page/qr-code-generator-library.

I'll attach the image.

As for the mode, I tested it by alternating between dynamic and adaptive.

Additionally, while testing with the A3 Dev kit 

After recognizing a QR code in adaptive mode, the recognized object shakes when walking or sometimes standing still. Is there any way to mitigate this issue as well? 

I'm attaching an image of the QR code I generated earlier.



image

Thanks for providing further details. Did you get to test with the QR Code tracking sample from the Snapdagon Spaces Samples akp? For me the samples showed a detection distance of ~1m for a 10cm version 1 QR code, which is lower than I expected but more than you have been seeing. 


In our documentation we state that only the dynamic mode is working at the moment. https://docs.spaces.qualcomm.com/unity/samples/QRCodeTrackingSample.html#how-the-sample-works see the warning box in the How the sample works section. In Snapdragon Spaces 0.23.0 we plan to support compatibility for all tracking modes. 


As for the shaking - please try dynamic mode instead. This may be hardware constraint caused. The rgb camera of the A3 is running at 30 fps and interpolation may cause some drift here. You can avoid some of this by not using the pose reported by the QRCode Manager directly, but lerping position and rotation over time (thereby sacrificing some precision). 

Please check  Unity - Scripting API: Quaternion.Slerp (unity3d.com)  and  Unity - Scripting API: Vector3.Lerp (unity3d.com)  for that. 

I'll report the lack of precision as feedback to the team and investigate further on the issue.  

The documentation states that it is version 0.19.1 that only supports dynamic mode. The version I use is version 0.21. 

You mentioned that you plan to support all tracking modes in version 0.23 and later, when will version 0.23 be released?

The wobble wasn't that much, but I'd like to check further and ask further questions, thank you.

Snapdragon Spaces 0.23 is scheduled for a release end of April but may be delayed based on it passing the internal quality assurance process. 

As for the distnances to the QR codes, it looks like you and I have the same approximate detection distance. Our latest numbers are from the 0.19.1 SDK. We're starting an internal investigation to see if the detection distance has lowered with the recent releases or if there have been inaccuracies in the measurement process. 

Feel free to add more questions - I'll try to answer to my best ability :) 

Hi again,


Short update on what to expect on QR Codes; We differentiate between 

  • Detection Distance - Max distance to the QR code until it is registered
  • Tracking Distance - Max distance to continue tracking an already registered QR code

For a V1, size 10cm QR code our investigation resulted in a detection distance of 2m and a tracking distance of 3m. 

A lower detection distance for a V3 QR Code is expected. The higher the version, the lower the detection distance. 


Please make sure to limit the version in your QR Code generator to V1. 

Glares and low lighting conditions in the environment can also negatively affect the detection distance. Please take that into account. 



Login or Signup to post a comment