메인메뉴 바로가기 본문으로 바로가기

마산중앙고등학교

검색열기

AI 로봇선도학교

SLAM Navigation(자율주행)

메인페이지 AI 로봇선도학교SLAM Navigation(자율주행)

SLAM Navigation(자율주행)


SLAM and Navigation

김성두        

 

개념: 로봇을 이동시키면서 LDS를 이용하여 주변의 장애물을 기록하여 지도를 작성하고, 제작된 지도를 활용하여 출발지점에서 목표지점에 도착하는 경로를 로봇 스스로 구성할 수 있도록 함.


waffle_pi.jpg

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

 

map.jpg

 

 

- 로봇을 키보드 또는 리모콘으로 운전하여 지도를 작성하고자 하는 장소를 탐색하면 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

 

launch.jpg

                                          ( 커맨드 창 터미네이트 사용 중)

 

실행된 창에서 지도의 크기를 조절하고 상단메뉴 2D Pose Estimate 의 화살표를 현재 로봇의 위치에서 정면을 향하는 방향으로 드래그함. 현재 로봇의 주변 지도와 이미 작성되 지도가 일치 될때까지 반복하여 시행.(  아래 그림의 타원 참조)

 

navigation.jpg

 

이제 원하는 목표지점을 상단 메뉴의 Navigation2 Goal 로 드래그하면 로봇이 스스로 경로를 설정하여 목표지점까지 이동함.

 

navigation2.jpg

 

경로의 중간에 만들어진 지도에 없는 장애물이 발생하면 지도에 추가하고 새로운 경로를 찾아서 목표지점으로 진행함.