arcore-android-sdk icon indicating copy to clipboard operation
arcore-android-sdk copied to clipboard

ArCore camera pose drift and frozen

Open kingbrilliant opened this issue 3 years ago • 5 comments

SPECIFIC ISSUE ENCOUNTERED

Our project used a TextureView, not a GLSurfaceView, in our own thread we just used the pose of the camera, but we found that on Samsung S21 device the pose of camera is frozen or drif, but the pose of camera on a pixel device is correct, does anyone can help?

I got this log: INVALID_ARGUMENT: Passed timestamp is too new. [mtc.pose_node.latest_imu_timestamp_ns='193470195637552'] === Source Location Trace: === third_party/redwood/perception/pose_manager/pose_manager.cc:395 third_party/redwood/perception/pose_manager/pose_manager.cc:112 vr/perception/depth/projects/motion_stereo/manager/motion_stereo_manager.cc:183 vr/perception/depth/projects/motion_stereo/manager/motion_stereo_manager.cc:779

vio_initializer.cc:668] generic::internal: [SSBA Outputs Validation] Failed: bias estimates too large. Accel bias in m/sec^2 3.36369, maximum threshold 2 Gyro bias in rad/sec 0.00583154, maximum threshold 0.15; Initializer's SSBA failed to produce a valid output.

W0207 10:04:51.901015 11802 vio_fault_detector.cc:162] VIO is moving fast with speed (m/s): 0.92447 but RANSAC failed to provide valid frame to frame translation by reporting degeneracy.

VERSIONS USED

  • Android Studio:
  • ARCore SDK for Android: 1.27.0
  • Device manufacturer, model, and O/S: Samsung S21 Android12
  • Google Play Services for AR (ARCore): 1.29.213210293 On Windows, use: adb shell pm dump com.google.ar.core | findstr /i "packages: versionName" On macOS, use: adb shell pm dump com.google.ar.core | egrep -i versionName\|packages:
  • Output of adb shell getprop ro.build.fingerprint: samsung/t2sxxx/t2s:12/SP1A.210812.016/G996BXXU3BUL7:user/release-keys

kingbrilliant avatar Jan 25 '22 10:01 kingbrilliant

I'm not programming with ARCore, but as a user I'm seeing results that are consistent with OP's observation. Testing on a Galaxy S21 ultra, ARCore apps used to work great on Android 11. Both "3D Live Scanner" and "Depth lab" apps used to work great. Same thing for 3d measuring apps. Now, (I think after updating to Android 12, but I can't be sure) they are almost impossible to use. Both work fine for a couple of seconds, then the pose either freezes or drifts like crazy, and this kills the depth estimation.

I've tried calibrating the magnetometer, accelerometer and gyro using Samsungs diagnostics app. It makes no difference. I see pretty smooth and consistent IMU readings on those apps. No glitches or bias. But anything that uses ARCore is impossible to use.

For a comparison, a Galaxy Note 10 Lite, a mid range OLD phone that is not even certified for the Depth API, works pretty well in all those apps. IF I hold both phones side by side, the Note 10 does a pretty good job at estimating depth, while the S21 ultra doesn't get a single consistent measurement.

Anything I can do to help diagnose the problem, I'm available to help. I can also find my way around Android Studio, but I'm not an advanced android programmer.

jcobreros avatar Jan 29 '22 14:01 jcobreros

I'm not programming with ARCore, but as a user I'm seeing results that are consistent with OP's observation. Testing on a Galaxy S21 ultra, ARCore apps used to work great on Android 11. Both "3D Live Scanner" and "Depth lab" apps used to work great. Same thing for 3d measuring apps. Now, (I think after updating to Android 12, but I can't be sure) they are almost impossible to use. Both work fine for a couple of seconds, then the pose either freezes or drifts like crazy, and this kills the depth estimation.

I've tried calibrating the magnetometer, accelerometer and gyro using Samsungs diagnostics app. It makes no difference. I see pretty smooth and consistent IMU readings on those apps. No glitches or bias. But anything that uses ARCore is impossible to use.

For a comparison, a Galaxy Note 10 Lite, a mid range OLD phone that is not even certified for the Depth API, works pretty well in all those apps. IF I hold both phones side by side, the Note 10 does a pretty good job at estimating depth, while the S21 ultra doesn't get a single consistent measurement.

Anything I can do to help diagnose the problem, I'm available to help. I can also find my way around Android Studio, but I'm not an advanced android programmer.

Could you send this ticket to the developer of ArCore?

kingbrilliant avatar Jan 30 '22 09:01 kingbrilliant

Sorry, do you mean opening a new issue in this repo?

jcobreros avatar Jan 30 '22 16:01 jcobreros

Sorry, do you mean opening a new issue in this repo?

Could you help send my logs to the corresponding developers? The ArCore SDK team?

kingbrilliant avatar Feb 07 '22 02:02 kingbrilliant

Me too, on my Oppo A94, the app I was building was perfectly working without any drift on Android 11. I just passed to Android 12 and I notice drift which makes the app impossible to use. The phone was proposing to Switch to Android 13, hoping this bug was resolved I did update, and I notice the same drift.

It is frustrating. My options are change the firmware version to Android 11 and risk to break my phone, or wait for Android to do something ...

We're doomed guys no more arcore for us

MasterHansCoding avatar Oct 25 '23 16:10 MasterHansCoding