1. 서 론
이동로봇(Mobile robot)은 지상에 고정된 로봇이 아닌 주변 환경에 반응하여 움직이는 로봇으로 로봇 공학의 발전과 함 께 자율이동로봇(Autonomous Mobile Robots)에 대한 관심이 증가하고 있다(Rubio et al., 2019). 자율이동로봇을 활용하여 물류 분야에서는 창고 내 물품을 자동으로 이동시키고 분류 하는 작업을 수행하고 제조업에서는 부품을 운반하는 데 활 용되고 있다. 또한, 서비스 분야에서는 고객에게 물품을 배 달하거나 안내 서비스를 제공하고 농업 분야에서 작물의 모 니터링 등 다양한 산업 분야에서 적용 범위를 넓히고 있으 며, 그 범위는 더욱 확대되고 있다.
실내 환경의 자율 이동로봇 구현을 위해 자신의 위치를 추 정하고 환경의 지도를 작성하는 SLAM(Simultaneous Localization and Mapping) 알고리즘이 핵심기술로 자리 잡고 있다. SLAM 알고리즘은 초기 확장 칼만 필터를 이용한 EKF-SLAM(Bailey et al., 2006), 계산의 복잡성을 줄인 FastSLAM(Calonder, 2006), 그래프 최적화를 통한 Graph-Based SLAM(Grisetti et al., 2010), 대규모 환경의 성능 문제 해결을 위한 Improved EKF-SLAM (Bailey et al., 2006), 이미지의 특징점 추출과 매칭 기반 ORB-SLAM(Mur-Artal et al., 2015), 이미지의 픽셀 강도 정보 기반 LSD-SLAM(Engel et al., 2014), 스케일 불변 특징을 활용 한 Cartographer(Hess et al., 2016), 딥러닝 기반 DeepSLAM (Czarnowski et al., 2020), 다중 로봇이 협력한 대규모 환경 탐 색을 위한 Multi-Robot SLAM(Gupta and Conrad, 2019) 등 SLAM 기술의 정확성과 효율성을 높이기 위한 연구가 지속되고 있 다. SLAM 구현을 위해서는 레이저 빛을 사용하여 거리를 측정하고 공간정보를 생성하는 LiDAR(Light Detection and Ranging), 로봇의 자세와 이동 속도를 측정하여 위치 추정에 사용되는 IMU(Inertial Measurement Unit) 그리고 환경에 따라 Camera, Ultrasonic, GPS, Radar 등 각종 센서가 적용되며, 다양 한 환경에서 안정적이고 효율적으로 작동하도록 해야한다. 하지만 로봇 공학 분야에서는 다양한 로봇 시스템이 다른 하드웨어와 소프트웨어로 개발되기 때문에, 서로 다른 시스 템 간 통합과 공유는 복잡하고 어려운 일이다. 이러한 로봇 개발의 복잡성을 줄이고 다양한 기능을 통합하기 위해 로봇 개발 플랫폼인 ROS(Robot Operating System)가 개발되었으며 Boston Dynamics, Amazon Robotics, Yujin Robot, Clearpath Robotics, Rethink Robotics, Shadow Robot Company 등 다 수의 회사에서 ROS를 활용한 로봇 플랫폼, 창고 자동화 로봇, 서 비스 로봇, 자율이동로봇, 협동로봇, 로봇핸즈 등의 로봇제 품과 솔루션 개발에 사용되고 있다. 근래에는 이러한 ROS를 선박에 적용하고자 하는 연구가 활발히 진행되고 있으며 (Kim et al., 2022), 그 중 이동로봇을 활용하여 선박기관실 내 이동로봇의 경로 계획, 장애물 회피 방법, 기관실 현황 모니 터링, 다양한 센서와 융합 방안 등 다양한 연구가 이루어지 고 있다(Kim, 2022).
본 논문에서는 선박기관실과 유사한 기관실습실 내에서 ROS2 기반 이동로봇 플랫폼인 터틀봇3을 이용하여 자율주 행을 구현하였다. 기관실습실 내 지도를 작성하기 위해 Cartographer의 SLAM 기능을 사용하였으며, 저장된 지도를 사용하여 이동로봇을 원하는 목적지로 자율주행하여 도달 시키고자 하였다. 또한, 예상 경로로 이동 중 장애물 발견 시 경로를 수정하여 주행하는 실험도 수행 하였다.
2. 연구 방법
2.1 ROS2
ROS는 표준화된 프레임워크 제공을 통해 로봇 응용 프로 그램의 개발, 테스트 및 배포를 단순화하고 모듈화함으로서 로봇의 성능과 기능을 향상시키는데 기여하고 있다. ROS1은 여러 장점에도 불구하고 싱글 쓰레드 통신으로 인한 통신 병목현상, 실시간 성능 부족, 보안 기능 부재, 분산 시스템 지원 부족, 복잡한 빌드 시스템 등 단점이 있기에 이를 개선 하고자 ROS2가 개발되었다. ROS2는 멀티스레드(Multi-thread) 환경과 RTOS(Real-Time Operation System)을 통해 실시간 성능 향상, DDS(Data Distribution Service) 도입으로 인한 실시간 데 이터 전송에 대한 보안 강화, 분산 시스템 지원을 통한 효율 적인 노드 관리, 빌드 시스템의 의존성 관리 단순화, 리눅스 외 윈도우, macOS 운영체제 지원 등 ROS1에 비해 더 나은 성능과 기능을 제공한다.
2.2 Cartographer
Cartographer는 Google에서 개발한 오픈 소스 SLAM 라이 브러리로 Apache License 2.0 소프트웨어 라이센스이기에 자 유롭게 수정하고 배포할 권리를 부여하고 있으며, 지속적인 소스 코드 관리, 기능 추가, 튜토리얼 제공을 하고 있어 많 이 사용되고 있다. SLAM은 로봇이 주변 환경을 매핑 (Mapping)하면서 동시에 자신의 위치를 추정하는 기술로 Local SLAM과 Global SLAM이 있다. Local SLAM은 LiDAR, IMU 등 센서 데이터를 사용하여 로봇의 위치와 자세를 추정 하는 것으로 고속의 데이터 처리와 빠른 업데이트를 통해 실시간 위치 추정과 매핑을 수행하나 시간이 지남에 따라 누적 오차가 발생한다. Global SLAM은 로봇이 탐색하며 수 집한 데이터를 통합하여 전역적인 지도를 작성하는 것으로 로봇이 이전에 탐색한 위치를 재탐색했음을 인식하는 루프 클로저(Loop closer)를 통해 누적 오차를 수정한다.
Cartographer는 Local SLAM의 빠른 반응성과 Global SLAM 의 최적화를 결합하여 실시간으로 안정적인 지도 작성과 위 치 추정을 가능하게 하였다. 또한, 루프 클로저 감지 시에는 탐색 공간의 큰 부분을 가지치기하고 경계를 설정하는 Branch and bound 알고리즘을 적용하여 최적화 시 계산 부담 을 줄여 복잡한 환경에서도 사용할 수 있다.
2.3 AMCL
MCL(Monte Carlo Localization) 알고리즘은 파티클 필터 (Particle filter)를 사용하여 로봇의 위치와 방향을 추정하는 확률적 기법이다(Fox, 2001). 파티클 필터는 비선형 및 비가 우시안 문제를 해결하기 위해 고안된 것으로 샘플 기반의 접근법을 사용하여 상태 추정을 수행한다(Doucet, 2001). 연 속적으로 들어오는 정보 중 오차가 포함되어 있다고 가정 하고 대상의 물체를 추정하는 시행 착오법(try-and-error)에 기초하여 예측하는 기술이며, 대상 시스템에 대해 확률분포 로 추정된 파티클 형태로 나타낸다. 파티클 필터는 시간에 따라 변화하는 동적 환경에서도 상태를 추정할 수 있도록 설계되었으며, 로봇의 자세를 초기화(Initialization) 후 예측 (Prediction), 보정(Update), 자세 추정(Pose estimation), 재추출 (Re-sampling) 과정을 반복 수행하며 로봇의 위치를 계속 추 정한다. 이때 많은 수의 파티클은 정확도를 높일 수 있지만 계산 부하가 증가하게 되고, 적은 수의 입자는 계산 부하가 줄어들지만 정확도가 저하된다. AMCL(Adaptive Monte Carlo Localization)은 MCL 알고리즘을 개선한 것으로 파티클을 동 적으로 조정한다(Thrun, 2002). 불확실성이 높을 때는 많은 파티클을 사용하여 넓은 범위의 가능한 위치를 다루고, 불 확실성이 낮을 때에는 파티클 수를 줄여 계산 효율성을 높 이도록 하였다.
2.4 DWA(Dynamic Window Approach)
DWA(Dynamic Window Approach)는 이동로봇의 속도 탐색 영역(Velocity search space) 기반의 장애물 회피와 경로 계획 알고리즘이다(Fox et al., 1997). Fig. 1은 로봇의 병진 속도(υ, meter/sec)와 회전속도(ω, radian/sec)를 축으로 하는 속도 탐색 영역과 로봇의 하드웨어 한계로 인해 다음 시간 단계에서 선택할 수 있는 속도와 방향의 범위를 제한하는 DW (Dynamic window)를 나타낸다. DW 상에서 식(1)과 같은 목적 함수를 이용하여 로봇의 방향, 속도, 충돌을 고려한 최적의 병진 속도와 회전속도로 이동하게 된다.
여기서, V s : 최대 속도 영역, V a : 허용 속도 영역, V c : 현재 속도, V r : DW 내 속도 영역, heading(υ, ω) : 180 – 로봇 방향과 목적지 방향 차, dist(υ, ω) : 장애물과의 거리, υelocity(υ, ω) : 속도, σ(x) : Smooth function
3. 실 험
3.1 실험환경
본 실험에 사용된 하드웨어는 ROS 플랫폼 로봇인 Fig. 2 와 같은 Turtlebot3 Waffle 모델을 사용하였으며, 주요 규격은 Table 1과 같다. Turtlebot3 원격제어를 위한 PC의 OS는 Ubuntu 18.04이고, ROS 버전은 Dashing이다. 본 실험에 사용 된 장소는 약 300 m2 크기의 기관실습실로 내연기관, 선반, 용접실습대, 공구대, 드릴머신, 작업대 및 각종 기자재 등으 로 구성되어 있으며, 그 모습은 Fig. 3과 같다.
3.2 지도 작성
기관실습실의 지도 작성 시 Turtlebot3의 이동을 PC에서 원격으로 조작한다. Table 2는 SLAM 동작을 위한 옵션의 설 정값을 나타내고 있다. 지도 작성 시 경로(Trajectory)는 2차 원(2-Dimension)이고, LDS 센서의 최소, 최대 사용 거리와 장 애물이 없다고 간주하는 데이터 누락 길이(Data_ray_length)를 설정하였다. 이차원 지도 작성은 데이터에 노이즈가 많은 IMU 센서를 생략하면 추가적인 필터링이 필요 없어 전체적 인 시스템의 연산 부담이 줄어드는 장점이 있으나 이동할수 록 오차가 누적될 수 있기에 이를 보안하고자 위치 오차 보 정인 루프 클로저(Loop closer)를 강화하도록 최적화 노드 수 를 줄여 누적 오차를 줄이고자 하였다. 로봇의 위치 추정은 현재 스캔과 이전 스캔 간의 상관관계를 계산하여 로봇의 이동과 회전을 추정함으로써 복잡한 환경에서 성능이 향상 된다. 로봇이 감지하는 회전 각도의 최대 범위를 지정함으 로써 비정상적으로 크거나 빠르게 움직일 때 이상치를 제거 하도록 하였다. 또한, 포즈 그래프(Pose graph)는 최적화 노드 수를 최소화하여 Local SLAM의 비중을 높여 연산 자원을 줄 이고, 제약 조건을 설정하여 신뢰할 수 있는 그래프만 추가 하며, Global SLAM 과정에서 신뢰할 수 있는 조건만 사용되 도록 하였다.
지도는 주행기록계(Odometry), 좌표변환(Transform) 및 스캔 정보를 기반으로 그려지며 원하는 영역의 전체 지도를 만든 후 지도 데이터를 저장한다. ROS에서 사용되는 2차원 지도 는 일반적으로 점유 격자 지도(Occupancy Grid map)로 흰색 영역은 로봇이 이동 가능한 자유 영역(Free area), 검은색은 이동 불가능한 점유 영역(Occupied area), 회색은 확인되지 않 은 알 수 없는 영역(Unknown area)으로 나타낸다.
Fig. 4는 기관실습실의 지도를 만드는 과정으로 (a)는 지도 작성을 위한 시작 위치이며, (b)는 (a) 위치를 매핑한 것이다. (c)는 이동로봇이 좌측 두 번째 용접실습실로 이동한 모습이 며, (d)는 시작 위치부터 (c) 위치까지 매핑된 모습이다. 지도 는 이동로봇을 원격으로 조정하여 (e)는 좌측 상단, (f)는 우 측 상단, (g)는 우측 중간, (h)는 우측 하단, (i)는 시작 위치로 돌아오는 과정으로 매핑하였으며, (j)는 완성된 지도를 나타 낸다. 우측 하단은 실습실 기자재 및 각종 물품이 배치되어 있기에 로봇이 이동할 수 없어 알수 없는 영역인 회색으로 되어있다. Table 3은 매핑한 지도의 정보로서 픽셀의 해상도 (Resolution), 지도의 원점(Origin), 각 픽셀의 흑백 결정을 하 는 점유 한계치(Occupied_thresh)와 자유 한계치(Free_thresh)를 나타낸다.
3.3 자율주행
자율주행(Navigation)은 주어진 환경의 현 위치에서 지정된 목적지로 로봇을 이동하는 것으로 작성한 지도, 주행기록계, 좌표변환, 목표좌표, 속도 명령을 사용하여 지정된 목표와 자세로 이동할 수 있다. 자율주행 전 가장 먼저 해야 할 작 업은 초기 위치와 자세를 추정하는 것이다. Fig. 5 (a)와 같이 로봇이 위치하고 있는 예상되는 RViz 상 지도에 마우스를 클릭하고 로봇이 정면을 향하는 방향으로 녹색 화살표를 가 리키도록 한 후 원격으로 로봇을 전후좌우로 움직이면 주변 의 환경정보를 수집하여 지도상에서 로봇이 현재 위치를 찾 아낸다. 자율주행 시 로봇은 이동이 가능한 영역, 장애물과 충돌이 예상되는 영역, 장애물 영역을 실시간으로 계산하여 주변 환경을 그리드(Grid) 형태의 코스트맵(Costmap)을 나타 낸다. 로봇은 코스트맵 정보를 기반으로 목포 지점으로 이 동 시 주변 환경의 장애물이나 위험 영역을 피하며 경로 계 획에 사용된다. 코스트맵의 인플레이션 층(Inflation layer)은 감지된 장애물에 대한 안전거리를 생성하여 로봇의 이동 시 장애물과 충분한 거리를 두고 이동할 수 있는 경로를 선택 하게 한다. Fig. 5 (b)는 장애물과 코스트맵의 관계로 녹색은 레이저 센서에서 얻은 거리 센서값, 분홍색 영역은 장애물, 하늘색은 로봇 중심 위치가 이 영역으로 들어오면 충돌하게 되는 영역, 빨간색은 충돌 가능한 영역의 경계를 나타낸다.
Fig. 6은 이동로봇이 좌측 하단에서 우측 중간까지 이동해 가는 모습을 나타내고 있다. (a)는 이동로봇이 좌측 하단에 위치하고 있으며, 로봇이 이동하여 도착하고자 하는 위치와 도착하였을 때 로봇의 정면이 향하는 방향설정을 나타내고 있다. (b)는 로봇의 이동경로를 빨간색 선으로 나타내고 있 으며, (c), (d), (e)는 로못이 경로에 따라 이동해가는 모습을 나타내며, (f)는 로봇이 도착한 모습을 나타내고 있다.
Fig. 7은 이동로봇이 우측 중간에서 좌측 상단까지 장애물 을 회피하며 이동해 가는 모습으로 (a)는 목적지 설정, (b)는 예상 이동경로(Motion planning), (c)는 예상 이동경로에 따른 주행을 나타내고 있다. (d)는 지도 작성 시 없던 장애물로 (e) 는 이동로봇이 예상 경로로 주행 중 장애물을 발견하여 경 로를 수정한 것으로 (f)와 (g)는 장애물을 회피하며 수정된 경로로 주행한 모습이며, (h)는 예상 목적지에 도착한 모습 을 나타내고 있다.
4. 결 론
본 연구는 ROS2 기반의 이동로봇을 이용하여 기관실습실 에서의 자율주행을 구현하였다. 이동로봇의 자율주행을 위 해 SLAM을 사용하여 지도를 작성하고, 작성한 지도위에 이 동로봇의 출발위치와 도착위치를 설정하면 이동경로를 탐 색 후 자율주행을 하도록 하였다. 실험은 좌측 하단에서 우 측 상단, 우측 중간에서 좌측 상단, 우측 중간에서 좌측 중 간 등 여러 위치에서 자율주행 성능을 시험한 결과 이동로 봇은 설정한 목적지에 도착하는 것을 확인하였으며, 이동 시 지도에 없는 장애물을 놓은 경우에도 이를 회피하며 자 율주행하는 것을 확인하였다. 이는 기관실습실의 제한된 환 경에서 실험을 수행하였기에 이동로봇의 자율주행은 높은 성능을 보여주었다.
본 연구의 주요 목적은 이번 실험을 통해 이동로봇이 선 박의 기관실에서도 자율주행 적용이 가능한지 여부를 확인 하고자 함이다. 여러 대의 선반, 드릴머신, 공구대, 용접실습 대, 내연기관, 보관함 등의 기기 및 장비가 선박 기관실처럼 간격이 좁고 복잡한 구조의 실험환경에서 이동로봇을 이용 한 지도 작성과 자율주행 성능 결과가 우수함을 확인하였으 며, 선박기관실 또한 제한된 공간에서 구조의 변화가 생기 는 경우는 드믈기에 ROS2 기반의 자율주행이 가능할 것으 로 사료된다.
하지만, 실험환경의 바닥은 매우 평평하고 균일한 상태이 지만 선박기관실은 뷸균일한 바닥, 턱, 계단, 선체 움직임, 진동 등의 환경을 고려해야하기에 향후 선박에 적용 시에는 바퀴형태의 이동로봇이 아닌 4족이나 2족 보행로봇 플랫폼 을 적용하여 연구를 수행할 계획이다.














