Elevation Mapping for Locomotion and Navigation using GPU 논문
Abstract :
주변 환경을 인식하는 거은 자율 이동 로봇에게 매우 중요
Elevation Map은 지상 로봇을 위해 메모리 효율적이고 단순하지만 강력한 기하학적 표현을 제공
이를 통해 미지의 환경에서의 탐색 또는 거친 지형 위에서의 Locomotion Control을 수행할 수 있음 (지각적 이동 제어)
추가적으로 Smoothing, Inpaintin, Plane Segmetation 등 다양한 후처리 단계가 포함됨
어떻게 구현하는지 고려
GPU를 활용하여 빠르고 효율적인 처리를 제공하는 고도 매핑 파이프라인 제안하며, 탐색과 이동을 위한 추가적인 기능도 제공 -> 다양한 하드웨어 실험을 통해 검증 (DARPA Subterranean Challenge 동안 지하 탐사 및 사족 보행 로봇의 다양한 실험에 성공적으로 배치)
1. Introduction :
자율적으로 미지의 환경에서 작동하는 이동 로봇에게는 온보드 센서를 사용하여 주변 환경을 인식하는 것이 매우 중요
제한된 센서 범위를 극복하기 위해 센서 측정값을 시간에 따라 융합하면서 지도를 생성
Occupancy Grid : 평탄한 지형에서 장애물을 피하며 실내 내비게이션에 적합
2D 지도는 각 셀이 점유되었는지 여부를 나타냄. 따라서 로봇은 피하면서 목표 지점으로 경로를 계획할 수 있음
그러나 경사면이나 계단과 같은 거친 지형에는 적합하지 않음
2.5D Elevation Map :
Occupancy Grid의 문제를 해결하기 위해 사용
각 셀의 높이 정보를 젖아하여 지형 기하를 표현
다층 구조를 표현할 때, Multi-level Surface Map을 생성해야함
3D Voxel Grid :
3D 공간 정보를 나타내기 위해 Voxel을 사용
점유 확률은 센서 측정값을 기반으로 업데이트
2.5D 지도보다 일반적인 구조를 모델링할 수 있지만, 동일한 그리드 크기를 가정할 때 메모리 요구량이 높음
거친 지형 탐색
기하학적 특징을 기반으로 Costmap을 계산하여 플래너에 사용됨
Foothold Score (발 디딜 위치 점수)를 사용하여 경로 계획
사족보행 로봇
Elevation Mapping을 사용하여 이동 제어를 수행
발판 선택 및 경로 계획에 사용되며, 탐색 및 이동 작업을 수행하려면, 실시간으로 고도 지도를 생성하고 후처리를 수행해야함.
기존 접근 방식
CPU 기반의 지도 생성
깊이 측정값을 기반으로 로봇의 지역 좌표계 변환 및 각 셀의 지형 높이를 Kalman FIlter 방식으로 업데이트
GPU 기반 최근 접근 방식
지역 지도 업데이트 연구가 존재하지만, 대규모 범위 탐색에 맞춰져 있음 (사족보행 로봇의 세밀한 기하 표현 X)
Voxel 사용 방법
3D 지도를 2D Grid로 투영하기 위해 복셀을 사용 -> 많은 메모리 요구
논문의 Contribution
GPU 기반 Elevation Mapping 프레임워크 제안
2. Methods :
GPU 기반 Elevation Mapping 지도 생성 방법론과 탐색 및 이동 제어를 위한 추가 기능 설명
파이프라인 개요 (Section II-A)
입력 데이터는 depth sensor로부터 수집된 point cloud와 로봇의 추정 위치 정보
SLAM 기반의 위치 추정 or Odometry Systems에서 제공
데이터를 GPU로 전송 -> ROS TF 를 통한 지도 변환
height drift 오류를 계산하여 downstrearm process를 위해 저장
높이 오류를 기반으로 지도를 이동시켜 최신 센서 측정값과 일치하도록 조정
각 측정값에 따라 높이 업데이트
ray-casting 진행 : 관통된 객체 제거 및 상한 계층 (upper-bound layer) 업데이트
셀 단위 작업 :
중첩 제거(overlap clearance), 탐색 가능성 추정 (traversability), Normal calculation, 추가 필터링 진행
사용자가 정의한 주기로 지도 데이터를 CPU 메모리로 전송해 ROS GripMap Msg로 게시 진행
지도 업데이트 (Section II-B, II-C)
II-B. Implementation Details
ROS 프로세스 간의 통신
Cupy : GPU 병렬 계산 구현
Python 기반의 간단한 API와 사용자 정의 CUDA 커널을 사용할 수 있음
PyTorch와 같은 딥러닝 프레임워크와 GPU 메모리를 공유 가능
ROSCPP 사용 : rospy의 ROS 메시지 직렬화 속도가 느리기 때문
II-C. Height Cell Update
셀 높이는 Kalman Filter를 통해 업데이트 진행
CUDA 커널을 사용해 각 점을 병렬로 처리
셀 높이 추정 / 센서 노이즈 모델 / 셀 분산 업데이트를 통해 계산
지도 품질 향상을 위한 기능 (Section II-D, II-E, II-F)
II-D. Height Drift Compensation
센서 위치의 정확한 추정이 어려워, 로봇의 상태 추정이 드리프트하여 지도에 왜곡 발생
센서 측정값과 현재 지도 높이 간의 차이를 계산하여 지도 조정
각 점들에 대해 오류를 계산하여, 평균 오류를 지도에 추가
II-E. Visibility Cleanup -> 필요 기능 중 하나
동적 장애물이 있을 경우, 지도에 오래된 장애물이 남아 지도 업데이트에 방해
Raycasting을 사용해 오래된 장애물 제거
Ray가 특정 셀을 관통했는지 확인 후 제거
최근 업데이트되지 않은 셀만 제거
II-F. Overlap Clearance
다층 구조 환경을 탐색할 때, 상층/하층의 오래된 높이 값이 지도에 남아 문제를 발생
로봇 높이와의 차이가 임계값을 초과하는 값을 제거
탐색 및 사족 보행 로봇 이동에 사용된 후처리 기능 (II-G, II-H, II-I)
II-G. Learning-based Traversability Filter
GPU에서 지도 데이터를 이미 메모리에 로드하여, 효율적인 지형 분석 진행
CNN 모델을 사용해 탐색 가능성 값을 출력 - Pytorch로 구현
II-H. Heght Upper Bound Layer
Raycasting을 통해 관측되지 않은 셀의 최대 지형 높이를 계산
장애물에 의해 발생한 지도 hole을 찾는데 유용
II-I. Features for Legged Locomotion
Mimimum Filter
지도 완전성을 보장하기 위해 비어 있는 그리드 셀을 주변 높이로 채움
Smoothing Filter
Gaussian, Box-blur, Median 필터를 사용해 지도 평활화
Plane Segmentation
최적화 기반 접근 방식에서 지형을 기하학적 형태로 표현하여 계산 시간 단축
연속적인 평면 영역으로 지도 분할 후, 다각형으로 반환
3. experiments and Results:
Elevation Mapping 프레임워크를 평가하기 위해, 기존의 프레임워크와 비교 진행
ANYmal 플랫폼을 사용한 사족보행 로봇의 ocomotion & navigation 실험을 진행
사용 센서 : Robosense Bpearl LiDARs 2대 + Intel Realsense 4대
A. Baseline Comparison
Feature Evaluation : 동일한 데이터를 사용해 map 품질을 비교하며 기능 효과를 평가
Drift Compensation, Visibility Cleanup, Exclusion Area
Processing Time Comparision
GPU 기반의 매핑은 Point Cloud 점이 많을 때도 짧은 처리 시간을 유지
B. Performance Analysis
높이 드리프트 보정의 효과를 통해, 지도 품질 향상에 기여
IMU와 LiDAR SLAM을 결합한 Odometry 사용 시, 시간이 긴 mission에서도 정확도를 유지
다층 구조에서 오래된 데이터 제거를 통해 이동 경로의 명확성을 확보
C. Locomotion and Navigation Applications
Local Path Planning - DARPA Subterranean Challenge에서 로컬 탐색에 사용
upper bound layer 및 traversablity를 계산하여 안전한 경로 계획
Using elevation map for locomotion : reinforcement learning-based controller를 사용하여 elevation mapping의 각 발 위치 데이터를 샘플링 이후, 보정된 odometry와 결합하여 미끄러짐으로 인한 odometry 드리프트 완화