Skip to main content
Version: Next

VLSDK를 사용하는 이유

VLSDK란?

VLSDK는 ARC eye 통해 구축 된 3차원 공간에서 기기의 6DOF를 실시간으로 추정하는데 사용되는 패키지입니다.

아래의 영상은 VLSDK를 이용해서 실시간으로 전역 위치를 계산하는 모습입니다. 검은색 물체는 VLSDK를 통해 계산된 카메라의 실시간 위치를 나타내며 빨간색, 파란색, 초록색 물체는 이미지를 바탕으로 인식된 VL 응답 결과입니다. VLSDK를 사용하면 코드를 한 줄도 작성하지 않고 아래와 같이 실시간으로 3차원 공간에서의 카메라 위치를 얻을 수 있습니다.

vlsdk overview

이는 VLSDK의 내부에서 다양한 기능들을 자동으로 수행을 하고 있기 때문입니다. 다음은 VLSDK에서 수행하는 기능들에 대한 설명입니다.

VL 요청

VLSDK는 ARC eye VL API의 요청을 내부에서 처리하여 별도의 대응 없이 VL API를 쉽게 사용할 수 있도록 합니다. 카메라 이미지 버퍼 취득, 지역별 Invoke URL 설정, 응답 유효 판단, 요청 주기 설정 등 각종 복잡한 작업을 코드 작성 없이 실행할 수 있도록 합니다. 이렇게 계산된 결과는 Main Camera에 즉시 적용되어 렌더링 결과에 반영 됩니다.

좌표계 변환

ARC eye VL에서 수신 하고 응답을 전송할 때 사용하는 좌표계는 ROS 좌표계입니다. 이 좌표계는 Unity에서 사용하는 좌표계와 다르기 때문에 VL 응답 결과를 Unity에서 그대로 사용할 경우 예상과 다른 결과를 얻게 됩니다. VLSDK에서는 좌표계 변환을 내부에서 수행하여 SDK 사용자는 항상 Unity 좌표계를 사용할 수 있는 환경을 제공합니다.

coordinate

네트워크 딜레이 보정

네트워크 환경에 따라 VL 요청과 응답 사이의 시간이 오래 걸리는 경우가 발생할 수 있습니다. 이로 인해 사용자가 현재의 전역 위치가 아닌 과거의 전역 위치값을 응답으로 받게 될 수 있습니다. VLSDK에서는 네트워크 딜레이 보정 알고리즘을 통해 응답 딜레이에 상관 없이 항상 현재 전역 위치값을 응답으로 받을 수 있는 필터링 기능이 구현 되어 있습니다.

VL + VIO 융합 알고리즘

VLSDK는 실시간으로 계산되는 지역 위치와 높은 정확도를 가지는 전역 위치 정보를 융합하여 실시간으로 전역 위치를 계산하는 기능을 수행합니다.

아래 그림에서 가장 왼쪽의 영상은 VL만을 이용해서 위치를 추정한 결과입니다. 공간 상의 위치를 정확하게 추정했지만 위치를 실시간으로 추정할 수 없기 때문에 증강되는 물체의 위치가 크게 튀는 것을 볼 수 있습니다. 가운데 영상은 VL과 스마트폰의 VIO를 융합한 결과입니다. VL만을 사용했을때 보다는 위치가 안정적이긴 하지만 여전히 위치가 튀는 것을 볼 수 있습니다. 가장 오른쪽 영상은 VL과 VIO를 융합하고 VLSDK에 구현된 각종 보정 알고리즘이 적용된 결과입니다. 공간 상에서의 위치를 안정적이고 정확하게 추정한 것을 볼 수 있습니다.

AR 원리2

GPS 기반 VL 요청 지역 선택

하나의 서비스에서 수십개의 VL API를 사용하는 경우 지역에 따라 적당한 VL API를 선택해서 요청을 보내는 방식을 구현해야 합니다. VLSDK에서는 GPS Guide 기능을 통해 GPS 영역마다 VL API를 할당하여 지역에 따라 미리 설정한 VL API를 사용할 수 있는 기능을 제공합니다.

데이터셋 모드

VLSDK에서는 실제 환경 데이터를 기록하고 이를 활용할 수 있는 특수한 데이터셋 모드를 지원합니다. 이를 바탕으로 현장에 직접 나가지 않아도 실제 환경과 동일하게 개발 및 테스트를 진행할 수 있습니다.

dataset mode