Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Geospatial localization has very different performance depending on the device. #180

Open
chankeiro opened this issue Mar 5, 2024 · 7 comments

Comments

@chankeiro
Copy link

chankeiro commented Mar 5, 2024

Hi. I am experiencing very different behavior between Android devices regarding Geospatial Localization. The Geospatial Anchor in the scene is placed at the center of the field of an open soccer stadium. It has VPS coverage. Most devices consistently reach horizontal accuracy < 5m and Yaw Accuracy < 15º in about 10 to 15 seconds. The anchored gameobjects are indeed correctly positioned. However, two of my test devices take a while longer (even minutes) to reach good accuracy, and eventually the anchored gameobjects are noticeably displaced horizontally and vertically several meters from their intended position. The final AR experience with these devices is also very shaky, with the anchored gameobjects wobbling or "jumping" several meters very often.

I cannot find a pattern to these differences. For example, some older devices still locate quite well, but a device that does not was released a month ago and should theoretically be capable enough. There is also a mix of Android versions and CPU/GPUs in both groups:

This is the complete list:

Smartphones that localize correctly:.

  • Xiaomi 11T Pro: Android 13, SnapD. 888, released 2 years ago
  • Xiaomi Poco F2 Pro: Android 12, SnapD. 865, 3 years
  • Xiaomi Redmi Note 10 5G: Android 12, Dimensity 700, 3 years
  • Xiaomi Redmi K30 5G: Android 10, SnapD. 765, 4 years
  • Samsung A51: Android 12, Exynos 9611, 4 years

Smartphones with poor performance:

  • Realme 12 Pro+: Android 14, SnapD. 7 Gen2, released last month (it is not on the list of ARCore supported devices yet, but Google Play Services for AR is installed and up to date)
  • OnePlus Nord2 5G: Android 13, Dimensity 1200, 2 years.

I would like to know if anyone has had a similar experience and if there is any workaround or good practice to mitigate this bad behavior with some devices. This project is a live game with a soccer team that we can't deliver if we can't solve these problems. Any help will be greatly appreciated.

@devbridie
Copy link
Member

Could you please send the adb shell getprop ro.build.fingerprint for the poor performing devices?

@chankeiro
Copy link
Author

chankeiro commented Mar 5, 2024

Hi @devbridie,

Realme 12 Pro+: realme/RMX3840EEA/RE5C82L1:14/UKQ1.230924.001/U.R4T2.15a8088_13f16_13f18:user/release-keys
One Plus Nord 2: OnePlus/DN2103EEA/OP515BL1:13/TP1A.220905.001/R.15bfc77-f07e:user/release-keys

Thanks!

@chankeiro
Copy link
Author

Hello again. Did you find out anything? Please let me know if you need more info, videos, etc.

@mrichards
Copy link

There is not anything about those phones specifically that we're aware of which would lead to notably different outcomes. As described here, VPS relies heavily on the camera imagery for positioning and is most reliable where their is good Street View coverage. However, if other sensors such as the GPS, compass, and accelerometer are not reporting positional data accurately, the anchors may appear to be positioned inaccurately or jump around, even if VPS localization has succeeded.

Can you compare the raw sensor readings across devices, to ensure there are no inconsistencies in the sensor data reported by the different phones? You could do this by adding logcat output, adding a debugging overlay, or simply installing a 3rd party app that already displays this information. It would be best to stand in the same position and move as consistently as possible between test runs across phones.

@chankeiro
Copy link
Author

Hi @mrichards. Ok, I will make a couple of videos with these devices overlaying geospatial pose, input.acceleration, input.gyro.attitude and input.gyro.rotationRate and post them here asap.

@chankeiro
Copy link
Author

chankeiro commented Mar 15, 2024

I recorded two videos. One with a device tracking correctly and the other tracking poorly. I've included the geospatial pose and sensor readings. The devices are:

  • OK: Xiaomi 11T Pro: Xiaomi/vili_eea/vili:13/TKQ1.220829.002/V14.0.14.0.TKDEUXM (mid-range, 2 years old)
  • KO: Realme 12 Pro+: realme/RMX3840EEA/RE5C82L1:14/UKQ1.230924.001/U.R4T2.15a8088_13f16_13f18 (mid-range, just released)

I have combined the two videos into a single track https://youtu.be/8N2kvwuXIVo You'll need to switch to HD to see the readings properly

To be honest, I don't see much difference in the readings, but you can clearly see that the red cube is stable for the first phone and not for the second.

By the way, I don't think the problem with the Realme isn't just with the Geospatial Api. I've also done some tests with Cloud Anchors and the stability is not good either.

Please let me know if this helps or if you need more data, videos, etc.

@chankeiro
Copy link
Author

Hi. Do you have any feedback on my previous comment?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants