2D Pose Estimate로 초기 위치 찍기

지도는 떴는데 로봇이 보이지 않는다면?

출발점

AMCL은 출발점을 모릅니다

TurtleBot3의 Nav2 설정은 초기 위치를 스스로 정하지 않습니다(set_initial_pose: false). AMCL은 초기 위치를 받을 때까지 map→odom을 내지 않으므로, rviz2의 지도 위에 로봇과 라이다가 제대로 나오지 않습니다.

③ 터미널에 Timed out waiting for transform …이 되풀이되는 것은 정상입니다. 60초를 넘겨 Aborting bringup이 떴다면 ③을 Ctrl+C로 끄고 다시 실행한 뒤 바로 찍습니다.

실제 자리

Gazebo에서 실제 위치와 방향을 봅니다

rviz2에 알려 줄 것은 Gazebo 속 로봇이 지금 실제로 있는 자리와 바라보는 방향입니다. Gazebo를 다시 켰다면 로봇은 지도를 그리며 돌던 자리가 아니라 처음 스폰된 자리로 돌아가 있습니다.

turtlebot3_world는 왼쪽 기둥 줄 앞에서 +x 쪽을 보며 스폰됩니다. 지도 좌표는 SLAM을 시작한 자리가 기준이라, 숫자보다 벽과 기둥을 보고 맞춥니다.

따라 하기

누르고 끌어서 방향까지 찍습니다

rviz2 위쪽의 2D Pose Estimate를 누르고, 지도에서 로봇이 있는 자리를 누른 채 로봇이 바라보는 쪽으로 끕니다. 손을 떼면 /initialpose 토픽으로 위치가 가고, AMCL이 그 둘레에 후보를 뿌립니다.

맞았는지

라이다 점이 벽에 겹치면 맞습니다

찍은 뒤 라이다 점이 지도의 벽과 겹치는지 봅니다. 크게 어긋나 있으면 2D Pose Estimate로 다시 찍습니다. 조금 틀린 것은 다음 장처럼 움직이면서 AMCL이 고쳐 갑니다.

좁히기

조금 움직이면 후보가 모입니다

② teleop으로 로봇을 앞뒤로 조금 움직이거나 제자리에서 돌립니다. 새 스캔이 들어올 때마다 AMCL이 맞지 않는 후보를 버려, 화살표 무리가 로봇 둘레로 좁혀집니다.

AMCL은 로봇이 어느 정도 움직여야 다시 계산합니다. 가만히 두면 무리가 줄지 않습니다.

teleop 끄기

그다음 ② teleop은 Ctrl+C로 끕니다

teleop은 키를 누르지 않아도 0.1초마다 /cmd_vel을 보냅니다. 켜 둔 채 Nav2가 로봇을 몰면 두 속도 명령이 섞여 로봇이 멈칫거립니다. 초기 위치를 맞췄으면 ② 터미널에서 Ctrl+C로 끕니다.

ROBOTIS 매뉴얼도 같은 까닭으로 teleop을 끄라고 안내합니다. 그림의 0.2는 예시 속도입니다.

다음 편

준비는 끝났습니다. 그런데 길은 누가 찾을까요?

7편길은 누가 찾을까? 15강 목록