AI 로봇선도학교SLAM Navigation(자율주행)
SLAM and Navigation 김성두
개념: 로봇을 이동시키면서 LDS를 이용하여 주변의 장애물을 기록하여 지도를 작성하고, 제작된 지도를 활용하여 출발지점에서 목표지점에 도착하는 경로를 로봇 스스로 구성할 수 있도록 함.
1. SLAM (Simultaneous Localization And Mapping)
- 로봇의 현재 위치를 기초로 주변의 환경을 파악하여 지도를 작성하는 것 - 로봇과 PC 를 부팅하여 같은 ros2 운영체제로 연결함. ( .bashrc 를 편집하여 TURTLEBOT3_MODEL= waffle_pi 입력)
로봇: $ssh ubuntu@172.16.1.41 $ros2 lanuch turtlebot3_bringup robot.launch.py ( ros2 패키지명 노드명)
PC: $ ros2 launch turtlebot3_cartographer cartographer.launch.py
- 로봇을 키보드 또는 리모콘으로 운전하여 지도를 작성하고자 하는 장소를 탐색하면 PC의 cartographer프로그램 화면에 지도가 그려짐 - 작성된 지도를 저장 $ros2 run nav2_map_server map_saver_cli -f ~/map
2. Navigation
- 로봇 부팅 및 ros2 bringup - PC 에서 ros2 bringup 및 navigation2 실행 $ ros2 launch turtlebot3_navigation2 navigation2.launch.py map:=$HOME/map.yaml
( 커맨드 창 터미네이트 사용 중)
실행된 창에서 지도의 크기를 조절하고 상단메뉴 2D Pose Estimate 의 화살표를 현재 로봇의 위치에서 정면을 향하는 방향으로 드래그함. 현재 로봇의 주변 지도와 이미 작성되 지도가 일치 될때까지 반복하여 시행.( 아래 그림의 타원 참조)
이제 원하는 목표지점을 상단 메뉴의 Navigation2 Goal 로 드래그하면 로봇이 스스로 경로를 설정하여 목표지점까지 이동함.
경로의 중간에 만들어진 지도에 없는 장애물이 발생하면 지도에 추가하고 새로운 경로를 찾아서 목표지점으로 진행함.
|