1. 서론
최근 디지털 트윈 용어가 일상생활과 항만, 교통, 건물, 에너지, 조선 등 다양한 산업 분야에서 쓰이고 있다. 디지털 트윈이란 현실 세계의 물체를 가상세계에 구현한 것을 말한다[1]. 디지털 트윈의 목적은 실제 생활에 있는 사물과 현상을 디지털화하여 컴퓨터에서 이를 분석하고, 예측함으로써 현실에서 발생하는 문제를 해결하고, 현실을 보다 효율적으로 만드는데 있다. 그중에서도 COVID19의 영향으로 가상현실 분야가 급속도로 발전하고 있다. AR, VR 시장은 이미 수십억 달러 규모의 시장으로 자리 잡고 있으며, 계속해서 성장할 것으로 예상된다[2].
현재 가상공간 데이터를 생성하는 방법은 3D tool 인 Unity 3D Engine, Unreal 3D Engine 등을 이용하여 디자이너가 직접 제작한다. 이 방식은 전문적인 지식이 요구되며 시간이 오래 걸린다는 한계가 있다 [3]. 따라서 간편하고 효율적으로 가상공간을 생성할 방안이 필요하다.
이를 해결하기 위해 여러 센서를 이용한 SLAM (Simultaneous Localization And Mapping)을 활용할 수 있다. SLAM은 주변 환경에 대한 지도 데이터를 제작하는 기법이며[4], 지도의 완성도를 평가하는 연구도 진행되어 왔다[5]. 대표적인 SLAM으로 카메라를 사용한 ORB SLAM[6], 라이다를 사용한 LOAM SLAM[7] 등이 있다. 이를 기반으로 3차원 데이터를 생성하는 여러 연구[8,9]가 진행되고 있다. 하지만, 가상공간을 생성하기에는 생성된 가상공간에 빈 부분들이 너무 많다는 점[8], 생성된 가상공간의 전반적인 해상도가 낮다는 점[9] 등의 어려움이 있다.
카메라는 색상 정보와 높은 해상도를 가지고 있지만, 위치 변위에 대한 정확도가 낮다는 단점이 있다. 라이다는 위치 변위에 대한 정확도가 높다는 장점이 있지만, 색상 정보가 없고, 생성되는 포인트의 수가 제한적이다. 두 센서는 서로의 단점을 보완할 수 있음으로 두 센서를 결합하여 비교적 높은 정확도와 높은 밀도를 가지며, 색상이 적용된 3D 공간 데이터를 생성할 수 있다. 따라서 본 논문에서는 LOAM SLAM[7]을 기반으로 라이다와 스테레오 카메라의 장점들을 활용하여 가상현실 콘텐츠의 목적에 맞게 가상공간을 생성하는 방안을 제안한다. 라이다가 생성한 저밀도 포인트 클라우드로는 현실 공간을 높은 해상도로 표현할 수 없음으로 스테레오 카메라를 함께 사용하여 카메라 영상의 픽셀들을 3차원 포인트들로 변환해 추가한다. 넓은 공간을 촬영할수록 생성되는 포인트 클라우드의 데이터 용량이 커지므로 부하를 줄이기 위해 중복되는 점을 제거한다. 사용자가 센서를 들고 다니며 촬영하는 시스템의 특성에 적합한 카메라의 포즈 정보를 이용하여 정확도를 높인다. 이와 같은 기법들을 사용하여 생성한 3차원 가상공간은 현실 공간과 유사하며, 센서로 주변 공간을 촬영하여 단시간에 만들 수 있기 때문에 효율적이다.
본 논문의 구성은 다음과 같다. 2장에서 관련 연구에 관해서 설명한다. 3장에서 제안한 기법들을 설명한다. 그리고 4장에서 제안한 기법들로 실험한 결과를 평가 및 고찰하고 5장에서 결론을 맺는다.
2. 관련 연구
2.1 센서를 활용한 3D 데이터 생성 연구
스테레오 카메라와 라이다를 활용해 실외 주행 환경에 대한 깊이 정보를 획득하는 연구[9]가 있다. 제안된 방법은 크게 두 단계로 구성된다. 먼저, 라이다로부터 획득된 포인트 클라우드를 기반으로 3차원 변이 지도를 생성한다. 그리고, 획득된 3차원 변이지도를 바탕으로 픽셀 단위 비용을 정의하고, 비 정방 윈도우를 이용한 스테레오 정합을 수행한다. 이 방법은 스테레오 카메라와 라이다의 장점을 융합하여 많은 수의 포인트에 대한 정교한 깊이 정보를 획득할 수 있으며, 센서스 기반 비용만을 이용한 결과나 정방 윈도우 정합 결과보다 뛰어난 정확도를 가진다. 하지만 가상공간을 위한 3차원 데이터를 생성하는 것이 아닌, 자율주행을 위해 정확한 깊이 정보를 획득하는 연구로 본 논문과 방향성이 다르다.
RGB-D 카메라를 사용하여 3차원 체적 모델을 생성하는 연구[10]가 있다. 여러 시점에서 물체를 촬영한 후 3차원 모델을 생성하기 위한 정합 알고리즘을 제안한다. 차르코 보드를 이용하여 기존의 초기 파라미터를 구하는 방식 대신, 특징점을 이용해 최적화하는 방식을 사용하여 성능의 차이는 없으면서 범용성을 높였다. 하지만 이 방식으로 3차원 공간처럼 넓은 공간을 촬영할 수는 없음으로 가상 공간 데이터를 생성은 불가능하다.
2.2 LOAM SLAM
SLAM(Simultaneous Localization And Map- ping)은 임의의 공간을 이동하며 주변 탐색을 하는 상황에서, 공간의 지도를 작성하는 동시에 현재 위치를 추정하는 기술이다. 주변 탐색을 위해 SLAM에 사용되는 센서에 따라 종류가 나뉜다. 그중에서도 LOAM (Lidar Odometry And Mapping) SLAM은 라이다 센서를 사용하여 얻는 3차원 포인트 클라우드를 기반으로 위치 추정과 지도 작성을 수행하는 SLAM을 의미한다.
LOAM SLAM의 작동원리는 다음과 같다. 라이다로부터 정보를 받아 로컬 좌표계 상의 3차원 포인트 클라우드를 형성한다. 이 데이터를 이용하여 기하학적 정보로 변환하고, 현재 위치를 추정하는 데 사용되는 정보인 특징점을 선별한다. 이후 특징점을 기반으로 이전 시점에서 저장해 둔 특징점과 대응하여 비교해 포즈를 계산한다. 마지막으로 로컬 좌표계의 포인트 클라우드를 월드 좌표계로 변환하고 계산된 포즈 정보를 이용하여 이동한 위치에 포인트 클라우드를 누적해 결과물을 생성하는 방식이다.
LOAM SLAM은 회전 레이저 스캐너의 한계인 모션 추정 및 매핑을 동시에 수행하는 것의 어려움을 모션 추정과 매핑 처리 알고리즘을 병렬로 실행함으로써 해결한다. 그렇기 때문에 두 알고리즘의 협력을 통해 실시간으로 비교적 정확한 모션 추정과 매핑을 할 수 있다는 장점이 있다. 이 방식은 주변 공간을 3차원으로 정교하게 나타낼 수 있지만, 특징 점으로 선별된 포인트만 결과물로 생성한다는 한계가 있다. 따라서 포인트 클라우드의 밀도가 낮아 가상현실 콘텐츠로 적용하기에 적절하지 않다. 본 논문에서는 이를 보완하여 SLAM 기법을 활용하여 지도를 만들되, 스테레오 카메라를 이용해 색상 정보를 추가하고 포인트의 개수를 늘려 밀도가 높고, 시각적으로 개선된 3차원 가상지도 포인트 클라우드 생성 시스템을 제안한다.
3. 제안한 기법
Fig. 1은 제안한 기법을 포함한 시스템의 블록도이다. 라이다로 생성한 포인트 클라우드와 스테레오 카메라의 좌측 렌즈 이미지를 두 센서의 위치 관계로 보정하여 색이 입혀진 포인트 클라우드를 생성한다. Fig. 1. ①에서는 생성된 포인트 클라우드의 해상도증가를 위해 스테레오 카메라 영상의 픽셀을 3D 포인트로 변환해 추가한다. Fig. 1. ②에서는 3D 지도생성을 위해 로컬 좌표계의 포인트 클라우드를 월드 좌표계로 변환할 때, 라이다의 포즈값 대신 스테레오 카메라의 포즈값으로 대체한다. 이후 Fig. 1. ③에서 시점별로 생성되는 포인트를 최종 포인트 클라우드에 누적시키기 전에, 중복되는 포인트들을 제외한다. 시스템 종료 시 누적된 포인트 클라우드를 ply 형식의 3D 공간 데이터로 저장한다.
Fig. 1. System Block Diagram.
3.1 픽셀 정보를 활용한 포인트 증가
라이다가 생성한 포인트는 수가 제한적이므로, 가상공간 데이터로 활용하기에는 한계가 있다. 따라서 결과물인 가상공간의 해상도를 개선하기 위해 Fig. 1. ①에서 라이다의 정확한 위치 변위 정보와 스테레오 카메라의 높은 해상도를 이용하여 포인트의 수를 증가시킨다. 이전 단계에서 색상을 적용하기 위해 3 차원 포인트들을 투영시킨 픽셀을 기준으로 주변 8 개의 픽셀을 이용한다. 이때 비교적 정확한 위치 변위 정보를 갖도록 하기 위해 포인트의 깊이 정보와 추가할 픽셀이 가지고 있는 깊이 정보를 비교하여 차이가 15cm 이하인 픽셀만 유효한 픽셀로 판단한다. 유효한 픽셀은 Eq. (1)를 사용하여 로컬 좌표계의 3차원 포인트로 변환한다. xd, yd는 3차원 포인트로 변환할 픽셀의 좌표, depth(xd,yd)는 해당 픽셀의 깊이 값, fxd, fyd와 cxd, cyd는 카메라 내부 파라미터인 초점거리와 주점이고 P3D.x, P3D.y는 픽셀 좌표로부터 변환된 3차원 포인트의 x축, y축 좌표를 의미한다.
\(\begin{aligned} &\text { P3D.x }=\left(x_{d}-c x_{d}\right) \times \frac{\operatorname{depth}\left(x_{d}, y_{d}\right)}{f x_{d}} \\ &\text { P3D.y }=\left(y_{d}-c y_{d}\right) \times \frac{\operatorname{depth}\left(x_{d}, y_{d}\right)}{f y_{d}} \\ &\text { P3D.z }=\operatorname{depth}\left(x_{d}, y_{d}\right) \end{aligned}\) (1)
P3D.z는 스테레오 카메라의 깊이 정보가 아닌, 기준이 되었던 라이다 포인트의 깊이 정보를 적용한다. 이를 통해 새로 추가되는 포인트들과 기존 포인트의 깊이 차이를 줄일 수 있다. Fig. 2는 이 과정을 전체적인 흐름도로 나타낸 것이다.
Fig. 2. Flowchart for the point addition algorithm.
3.2 포즈 정보 변경
라이다는 시점마다 라이다의 현재 위치를 원점으로 하는 로컬 좌표계의 포인트 클라우드를 생성한다. 로컬 좌표계는 각각 원점이 다르기 때문에 포인트 클라우드를 누적해 하나의 지도 데이터를 완성하기 위해서는 포인트 클라우드를 하나의 기준인 월드 좌표계로 통일해야 한다. 월드 좌표계의 원점은 시스템을 실행했을 때의 라이다 위치이므로, 각 포인트의 좌푯값에서 시스템의 시작부터 포인트 클라우드가 생성되기까지 라이다의 위치변화와 각도변화 정보를 빼주면 월드 좌표계로 변환할 수 있다.
이러한 위치변화와 각도변화 정보를 6DoF 포즈 정보라고 하며 라이다의 데이터와 스테레오 카메라의 데이터로부터 개별적으로 추정할 수 있다. 라이다의 경우 시점마다 스캔한 주변 360o의 특징점 정보를, 스테레오 카메라의 경우 정면을 바라보는 두 개의 모노 카메라로 촬영한 영상의 특징점 정보를 사용해 포즈 정보를 추정한다. 제안한 기법들을 적용한 가상공간 생성 시스템은 촬영자가 라이다를 들고 움직이며 촬영을 진행하므로 촬영자의 신체가 라이다의 뒷부분을 가리어 특징점들이 충분히 획득되지 못한다. Fig. 3은 실제로 촬영을 진행하는 모습이다. 따라서 라이다의 6DoF 포즈 정보가 스테레오 카메라의 6DoF 포즈 정보보다 부정확해진다. 제안한 시스템에서는 기존의 라이다 포즈 정보 대신, 스테레오 카메라 포즈 정보를 사용해 포인트들이 더욱 정확한 위치로 변환되도록 하여, 완성되는 가상 공간 데이터의 품질을 높였다.
Fig. 3. Scanning process.
3.3 중복점 제거
월드 좌표계로 변환된 포인트는 결과물이 될 포인트 클라우드에 누적되기 전, 이전 시점까지 누적된 포인트들과 동일한 좌표인지에 대한 여부를 판단하여 동일한 좌표를 가지는 포인트들은 제외한다. 이때 set container[11]를 활용하며, 이미 추가했던 포인트의 (X, Y, Z) 좌표를 set의 key field에 저장한다. Set 의 특성상 동일한 key값은 단 하나만 허용되고 특정 key 값이 set에 들어있는지 확인하는 검색 연산의 시간 복잡도가 O(logn)으로 빠르기 때문에 이용하기에 적합하다.
Set의 key field에 각 좌표를 저장할 때 포인트의 (X, Y, Z) 값들의 소수점 아래 자릿수를 통일 시켜주고, 각 값을 문자열로 바꾼 뒤 하나의 문자열로 만든다. 추가하려는 포인트의 좌표 값 문자열과 동일한문자열이 set 내에 이미 존재하면, 해당 포인트는 최종 결과물에 추가하지 않는다. 동일한 문자열이 존재하지 않으면, 문자열을 set에 추가하고 해당 포인트를 결과물에 추가한다. Fig. 4는 이 과정을 전체적인 흐름도로 나타낸 것이다.
Fig. 4. Flowchart for the overlapping point filtering al- gorithm.
4. 실험 결과 및 고찰
4.1 실험 환경
본 논문에서는 ROS Melodic 환경에서 C++로 구현된 시스템을 Intel(R) Core(TM) i7-10875H CPU @ 2.30GHz (16 CPUs) 프로세서, 32GB RAM, NVIDIA GeForce RTX 2080 Super 그래픽카드, Ubuntu 18.04 운영체제 환경에서 실행하였다. 제안된 시스템은 오픈소스 알고리즘인 LOAM SLAM[7] 을 기반으로 만들어졌다. 촬영을 위한 라이다, 카메라, 노트북, 배터리와 같은 장비를 촬영할 공간으로 이동시키기 위해서 OMOROBOT사의 주행 로봇 OMO R1[12]을 사용하였다. Fig. 5는 라이다와 스테레오 카메라를 결합한 촬영 장비이다.
Fig. 5. Device for scanning.
결과물을 생성하기 위한 공간 촬영은 스캔하고자 하는 공간에서 촬영자가 센서를 들고 수행한다. 센서로 공간의 특정 부분을 스캔하면 스캔 된 공간이 포인트 클라우드로 생성되어 최종 포인트 클라우드에 누적된다. 현재까지 만들어진 최종 결과물은 노트북의 화면을 통해 촬영자가 실시간으로 확인할 수 있다. 해당 공간을 충분히 스캔하였다고 판단되면 시스템을 종료하여 촬영을 마친다. 본 논문에서 제안한 기법들의 성능을 객관적으로 분석하기 위해서 각 기법을 적용하기 전과 후의 입력 데이터는 해당 기법의 적용 여부로 인한 결과 이외에는 동일해야 한다. 따라서 센서들로부터 생성되는 데이터를 모두 파일로 저장하고 기법 적용 전후 비교를 위한 결과물을 생성할 때 저장한 데이터들을 입력으로 생성할 수 있도록 시스템을 구현하였다.
실험은 특정 기법을 적용한 상태에서 파일들을 읽어 들여 결과물을 생성하고 적용하지 않은 상태에서 파일들을 읽어 들여 결과물을 생성하여 기법마다 두 개의 결과물을 생성하고 두 결과물을 비교하는 방식으로 진행하였다. Table 1은 각 센서로부터 저장한 데이터를 나타낸다.
Table 1. Data saved from each sensor.
4.2 실험 결과
픽셀 정보를 활용한 포인트 증가 기법에 대한 실험 진행 내용이다. Fig. 6과 Fig. 7은 픽셀 포인트 추가 기법 적용 전후를 비교한 이미지다. 적용 결과, 포인트 추가 기법을 적용하면 한 개의 점이 생성될 때 정사각형 모양으로 배치된 여러 개의 점이 한 번에 매핑되는 것을 확인할 수 있다. 이로 인해 포인트들이 매핑되지 않았던 검은 영역들이 상당수 메꿔졌음을 확인할 수 있다.
Fig. 6. Result without pixel point addition algorithm.
Fig. 7. Result with pixel point addition algorithm.
두 번째는 포즈 정보 변경에 대한 실험이다. 결과물을 생성할 때 6DoF 포즈 값만 달리 적용하였다. Fig. 8과 Fig. 9는 각각 라이다와 카메라가 제공해주는 6DoF 포즈 정보를 이용해 생성한 포인트 클라우드다. 스테레오 카메라의 정보를 사용한 결과의 정확도가 라이다의 정보를 사용했을 때보다 더 높음을육안으로 확인할 수 있다.
Fig. 8. Result using lidar 6DoF pose information.
Fig. 9. Result using camera 6DoF pose information.
세 번째는 중복점 제거 기법에 대한 실험 진행 내용이다. Fig. 10은 중복점 제거 기법을 적용하지 않았을 때, Fig. 11은 중복점 제거 기법을 적용했을 때의 결과물이다. 두 결과물을 육안으로 확인했을 때, 큰 차이를 확인할 수 없음으로 제거 대상이 아닌 포인트들은 제거되지 않음을 확인할 수 있다. 이어서 중복점 제거 기법으로 인해 생성된 두 결과물의 용량의 차이를 비교하였다. Table 2는 두 결과물 포인트 클라우드 용량을 수치상으로 비교한 것이다. 중복점 제거 기법 적용 전과 비교하여 용량이 23.9MB에서 22.0MB로 약 8.1% 줄어든 것을 확인할 수 있다. 따라서 화질에는 큰 영향을 끼치지 않으면서 결과물의 용량을 효과적으로 줄일 수 있음을 알 수 있다.
Fig. 10. Result without duplicate point removal algorithm.
Fig. 11. Result with duplicate point removal algorithm.
Table 2. Comparison of capacity before and after algorithm application.
Fig. 12는 모든 기법을 적용한 최종 시스템으로 여러 공간을 스캔한 결과물과 해당 공간의 사진을 비교한 그림이다. 위 3개의 그림은 생성한 가상공간 데이터이며, 아래 3개의 그림은 실제 공간의 사진이다.
Fig. 12. (a) study room, (b) study room scan result, (c) cafe, (d) cafe scan result, (e) octagon hall, and (f) octagon hall scan result.
5. 결론
본 논문에서는 라이다 기반 SLAM에 스테레오 카메라를 융합해 가상공간을 생성하는 방안을 제안하였다. 고품질의 공간을 생성하기 위해 라이다의 비교적 정확한 위치정보, 스테레오 카메라의 색상 정보와 다수의 픽셀을 활용하여 라이다 기반 SLAM을 용도에 맞게 최적화했다. 이 방식을 사용함으로써 실제 공간을 이용해 효율적으로 가상공간을 생성할 수 있다.
본 논문에서 제안한 기법으로 기존 라이다로 생성한 포인트 대비 최대 9배 많은 포인트를 생성했다. 카메라의 포즈 정보를 이용하여 정확도를 개선하였다. 또한, 중복되는 점을 제거하여 생성되는 가상공간 데이터의 용량을 적용 전과 비교해 8% 줄였다.
제안한 시스템을 이용해 장시간 스캔할 경우 누적되는 데이터가 증가함에 따라 시스템의 속도가 느려지고, 6DoF 정보의 오차가 발생했다. 따라서 누적되는 데이터를 최적화하여 시스템의 속도를 개선하는 연구가 수행되어야 한다.
References
- Y.W. Kim, Concept of Digital Twin and Use Cases by Technology and Industry Sector, ICP Platform Society, 2021.
- S.M. Lee, "Current status of VR regulation and direction for improvement -Focusing on VR content regulation-," Journal of Korea Broadcasting Corporation, Media Engineering Society, Vol. 24, No. 3, pp. 100-101, 2019.
- Creating Me in Another World, VR Content Creator(2021), https://www.hani.co.kr/arti/soci ety/schooling/993388.html (accessed May 20, 2021).
- Y.M. Lee and Y.D. Seo, "Vision-Based SLAM in Augmented/Mixed Reality," Journal of Korea Multimedia Society, Vol. 13, No. 3, pp. 12-20, 2009.
- H.S. Kim, J.W. Kam, and S.S. Hwang, "An Evaluation System to Determine the Completeness of a Space Map Obtained by Visual SLAM," Journal of Korea Multimedia Society, Vol. 22, No. 4, pp. 417-423, 2019. https://doi.org/10.9717/KMMS.2019.22.4.417
- R. Mur-Artal, J.M.M. Montiel, and J.D. Tardos, "ORB-SLAM: a Versatile and Accurate Monocular SLAM System," IEEE Trans. Robot, Vol. 31, No. 5, pp. 1147-1163, 2015. https://doi.org/10.1109/TRO.2015.2463671
- Z. Ji, S. Sanjiv, LOAM: Lidar Odometry and Mapping in Real-Time, Carnegie Mellon University, 2014.
- Y.C. Lee, S.H. Park, S.L Choi, and W.P. Yu, "3D-RGB Point Cloud Data Construction Method," Proceeding of the Summer Conference of the Institute of Electronics and Information Engineers, pp. 1059-1062, 2013.
- Y.H. Shin and J.S. Min, "Fusion of Stereo Camera and Lidar for Dense Depth Map Acquisition," Proceeding of the Spring Conference of the Korean Society of Automotive Engineers, pp. 1424-1429, 2018.
- K.J. Kim, B.S. Park, D.W. Kim, S.C. Kwon, and Y.H. Seo, "Real-Time 3D Volumetric Model Generation using Multiview RGB-D Camera," Journal of Broadcast Engineering, Vol. 25, No. 3, pp. 439-448, 2020. https://doi.org/10.5909/JBE.2020.25.3.439
- C++ Reference of STL Set Container(n.d.), http://www.cplusplus.com/reference/set/set/ (accessed October 28, 2020).
- The outline of OMO R1(n.d.), https://omoro bot.gitbook.io/manual/product/omo-r1 (accessed June 30, 2020).