map은 로봇의 Odometry, TF, 와 Lidar로 scan한 data를 토대로 그려짐
- Odometry : 주행기록계라는 뜻으로 시간에 따른 위치 변화를 추정하는 개념으로, GPS와 같은 절대적 위치가 아닌 출발 지점으로부터의 상대적인 위치를 추정한다. Motor의 Encoder의 회전수를 통해 거리를 측정하고, IMU센서를 통해 기울기를 측정하여 로봇의 위치 추정
- IMU(Inertial Measurement Unit) Sensor : 관성을 측정하여 물체가 기울어진 각도를 측정함
- TF(Transform) : 좌표변환이라는 뜻으로 scan data 변환을 위해 사용됨.
- Navigation : 주어진 환경에서 로봇을 특정 위치로 옮기는 것. 앞서 SLAM으로 만든 기하학적 정보를 포함한 map 활용. 로봇의 Encoder, IMU sensor, Distance 센서를 통해 Navigation 수행
- 위 과정은 AMCL parameter를 초기화하는, Navigation에서 매우 중요한 과정이므로 Navigation 실행 전에 수행해야 함.
AMCL : 2차원으로 움직이는 로봇의 위치를 확률적으로 파악하는 system으로서 입자 필터를 사용하여 지도상에서 로봇의 자세를 추적함
- Rviz 상단의 ‘2D Pose Estimate’ 클릭
- Map 상에서 로봇이 실제로 있는 위치를 클릭한 후 로봇의 정면을 바라보고 있는 방향으로 녹색 화살표 지정
- Lidar 센서의 데이터가 map에 덮어질 때까지 1~2 반복
- teleoperation node launch
$ export TURTLEBOT3_MODEL=waffle_pi
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
- 로봇을 조금씩 움직이며 주변 환경의 정보를 수집. 기존 map과 matching해가며 로봇의 주종된 위치를 줄임. 이 과정에서 녹색 화살표들이 줄어듦. 이는 확률이 점점 수렴함을 의미 (녹색 화살표는 로봇이 위치하고 있을 확률 표시)
- Ctrl + C로 teleop를 끔. Navigation Package에서 publihsh하는 로봇의 병진/회전 속도와 teleop의 병진/회전속도가 섞임.
Set Navigation Goal
- 상단의 ‘2D Nav Goal’ 클릭
- 로봇을 보낼 목적지를 클릭하고 도착 후 로봇이 바라볼 방향으로 화살표 지정