[논문리뷰]SLAM 기술을 활용한 실내 자율주행 배달 로봇 시스템 구현

2023. 3. 8. 14:56논문 리뷰

SLAM

SLAM은 Simultaneous Localization and Mapping의 약자로 동시적 위치추정 및 지도작성이라는 뜻을 가진다.

[출처] [SLAM] SLAM 기초 정리|작성자 Jun

SLAM의 4가지 특성

1. SLAM 기술은 실시간으로 자신의 위치 추정(Localization)과 주변 지도 작성(Mapping)을 할 수 있다.

2. SLAM 프로그램은 시작한 시점에서부터 지속적으로 자신의 위치 추정을 할 수 있다.

3.최신 SLAM 기술들에 적용되는 Loop closure이라는 기술을 통해 나의 현재 위치가 이전에 와본적 있는 장소라는 것을 인지하고 자신의 위치에 대한 오차를 수정할 수 있다.

4. SLAM 프로그램이 종료되는 시점에서는 잘 그려진 지도와 나의 지난 위치들을 얻어낼 수 있다.

SLAM = Localization + Mapping

 

루프 폐쇄 검출(loop closure detection)이란 로봇의 이동 궤적상에서 현재의 위치가 이전에 방문했던 위치인지를 판단하는 것으로 검출된 결과를 환경 맵 최적화 단계에서 제약조건으로 활용하도록 하여 SLAM 알고리즘의 로봇 표류 문제를 해결한다.

 

그냥 odometry : 이전까지 바퀴

visual odometry : 카메라로 자신의 위치를 추정하는 Visual Odometry

시간이 지나면서 오차가 누적된다는 단점이 있었는데, 이는 카메라가 긴 거리를 이동하면 누적된 위치추정 오차로 인해 부정확해지게 되었다.

매 프레임마다 이 오차역시 함께 누적되기 때문에 시간이 오래 지나거나 이동거리가 길어지면 부정확해진다.

이 때문에 Visual Odometry는 locally consistent하다고 한다. (근거리에서만 정확)

 

연구자들은 넓은 공간에서도 (global scale) 위치추정이 잘 되게 하기 위해, 이미 한번 방문한 곳을 다시 찾아오면 위치 정보를 보정할 수 있는 Loop closure 기술과 같은 기술을 연구하게 되었다.

 

 

 

 

 

rtabmap_ros

 

rtabmap_ros - ROS Wiki

melodic noetic   Show EOL distros:  EOL distros:   hydro indigo jade kinetic lunar hydro: Documentation generated on August 27, 2015 at 03:00 PM (doc job).indigo: Documentation generated on June 07, 2019 at 05:15 AM (doc job).jade: Documentation gener

wiki.ros.org

 

 Real-Time Appearance-Based Mapping

직역해 보자면 실시간 외관 기반의 지도작성이라는 뜻을 가진다.

SLAM에서는 지도작성과 동시에 현재 차량의 위치와 자세를 파악하는 것을 동시 다발적으로 한다는 의미이기에 RTAB-Map과 비슷한 의미라고 판단되어진다.

하지만 가장 요점은 맵의 크기를 제한하는 방식으로 루프클로져가 고정된 시간제한 내에 이뤄지게끔 하는 목표로 개발되어졌다. 현재는 다양한 시도끝에 독립적인  C++ 라이브러리와 ROS 패키지를 통해 개발되었다

 

 

Intel RealSense Depth Camera D435i

역할 :

정적 IR (적외선)패턴을 전방에 투사한 뒤, 패턴의 왜곡으로부터 Depth를 추정

배달 로봇에 장착되어 주행 시 얻어지는 RGB-D 이미지는 Point Cloud로 변환되어 Mapping과정 시 활용

loop closure detection에 활용

 
 

Intel RealSense Tracking Camera T265

역할 :

SLAM을 위한 추적 카메라

양측에 달린 스테레오 카메라를 통해 특징점 변화를 추적하고, 카메라의 순간 속도를 추정하고 누적하여 배달 로봇의 Odometry 값을 얻을 수 있다.

 

YDLIDAR X4

역할 :

배달 로봇 주변의 2D Laser Scan을 투사하여 정적, 동적 장애물 간의 거릿값을 획득

local cost map 제작

 

 

목적지 입력 시스템

 

Enter destination using keypad

목적지(강의실 번호)를 Keypad로 입력하면 해당 목적지에 대한 정보를 Navigation System에 전송함과 동시에 LCD에 표시되도록 구성하였다.

Launch 파일을 실행하게 되면 Arduino와 LCD간 통신을 통해 목적지를 묻게 되는데, 사용자는 이때 [Fig. 9]와 같이, Keypad로 목적지(번호)를 입력한다.

그다음, 사용자로부터 입력받은 목적지를 PC에 저장된 map의 좌표로 변환한다.

이후 [Fig. 10]과 같이 변환된 좌표를 SLAM Navigation 시스템에 ROS Message로 Publish 하여 전송하고, 입력받은 목적지가 LCD에 표시되도록 설계하였다.

[Fig. 10] Publish converted coordinate of input destination
 

mapping

실내 배달 로봇이 T265를 통해 로봇의 위치를 지속해서 추정,

D453i로 획득한 point cloud 데이터를 로봇의 위치가 변할때마다 기록

3D Mapping of Building indoor

3D Mapping 후 2D Map으로 변환

3d map 만들때 센서가 mapping하고자 하는 구역을 빈틈없이 탐지해야 하지만, 

건물 내부 벽 같은 곳은 특징점이기에 mapping이 잘 안되서, 

빈 구역이나 노이즈가 발생

이런 map으로 navigation을 하면 벽을 관통하는 경로를 생성할 수 도 있음.

Path error caused by incorrect Mapping. (a) Incorrect path from starting point(S) to destination(E), (b) Correct path from starting point(S) to destination(E).

 

-> 이를 보정하기 위해 Lidar의 2d laser scan이 필요

 

d435i는 시야각에 제한이 있지만, ydlidar x4는 제한이 없음(360도)

-> mapping 보조 역할을 함.

 

 

2d map 개선

Inconsistency of Local

주행 혹은 Mapping과정에서 YDLIDAR X4를 통해 얻은 Point Cloud data와 2D Map을 Matching 하는 과정에서 [Fig. 13]과 같이 뚫려있는 난간 혹은 계단은 2D LIDAR를 이용하여 감지하기 어렵다.

 

[Fig. 14](a) 2D Map using 2D Laser Scan data of YDLIDAR X4,   (b) Calibrated 2D Map with Photoshop for unrecognized areas.

 

따라서 이런 구역에서 Mapping을 진행하면 [Fig. 14]의 (a) 와 같이 불완전한 map이 생성된다.

 이러한 구역에서 주행하기 위해서 PGM 파일 형식으로 저장되는 2D Map을 [Fig. 14]의 (b) 와 같이 Photoshop으로 수정하여 완성된 Global Cost Map을 제작하였다.

수정된 map은 map_server ROS package[10]를 이용하여 Navigation에 전송할 수 있다.

 

 

navigation system

Navigation System에서는 Cost map을 통해 경로를 생성하게 된다

 Global Cost Map을 통해 Global Path를 생성하게 되며 배달 로봇은 이를 따라 주행하되,

Local Cost Map을 통해 장애물 등을 감지하면 해당 경로를 우회하는 경로를 새롭게 생성하며 움직이게 된다.

 

loop-closure detection

 

예시로, Loop-Closure detection에서는 [Fig. 15]와 같이 센서를 통해 (a) 의 경로를 예측하였다 하더라도, 좌측(Pose 807 및 Pose 1098)과 같은 센서 데이터를 얻었다면 이를 통해 예측된 이동 경로 (a) 를 (b) 와 같이 수정 하는 방식을 채택한다.

 

본 논문에서는 D435i Depth 카메라를 Loop-Closure detection을 위한 장비로 활용했으며, Depth 카메라로부터 받은 이미지의 특징점과 Depth 정보를 조합하여, 생성한 Map 상에서 현재 위치 및 주행 경로를 추정했다.

 

move_base package

Navigation System에서 경로 계획

Navigation System에서 경로를 생성하는 방식은 골짜기를 따라 흐르는 물에 비유할 수 있는데, 벽 등의 장애물과 그 주변에 높은 Cost를 할당하여 Cost가 높은 지역을 회피하는 경로가 생성된다.

장애물에 대해 Cost가 생성될 때 어느 범위까지 생성되도록 하는지는 Navigation System의 내부 Hyper parameter로 설정할 수 있으며 본 논문에서는 배달 로봇 크기의 2배 범위까지 점진적으로 감소하면서 생성되도록 설계하였다.

 

local cost map

Global Cost Map이 전체 정적 map에 대한 Cost Map을 생성한 것이라면, Local Cost Map은 주변 지역에 대한 실시간 Cost Map을 생성한 것이다.

 

이때 Global Map을 참고하지 않고 LIDAR 센서 데이터에만 의존하여 Cost Map을 생성하게 되며, Map에 표시되지 않은 장애물에 대해서도 센서 데이터에 의해 Local Cost Map을 생성할 수 있다.

2D LIDAR를 사용

Local Cost Map using 2D LIDAR
 

흰 영역은 Local Cost Map의 범위이며, 이 범위에서 LIDAR가 감지한 장애물들은 검은색으로 표시된다.

배달 로봇은 흰 영역 내에서 검은색으로 표시된 장애물들을 회피할 수 있는 실시간 최적 경로를 따라 주행하기 위해 Navigation System은 경로뿐 아니라 cmd_vel ROS message에 방향과 회전 정보를 저장하여 모터 드라이버에 전송하게 된다.

전달받은 방향과 회전 값을 모터 드라이버는 적절한 RPM 값으로 변환하여 모터에 전송하게 된다.

 

Control architecture of Indoor delivery robot

 

 

Flow chart of Delivery Robot

하드웨어 구성