SLAM 하기 – Navigation

앞서 SLAM Mapping과정을 통해 만들어진 지도를 가지고 자율주행을 진행하는 과정입니다.

이 과정에서는 teleop keyboard 노드를 끄고 navigation의 목표 위치를 지정하여 이동하게 됩니다.

slam navigation을 실행했을때 나타나는 전체 노드 그래프는 다음과 같습니다.

노드 실행하기 #

2개의 터미널을 띄우고 ssh를 통해 로봇에 접근합니다.1번째 터미널에는 로봇 bringup node를 띄웁니다.

$ ros2 launch omo_r1mini_bringup omo_r1mini_bringup.launch.py

2번째 터미널에서는 navigation2.launch.py를 띄우는데 map 파라미터로 앞서 저장한 맵이름.yaml 파일을 지정합니다.

예를들어 해당 yaml파일이 $HOME의 office.yaml 파일인 경우 다음과 같이 입력합니다.

$ ros2 launch omo_r1mini_navigation2 navigation2.launch.py map:=$HOME/office1.yaml

REMOTE PC에서 rviz 띄우기 #

모든 노드가 준비되었으면 터미널을 열고 아래와 같이 입력합니다.

$ ros2 launch omo_r1mini_navigation2 navigation2_rviz.launch.py

지도 위에 로봇이 있을것으로 추정되는 위치와 방향에 가져다놓기 위해 상단의 메뉴 중 2D Pose Estimate 버튼을 눌러 지도에 클릭 후 드래그 해줍니다.그러면 아래 그림과 같이 로봇의 위치와 함께 주변 장애물들이 표시가 됩니다.로봇의 위치가 조금 어긋나더라도 상관없습니다. 주행을 시작하면서 로봇이 알아서 맞추게 됩니다.

이제 상단 메뉴에서 Navigation Goal 버튼을 눌러 로봇이 이동하고자하는 목적지를 누르면 로봇이 스스로 길을 찾아 이동하게 됩니다!

SLAM 주행 동영상 #

사무실 환경에서 SLAM 네비게이션 하는 동영상입니다.