omo_r1mini의 원격 로봇을 활용하여 SLAM을 테스트하여 본다.
SLAM이란?
- Simultaneous localization and mapping의 약자로, 로봇이 스스로 위치 추정(localization)과 주변 환경에 대한 지도 작성(Mapping)을 동시에 하는 기술이다.
- 로봇이 다양한 센서를 통해서 주변 공간을 지도화시킨 후, 완성된 지도와 센서로 얻어 낸 공간 데이터를 활용하여 스스로 로봇의 이동 경로를 결정하는 방법이다.
- SLAM에 필요한 센서 정보와 로봇의 위치 정보인 오도메트리 정보가 필요하다.
omo_r1mini 패키지 설치하기
- omo_r1mini의 read.md를 통해서 관련 패키지를 설치할 수 있다.
- omorobot 공식 홈페이지에서도 설치 방법을 안내해주고 있다.
- 설치 이후에 관련 패키지를 환경변수에 등록하는 것이 데모 실행하는데 편리하다.
omo_r1mini 패키지 실행하기
- SLAM은 Mapping 이후에 Navigation을 진행하는데, 이는 Cartographer를 활용하고 있다.
- Cartographer는 로봇의 odemetry(주행 거리) 데이터와 2D 라이더 센서 데이터로 매핑과 네비게이션을 할 수 있는 패키지이다.
- Mapping 작업을 위한 명령어는 다음과 같다. 터미널에 4개의 창을 열어서, 다음의 순서대로 명령어를 입력한다.
ros2 launch omo_r1mini_gazebo omo_r1mini.launch.py # 원격 로봇 실행 ros2 launch omo_r1mini_cartographer cartographer.launch.py # Cartographer 실행 ros2 launch omo_r1mini_cartographer cartographer_rviz.launch.py # rviz 실행 ros2 run omo_r1mini_teleop teleop_keyboard # 원격 로봇 제어를 위한 키보드 입력
- Mapping 작업시의 rqt_graph는 다음과 같이 표시된다.
- Mapping이 완료되면 다음의 명령어로 데이터를 저장한다.
ros2 run nav2_map_server map_saver_cli -f map
- Navigation을 위한 노드를 실행한다. 이 역시도 터미널에 2개의 창을 열어서, 다음의 순서대로 명령어를 입력한다.
ros2 launch omo_r1mini_navigation2 navigation2.launch.py map:=$HOME/map.yaml ros2 launch omo_r1mini_navigation2 navigation2_rviz.launch.py
- Navigation 작업시의 rqt_graph는 다음과 같이 표시된다.
실행 과정
- 다음과 같이 4개의 터미널로 나눠서 실행하였다.
- 원격 로봇은 아래의 이미지와 같이 확인할 수 있다.
- Mapping을 진행하는 과정에서는 다음과 같이 시각화된다.
- Mapping이 완료된 지도 데이터는 다음의 형태로 저장된다.
- Navigation할 때 2D Pose Estimate로 원격 로봇이 있는 위치를 지정하고 Navigation2 Goal로 원하는 곳을 지정하면, 빨간 선과 같이 스스로 경로를 계산하여 이동한다.
결과물
- SLAM 전체 과정을 다음과 같이 녹화하였다.