Navigation¶
examples/navigation.ipynb는 로봇 청소기와 자율주행차가 돌리는 바로 그 파이프라인을
실행합니다: 돌아다니며 라이다로 지도를 만들고(SLAM), 그 지도에서 목적지를
클릭하면 차가 스스로 위치를 파악하고 경로를 계획해 찾아갑니다(Nav2). 학습도
GPU도 없는 순수 고전 로보틱스입니다. 실행 셀은 셸 셀(%%bash)로, 표준 ROS 2 스택 —
slam_toolbox, AMCL, Nav2 — 을 띄웁니다. PhysiCar의 Ackermann 조향에 맞춘 설정이
examples/assets/navigation/config/에 준비되어 있습니다.
노트북 구성¶
| 셀 | 하는 일 |
|---|---|
| 1. Build a map | slam_toolbox + RViz 시작 — 직접 몰면 지도가 자랍니다 |
| 2. Let it drive | 지도를 저장하고, SLAM을 AMCL 위치추정으로 교체하고, Nav2를 띄운 뒤(~30초) 목적지 클릭용 RViz를 다시 엽니다 |
| 2.2 Check the map | 저장된 my_map.png와 메타데이터 확인 |
| 3. Stop & tune | 전부 종료; 설정 파일 두 개의 튜닝 포인트 안내 |
실행¶
examples/navigation.ipynb를 열고 Python 3 (PhysiCar AI) 커널을 선택하세요.- 1번 셀을 실행한 뒤
app.physicar의 VNC 탭을 여세요 — RViz가 있습니다. 차를 몰고 다니면(CONTROL 탭이면 됩니다) 스캔마다 지도가 자랍니다. 같은 곳을 두 번 지나면(루프 클로저) 지도가 선명해집니다. - 전체를 다 돌았다면 2번 셀을 실행하세요 — 지도를
examples/assets/navigation/map/에 저장하고, SLAM을 내리고, AMCL과 Nav2 스택을 띄웁니다 — 약 30초. - RViz에서: 로봇 위치가 어긋나 있으면 2D Pose Estimate, 그다음 2D Goal Pose — 목적지를 클릭하세요. 출발합니다: 계획된 경로, 로컬 코스트맵, 그리고 달릴수록 조여드는 AMCL 파티클 구름을 지켜보세요.
지도 원점은 매핑을 시작한 지점입니다. 시뮬레이터에서는 1번 셀이 먼저 차를 스타트
라인으로 리셋하므로 원점이 항상 스타트 라인이고, 실물 키트에서는 실행 전에 원하는
원점에 차를 직접 놓으세요. 같은 노트북이 양쪽에서 돌아갑니다 — SIM은 자동
감지됩니다.
고쳐보기¶
전부 examples/assets/navigation/config/에 있습니다 — 수정 후 1–2번 셀을 다시
실행하세요:
resolution: 0.05(slam_params.yaml) — 지도 한 칸 5 cm. 촘촘할수록 매칭이 느려집니다.max_laser_range: 16.0— 스캔이 지도에 닿는 거리.nav2_params.yaml— 자율주행의 성격 전부: 코스트맵 인플레이션(벽을 얼마나 피하는지), MPPI 컨트롤러 가중치(얼마나 과감한지), 플래너와 AMCL 설정.
주의
- 순서가 중요합니다 — 저장된 지도가 없으면 2번 셀은 안내와 함께 종료됩니다. 1번 셀부터 실행하세요.
- 2번 셀은 SLAM을 멈춥니다 — 그 순간 저장된 지도가 최종본입니다. 믿기 전에 2.2번 셀에서 확인하세요.
- Nav2가 뜨는 데 약 30초 걸립니다 — 셀이 스택의 활성 보고를 기다렸다가 RViz를 엽니다.
- 지도를 새로 만들고 싶다면 1번 셀을 다시 실행하면 됩니다 — 이전 스택을 정리하고 시작합니다.
🛠 미션: 트랙 전체를 매핑한 뒤 차를 반대편 끝으로 보내며 파티클 구름이 조여드는 것을 지켜보세요 — 그다음 시뮬레이터 뷰어에서 장애물을 경로 위로 옮기고 로컬 코스트맵이 반응하는 것을 확인해 보세요.
더 알아보기
노드와 토픽 → ROS2 기초. TF·오도메트리·SLAM → 로봇 구조 & 센서. 전체 토픽/서비스 → ROS2 인터페이스 레퍼런스.