Есть ли какие-то опенсорсные решения для SLAM на мобильных платформах?
Всем привет!
Решаю задачу, которая сводится к локализации телефона на готовой 3D карте (feature points) по кадру с камеры. Конкретный сценарий примерно такой - заранее строится 3d карта (например через COLMAP, openMVG, orb-slam2 и т.д.), потом на телефоне при включенной AR-сессии (ARCore/ARKit) берутся кадры с камеры (раз в секунду, например), отправляются на сервер, где передаются алгоритму локализации, находится позиция телефона относительно карты в координатах карты, потом через матрицу камеры из AR-фреймворка находится матрица перехода из координат сессии в координаты карты.
На данный момент единственным рабочим вариантом оказался COLMAP - новый кадр просто добавляется в базу, проводится мапинг и bundle adjustment, больше половины кадров локализаются таким образом, но производительность не очень - там полносвязный матчинг SIFT-дескрипторов нового кадра с дескрипторами всех картинок, которые использовались для построения карты.
Использовался также orb-slam2 и его форки. Построить карту при съёмке обычной камерой смартфона как правило не удаётся - дико сбивается. Хорошо строит карту по съёмке камерой 360 Ricoh Theta Z, но локализовать по ней кадры или видео со смартфона тоже отказывается.
Собственно, вопросов несколько:
- можно ли заставить orb-slam2 работать с обычными камерами?
- есть ли какие-то другие SLAM-фреймворки, которые можно для этого использовать?
- нет ли какого-то альтернативного решения для данной задачи?
Буду рад любым инсайтам и замечаниям, а также ссылкам на полезные ресурсы или тематические комьюнити.