Not clear what is happening, I saw some long scans (recorded in Data Recorder mode) where near the end it seems there are some lags (>5 sec) that are causing "lost" events, making rtabmap resetting to origin the odometry. Based on the data of the database, it doesn't look like someone did a reset manually, and it looks like it was during fast rotation in textureless areas. I couldn't reproduce that bug though even by hiding the camera, there could be something happening with ARKit failing for some reasons after 2000 nodes recorded (RAM issue?). Here is where ARKit can potentially return lost, then a new map (odometry is reset to origin) is triggered:
|
var lost = false |
|
switch frame.camera.trackingState { |
|
case .normal: |
|
lost = false |
|
case .limited(.excessiveMotion): |
|
lost = false |
|
case .limited(.insufficientFeatures): |
|
lost = false |
|
default: |
|
lost = true |
|
} |
|
// Notify lost with pose=null |
Not clear what is happening, I saw some long scans (recorded in Data Recorder mode) where near the end it seems there are some lags (>5 sec) that are causing "lost" events, making rtabmap resetting to origin the odometry. Based on the data of the database, it doesn't look like someone did a reset manually, and it looks like it was during fast rotation in textureless areas. I couldn't reproduce that bug though even by hiding the camera, there could be something happening with ARKit failing for some reasons after 2000 nodes recorded (RAM issue?). Here is where ARKit can potentially return lost, then a new map (odometry is reset to origin) is triggered:
rtabmap/app/ios/RTABMapApp/RTABMap.swift
Lines 343 to 354 in 51cfc37