map_saver_cli
애써 그린 지도, 터미널을 닫아도 남아 있을까?
왜 저장하나
지도는 지금 메모리에만 있습니다
3편에서 그린 지도는 slam_toolbox가 /map 토픽으로 내보내는 메시지일 뿐입니다. ③을 Ctrl+C로 끄면 지도도 함께 사라집니다. 5편부터 이 지도를 다시 쓰려면 파일로 저장해야 합니다.
따라 하기
새 터미널에서 한 줄이면 됩니다
①~④를 켜 둔 채로 새 터미널을 하나 더 열고 ros2 run nav2_map_server map_saver_cli -f $HOME/map을 실행합니다. map_saver_cli는 /map을 한 번 받아 파일로 쓰고 끝납니다.
-f 뒤에는 확장자 없이 이름만 씁니다. /home/user는 예시이고, 각자의 홈 폴더가 찍힙니다. 출력은 일부만 보였습니다.
파일 둘
그림과 설명, 파일 두 개가 생깁니다
map.pgm은 지도 그림이고, map.yaml은 그 그림을 어떻게 읽을지 적은 설명서입니다. 둘은 늘 같은 폴더에 함께 둡니다.
PGM은 회색조 그림 형식입니다. 그림 뷰어로 열어 볼 수 있습니다.
map.pgm
밝기 세 가지로 칸을 적습니다
저장할 때 칸 값이 밝기로 바뀝니다. 빈 곳은 흰색, 벽은 검정, 모름은 회색입니다. rviz2에서 보던 색과는 달라도 같은 지도입니다. 불러올 때는 거꾸로 밝기를 칸 값으로 되돌립니다.
map.yaml
칸 크기와 놓일 자리가 적혀 있습니다
resolution은 한 칸이 몇 미터인지, origin은 그림의 왼쪽 아래 칸이 map 좌표로 어디인지 알려 줍니다. 이 두 값 덕분에 그림이 실제 크기의 지도가 됩니다.
origin 숫자는 예시이고 지도마다 다릅니다.
저장 전에
벽이 닫힌 뒤 저장합니다
벽에 모름 칸이 뚫린 채 저장하면, 5편부터 쓰는 Nav2가 그 틈을 지나갈 수 있는 길로 볼 수 있습니다. rviz2에서 벽이 끊긴 곳이 보이면 그쪽으로 더 돌며 메운 뒤 저장합니다.
같은 이름으로 다시 저장하면 덮어씁니다. 5편에서 이 경로 $HOME/map.yaml을 그대로 씁니다.
다음 편