콘텐츠로 이동

내비게이션 — 지도를 만들고, 길은 로봇이 찾게

SLAM이 지도를 만들고, Nav2가 경로를 몹니다. 둘 다 PhysiCar 패널 › Tutorials 탭 › Navigation에서 합니다 — SLAM, Nav2 두 페이지 — 그리고 RViz 가 앱의 VNC 탭에 저절로 떠서 전부 보여줍니다.

1. 월드 지도 만들기

SLAM 페이지에서 ▶ SLAM을 누르세요. 터미널에 입력되는 명령이 버튼 아래 보입니다:

ros2 launch slam_toolbox online_async_launch.py slam_params_file:=/home/physicar/physicar_ws/tutorials/navigation/slam_params.yaml use_sim_time:=true

(use_sim_time은 시뮬레이터에서 true, 로봇에서 false — 패널이 골라 줍니다.) app.physicar → VNC에 RViz 가 뜨고 지도가 자랍니다. 로봇을 몰고 다니세요(키보드면 충분) — 벽이 이어져 완전한 평면도가 될 때까지. 모서리는 두 번 쓸어주세요. 루프 클로저가 지도를 딱 맞게 당겨줍니다.

2. 지도 저장

SLAM 페이지에서 ▶ Save map을 누르세요. 돌고 있는 SLAM 에서 지도를 tutorials/navigation/my_map.yaml + .pgm 으로 저장합니다(다시 저장하면 덮어씁니다). 그다음 SLAM 을 ■ Stop — RViz 도 같이 닫힙니다.

3. 내비게이션

Nav2 페이지를 열고 ▶ Nav2:

ros2 launch nav2_bringup bringup_launch.py map:=/home/physicar/physicar_ws/tutorials/navigation/my_map.yaml params_file:=/home/physicar/physicar_ws/tutorials/navigation/nav2_params.yaml use_sim_time:=true

이 런치 하나가 위치 추정(AMCL)과 내비게이션을 함께 띄웁니다. RViz에서 목표(2D Goal Pose / Nav2 Goal)를 찍으세요 — 계획 경로가 나타나고 로봇이 장애물을 피하며 따라갑니다. 경로에 박스를 놓아보세요(시뮬레이터 월드의 물체 활용) — 지역 계획기가 슥 돌아가는 게 보입니다.

설정

  • SLAM — 지도 해상도, 라이다 범위, 스캔을 더하는 간격, 루프 클로징. slam_params.yaml 에 쓰이고 다음 ▶ SLAM 부터 적용됩니다.
  • Nav2 — 최고·후진 속도, 목표 허용오차, 코스트맵 인플레이션. nav2_params.yaml 에 쓰이고 다음 ▶ Nav2 부터 적용됩니다.
  • 두 파라미터 파일은 tutorials/navigation/ 에 있고(다른 튜토리얼 파일처럼 탐색기에서는 읽기 전용) 컬럼이 그 편집기입니다. 다른 값까지 바꾸고 싶으면 파일을 내 폴더로 복사해서 그 복사본으로 실행하세요.
  • SLAM 이나 Nav2 가 도는 동안 다른 튜토리얼은 기다립니다 — 로봇 하나에 SLAM 하나, Nav2 하나.

볼 포인트

  • 전역 경로(목표까지의 긴 선) vs 지역 경로(피해 가는 짧은 선) — 계획기 둘의 협업.
  • 장애물 주변의 코스트맵 번짐 — 로봇에게 "너무 가깝다"가 어떻게 보이는지. 인플레이션 반경을 줄이면 경로가 벽에 붙는 게 보입니다.

내 것으로

  • 내가 만든 월드를 지도로 떠서 그 안을 내비게이션해 보세요.
  • 코드로 목표를 보내달라고 튜터에게 시켜보세요 — "이 세 지점을 계속 순찰해".

원리 → 학습하기: SLAM과 내비게이션

AI