# SLAM 하기 - Navigation

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

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

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

![](https://491696592-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MK7gxD_6rkqAewni4tk%2Fuploads%2FMrKtuPOXvEUL1Sap8IQH%2Frosgraph_navigation.png?alt=media\&token=7281c45f-2dfa-4f41-ba58-47c067747dc3)

### 노드 실행하기

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
```

이제 rviz 화면이 뜹니다.

![](https://491696592-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MK7gxD_6rkqAewni4tk%2Fuploads%2FFwGPjXLRwjBcu358Hh83%2FScreenshot%20from%202021-10-26%2016-45-40.png?alt=media\&token=a9cd1a6a-ed0c-40c1-9e57-e5b970dbaced)

지도 위에 로봇이 있을것으로 추정되는 위치와 방향에 가져다놓기 위해 상단의 메뉴 중 2D Pose Estimate 버튼을 눌러 지도에 클릭 후 드래그 해줍니다.

그러면 아래 그림과 같이 로봇의 위치와 함께 주변 장애물들이 표시가 됩니다.

로봇의 위치가 조금 어긋나더라도 상관없습니다. 주행을 시작하면서 로봇이 알아서 맞추게 됩니다.

![](https://491696592-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MK7gxD_6rkqAewni4tk%2Fuploads%2FxtKLCExw2AdsKEzW7QL1%2FScreenshot%20from%202021-10-26%2016-45-54.png?alt=media\&token=e5c48f70-6a5e-4432-bf5a-d1ffecfb8a00)

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

### SLAM 주행 동영상

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

{% embed url="https://youtu.be/gqlfoZF-La4" %}
