VPS 기술로 구현한 실내 AR내비게이션: DEEP.FINE Spatial Crafter의 핵심 기능과 문제 해결 과정
안녕하세요. 딥파인에서 NativeXR 팀의 Unity 파트에서 수석연구원으로 일하고 있는 김종필입니다. 이번 글에서는 저희 자사 솔루션인 XR 공간 구축 플랫폼 DEEP.FINE Spatial Crafter(DSC)의 실내 내비게이션 기능에 핵심 기술인 VPS에 대해 설명해 드리겠습니다.
또한, DSC에서 VPS를 적용하면서 마주한 도전과 그 해결 방안에 대해서도 함께 이야기해 보려 합니다. 이를 통해 DEEP.FINE Spatial Crafter가 어떻게 최적의 실내 내비게이션 경험을 제공하는지 이해하실 수 있을 것입니다.
VPS(Visual Positioning System)란?
VPS는 Visual Positioning System의 약자로, 미리 구축된 공간 정보가 있는 맵과 현실 세계에서 디바이스의 카메라로 촬영한 이미지를 비교하여 현재 디바이스의 위치를 추정하는 기술입니다. 이 기술을 통해 특정 위치에 도달할 수 있는 실내 내비게이션 기능을 DSC에 구현했습니다.
VPS의 이해를 위한 두 가지 방법
공간 정보 맵 구축: 먼저, 실내 공간의 지도를 만듭니다. 이 지도는 공간의 중요한 정보들을 담고 있습니다.
카메라 영상을 통한 위치 추정: 디바이스의 카메라로 촬영한 영상을 미리 만들어둔 지도와 비교하여 현재 위치를 찾습니다.
자세한 공간 정보 맵 구축 방법은DEEP.FINE Spatial Crafter (DSC) 공간 정보 구축 프로세스 블로그 포스트를 참고해주세요. 이후 두번째 과정인 VPS를 사용해 미리 구축한 공간 정보 맵 상에 나의 위치를 찾는 방법에 대해 알아보려고 합니다.
위치와 방향에 대한 이해 - Spatial Pose
컴퓨터 비전에서 'spatial(공간)'이라는 용어는 3D 좌표계의 3D 공간을 의미합니다. 'pose(자세)'는 흔히 '모델이 포즈를 취한다'라고 할 때의 의미와 같아서, 어떤 물체의 위치와 방향을 나타냅니다.
따라서 우리는 이 용어를 사용하여 3D 공간 내 물체의 위치와 방향을 표현합니다. 위치와 방향 값은 x, y, z 값을 가지는 벡터로 표현되며, 이를 6DOF(6 degrees of freedom)라고도 부릅니다.
< 출처: wikipedia 6DOF >
디바이스 카메라 포즈 값 찾기
디바이스의 ‘카메라 이미지’에서 포즈 값을 찾기 위해서는 두 가지 중요한 파라미터가 필요합니다: Extrinsic 파라미터와 Intrinsic 파라미터입니다.
Extrinsic parameter: 이 파라미터는 공간 내에서 카메라의 위치와 방향을 파악하는 데 사용됩니다. 즉, 카메라의 포즈 값을 결정하는 역할을 합니다. 이를 위해서는 Camera calibration이 필요하며, 초점 거리(focal length)와 주점(principal point)을 통해 투영할 행렬(matrix)을 구합니다.
Intrinsic parameter: 이 파라미터는 3D 공간에서 2D 이미지로 변환하는 과정에서 발생하는 왜곡을 보정하는 데 사용됩니다. 예를 들어, 이동거리, 확대, 기울기 등의 값이 포함됩니다.
이 두 가지 파라미터를 사용하여, 우리는 디바이스의 카메라 이미지에서 공간 내의 위치를 정확히 파악할 수 있습니다.
< 출처: wikipedia Pinhole camera model >
현실 세계의 이미지는 디바이스의 카메라 이미지에 투영(projection)됩니다. 투영이란, 한 차원의 좌표계를 다른 차원의 좌표계로 변환해서 표현하는 것을 의미합니다. 이 과정에서 사용되는 모델은 핀홀 카메라 모델(Pinhole camera model)입니다. 핀홀 카메라 모델은 아주 작은 한 점을 통해 빛이 들어와 평면 이미지로 투영되는 방식을 사용합니다.
< 출처: Mathworks >
이러한 파라미터들을 통해, 우리는 3D 공간 내에서 디바이스의 위치를 파악하고, 3D 공간에서 2D 이미지로 변환하는 과정에서 발생하는 왜곡을 보정할 수 있습니다.
공간 정보 맵 상에서 포즈 값 찾기
디바이스 카메라를 통해 얻은 Extrinsic parameter 및 Intrinsic parameter를 사용하여 포즈 값을 추정한 후, 이를 공간 정보 맵과 비교하여 디바이스의 실제 위치를 파악할 수 있습니다. 공간 정보 맵 데이터는 서버에서 처리되며, 각 프레임마다 특징점(feature point), 키 프레임(key frame), 카메라 포즈(camera pose), 디스크립터(descriptor) 등의 정보를 포함하고 있습니다.
특징점(feature point): 이미지에서 포인트가 될 만한 부분으로, 색의 경계나 벡터 정보 등이 담겨 있습니다. 디바이스 카메라에서 실시간으로 생성된 이미지의 특징점을 미리 구축된 공간 정보 맵 데이터의 이미지 특징점과 비교하여 일치하는 부분이 있는지 판단합니다.
특징점이 일치한다면 그 부분이 공간 정보 맵 상의 위치라고 볼 수 있습니다. 또한, 정확도를 높이기 위해 알고리즘을 적용하여 최적의 위치 값을 판단하기도 합니다.
< 출처 : 이미지와 공간 정보 맵 사이의 특징점을 분석하는 과정>
<DSC에서 VPS 측위를 위한 이미지들의 특징점 매칭 이미지>
이를 통해 디바이스 카메라의 이미지와 일치하는 공간 정보 맵 상의 위치를 찾을 수 있으며, 이 위치를 기반으로 카메라 포즈 값을 설정할 수 있습니다. 이렇게 하면 증강현실(AR)로 보여지는 3D 오브젝트들의 포즈 값도 정확하게 설정할 수 있습니다.
VPS의 전체적인 진행 순서
여태까지의 설명을 종합하여, VPS가 어떻게 진행되는지 다음과 같이 설명할 수 있습니다
이미지 데이터 전송: 현재 디바이스의 카메라로 촬영한 이미지 데이터를 공간 정보 맵이 구축된 서버에 전송합니다.
이미지 분석 및 특징점 비교: 서버는 전송된 이미지를 분석하여, 이미지 내의 특징점을 찾아내고 이를 공간 정보 맵의 특징점과 비교하여 일치하는 부분을 찾습니다.
카메라 포즈 값 전송: 서버는 일치하는 부분의 공간 정보 맵 상의 카메라 포즈 값을 계산하여 디바이스로 다시 전송합니다.
위치 및 AR 오브젝트 조정: 디바이스는 수신한 카메라 포즈 값을 사용하여 현재 위치와 방향을 조절하고, 이를 기반으로 영상 위에 증강현실(AR) 3D 오브젝트들의 포즈 값을 조정하여 보여줍니다.
이 과정을 통해 디바이스는 실내 공간에서 정확한 위치를 파악하고, 증강현실 콘텐츠를 정확한 위치에 표시할 수 있게 됩니다.
VPS 측위 이후 디바이스 카메라 포즈 값 설정과 증강현실 구현 과정
문제 해결 과정
DEEP.FINE의 솔루션인 DSC에 VPS 기술을 성공적으로 적용하는 과정에서 몇 가지 기술적 도전 과제와 최적화를 필요로 하는 부분이 있었습니다. DSC에서 VPS를 통해 디바이스의 위치와 방향(포즈 값)을 정밀하게 파악한 후, 증강현실(AR)을 통해 가상의 3D 자산과 함께 길찾기에 필요한 POI(Point Of Interest)를 표시하는 과정에서 더욱 완성도를 높이기 위해 추가적인 개선 작업이 필요했습니다.
시도한 방법과 문제
초기에는 VPS 측위를 통해 얻은 카메라의 포즈 값을 디바이스의 카메라 포즈 값으로 설정한 후, 이를 바탕으로 증강현실의 3D 오브젝트를 보여주는 방식을 구현했습니다. 이 과정에서 다음과 같은 최적화가 필요했습니다.
연산 부하 증가: 디바이스의 카메라 포즈 값을 지속적으로 보정하고 계산해야 하는 연산 부하가 발생했습니다.
하드웨어 이슈: 안드로이드 디바이스에서 VPS 측위 후 카메라 포즈 값을 설정할 때, 하드웨어 문제로 인해 카메라 영상이 잠시 블랙아웃되는 현상이 발견되었습니다.
적용한 해결 방법
이 문제를 해결하기 위해 다음과 같은 최적화 방법을 적용했습니다.
상대적 포즈 값 사용: VPS를 통해 얻은 카메라 포즈 값을 절대적인 값으로 사용하지 않고, 증강현실로 보여줘야 하는 3D 오브젝트의 포즈 값과 함께 상대적인 값으로 변환하여 적용했습니다.
기능 분리: 카메라 포즈 값의 변화를 직접적으로 반영하는 대신, 3D 오브젝트의 상대적인 위치를 찾고, 실내 내비게이션을 할 때 자연스럽게 보이도록 VPS 기능과 증강현실 3D 오브젝트를 분리하여 구현했습니다.
이 방법을 통해 연산 부하를 줄이고, 하드웨어 이슈를 해결할 수 있었습니다. 이러한 개선은 DSC가 실내 AR 내비게이션과 증강현실 구현에서 더욱 안정적이고 효율적으로 작동할 수 있도록 하는 중요한 단계였습니다.
< 출처: ‘AR기반 실내측위 내비게이션’ 사업 시범운영>
VPS와 AR 기술의 통합에 있어 겪었던 문제들과 그에 대한 해결 방안을 공유한 이번 글이 도움이 되셨기를 바랍니다. 추후 2부에서는 이 과정에서의 구체적인 기술적 접근과 더 깊이 있는 분석을 통해, 실제 현장에서의 적용 사례와 추가적인 최적화 방안에 대해 더욱 자세히 다뤄볼 예정입니다.
마치며
현재 VPS는 실내 내비게이션 기능을 구현하는 중요한 방법 중 하나로 적용되고 있습니다. VPS 기술은 하드웨어 성능의 발전과 더불어 컴퓨터 비전 및 SLAM(Simultaneous Localization and Mapping) 알고리즘의 발전에 따라 위치와 방향을 찾는 속도와 정확도가 크게 향상될 것으로 기대됩니다.
딥파인에서는 VPS의 성능과 위치 값의 정확도 향상을 위한 고도화 작업을 지속적으로 진행하고 있습니다. 이를 위해 연구 개발을 계속하고 있으며, 최신 기술을 적용하여 더 나은 솔루션을 제공하기 위해 노력하고 있습니다.
현재 DEEP.FINE Spatial Crafter(DSC)를 많은 분들이 경험해보실 수 있도록 무상지원 프로그램을 운영 중입니다. 이 프로그램을 통해 DSC의 혁신적인 기능을 직접 체험해보실 수 있으며, 실내 내비게이션 및 AR 구현을 위한 최적의 도구로 활용해 보시길 바랍니다. 관심 있으신 분들은 딥파인 웹사이트에서 신청해 주세요.
앞으로도 많은 관심과 성원을 부탁드립니다. 감사합니다.