자율 탐색 및 객체 인식 재난로봇 _ Gamma.pdf
11.01MB
01234
자동 SLAM 및 객체 인식 기반 재난 로봇 시스템
프로젝트 개요
- 목적: 재난 환경에서 실내 자동 탐색 및 객체 인식을 통해 요구조자에게 실시간 정보를 제공하고, 안전한 환경 조성을 지원하는 로봇 시스템 개발.
- 기능:
- SLAM: 실시간 맵핑과 로봇의 위치 추정.
- 센서 퓨전: 카메라와 LiDAR 데이터를 통합하여 환경과 객체를 정밀하게 인식.
- 객체 인식: 사람과 소화기와 같은 주요 객체를 실시간으로 감지하고, 맵 상에 위치 마커를 표시.
기술 스택
- 프레임워크 및 라이브러리:
- ROS2 Humble
- OpenCV
- Python
- 알고리즘:
- RRT (Rapidly-Exploring Random Tree): 샘플링 기반 경로 계획법으로 초기 탐색 경로 생성.
- Frontier 탐색: 탐사된 영역과 미탐사 영역의 경계를 그룹화하여 탐색 우선순위를 결정.
- FLANN (Fast Library for Approximate Nearest Neighbors): 빠른 특징점 매칭을 위한 라이브러리.
- RANSAC (Random Sample Consensus): 객체의 3D 위치 추정을 위한 아웃라이어 제거 알고리즘.
- 센서 및 데이터:
- RGB 카메라
- LiDAR 센서 (정확한 거리 및 장애물 정보 제공)
SLAM 및 자율 탐색
- RRT 기반 탐색 알고리즘:
- 랜덤 샘플링으로 탐색 경로를 생성하며, 장애물을 효율적으로 회피할 수 있는 경로를 계산.
- 휴리스틱 함수를 사용하여 목표 지점과의 거리 우선 순위를 설정함으로써, 빠르고 효율적인 경로 탐색 가능.
- 충돌 검사 과정을 통해 로봇이 안전한 경로를 이동하도록 보장.
- Frontier 탐색:
- SLAM 맵 데이터에서 탐사된 공간과 미탐사 공간 사이의 경계를 **탐색 경계선(Frontier)**으로 식별.
- 탐색 경계선이 포함된 영역을 그룹화하고, 그룹 중심점을 기준으로 가장 가까운 목표를 선택하여 이동 경로를 생성.
- 탐사 경계선이 더 이상 없거나 모두 장애물로 막혀 있는 경우 탐색이 완료되었다고 판단.
- 맵 저장 조건:
- 모든 탐사 가능한 공간이 확인되었을 때 맵을 저장.
- ROS2의 map_saver_cli 명령을 통해 OccupancyGrid 형식의 맵 데이터를 저장하며, 저장된 맵은 향후 네비게이션에 사용.
객체 인식 및 맵 표현
1. 센서 퓨전을 이용한 방법
- 방법:
- 카메라에서 인식된 객체를 LiDAR 데이터와 결합하여 정확한 위치를 추정.
- 객체를 카메라 프레임의 중앙으로 정렬시키고, LiDAR의 거리 데이터를 사용해 3D 위치를 계산.
- 정렬된 데이터는 SLAM 맵에 마커 형태로 시각화.
- 장점:
- LiDAR와 카메라 데이터를 융합하여 높은 정확도의 객체 위치 추정 가능.
- 다양한 센서 데이터를 결합하여 객체의 정보를 제공.
- 결과:
- 동기화된 데이터를 기반으로 정확히 표시된 객체 위치와 실시간 장애물 회피 지원.
2. PnP를 이용한 방법
- 방법:
- 카메라 데이터만을 사용하여 객체의 대략적인 3D 위치를 추정.
- SIFT 및 FLANN 알고리즘으로 객체의 특징점을 매칭하고, RANSAC 기반의 PnP(Perspective-n-Point) 알고리즘을 통해 객체 위치 계산.
- 객체 위치는 SLAM 맵에 대략적인 좌표로 표시.
- 장점:
- 카메라 데이터만으로도 간단히 객체 위치를 추정 가능.
- 추가적인 센서 없이 경량화된 구현 가능.
- 결과:
- 객체 위치를 빠르게 추정하여 SLAM 맵에 반영하지만, 정확도는 센서 퓨전 방법보다 낮음.
시스템 구성
Node 구성
- detect_things.py:
- 객체 감지 및 위치 추정.
- 카메라 이미지 구독(/oakd/rgb/preview/image_raw/compressed).
- 로봇 위치(/amcl_pose) 구독.
- Control2.py:
- SLAM 및 자율 탐색 노드.
- 맵(/map), 라이다(/scan), 오도메트리(/odom) 데이터 처리.
- 이동 명령 퍼블리시(/cmd_vel).
- Control_draw_rviz.py:
- RViz에서 객체 위치 시각화 및 마커 퍼블리시.
성과
- 실시간 SLAM 맵 생성 및 저장.
- 평균 맵 정확도: 95% (객체의 위치와 장애물 탐지의 일치도 기반).
- 탐색 시간: 1m x 1m 공간당 평균 3초 소요.
- 사람과 소화기와 같은 주요 객체를 두 가지 방식(센서 퓨전 및 PnP)으로 맵 상에 표시.
- 센서 퓨전 방식: 위치 정확도 ±5cm.
- PnP 방식: 위치 정확도 ±20cm.
- 장애물 회피 및 최적 경로 탐색 성공.
배운 점
본 프로젝트를 통해 다음과 같은 중요한 교훈을 얻었습니다:
- 센서 퓨전의 중요성:
- 카메라와 LiDAR 데이터를 동기화함으로써 객체 위치와 환경 정보를 더욱 정확하게 파악할 수 있었습니다.
- 데이터의 동기화 과정에서 발생하는 오류를 줄이기 위해 카메라 프레임을 정렬하고 센서 간 데이터 일치를 확인하는 기술을 익혔습니다.
- 카메라 데이터 활용의 간소화:
- PnP 알고리즘을 활용하여 추가적인 센서 없이도 대략적인 객체 위치를 추정할 수 있음을 확인했습니다.
- 경량화된 구현 방법이 필요한 상황에서 효율적인 대안이 될 수 있음을 배웠습니다.
- 자동 SLAM의 이해:
- SLAM을 통해 실시간으로 환경을 맵핑하고, Frontier 탐색 및 RRT 알고리즘을 활용하여 효율적인 자율 탐색이 가능함을 배웠습니다.
- 장애물 회피와 미탐사 영역 탐색 간의 균형을 맞추는 기술을 습득하여 복잡한 환경에서도 로봇의 효율성을 높였습니다.
이를 통해 향후 더 복잡한 환경에서의 테스트와 객체 인식 대상의 확장 가능성을 탐구할 수 있는 기반을 마련했습니다.
'ROS2' 카테고리의 다른 글
[두산로보틱스] 제품 검사 시스템 구축 프로젝트 (0) | 2025.01.06 |
---|---|
[두산로보틱스] 멀티 로봇 제어 및 Digital Twin 프로젝트 (0) | 2025.01.05 |
[두산로보틱스] AMR 관제 시스템 구축 프로젝트 (0) | 2025.01.05 |
[두산로보틱스] 협동로봇 스포츠 스태킹 프로젝트 (0) | 2025.01.05 |
[두산로보틱스] 협동로봇 젠가 쌓기 (1) | 2025.01.05 |