Devin.KR

장애물 지도와 경로 계획

로봇 크기를 반영한 격자 탐색 경로를 만들고 제어기로 추종합니다.

진도 0%

레슨

  1. 격자와 로봇 반경

    0.1m 해상도 지도에서 반경 0.15m와 여유 0.05m로 장애물을 팽창합니다.

  2. 큐·방문 집합과 BFS

    4방향 격자에서 최단 경로와 경로 없음 결과를 계산합니다.

  3. 경로 점과 속도 제한

    격자 중심을 map 좌표로 변환하고 회전 구간의 속도 제한을 계산합니다.

  4. 경로 추종과 충돌 확인

    각 경로 점을 목표 제어기에 연결하고 이동 구간 전체의 충돌을 검사합니다.

장애물 지도와 경로 계획 미션

m06-motion-control 미션 solution 전체를 포함한 starter에서 NavigationActions를 확장합니다. 기존 액션·목표점 제어·C HAL 코드는 보존하고 planning.py의 부모 연결과 이동 구간 검사 TODO를 완성합니다.

요구사항

  • 지도→팽창→BFS→경로 점→m06 제어의 파이프라인을 추가합니다.
  • 시작과 목표가 막힌 경우·경로가 없는 경우에 액션을 실패로 끝내고 정지합니다.
  • 점 위치만이 아니라 이전 자세와 새 자세 사이 이동 구간도 로봇 원형 몸체 기준으로 충돌 검사합니다.
  • planning_config.json의 해상도 0.1m·몸체 반경 0.15m·계획 여유 0.05m·경유점 반경 0.025m·원점 (-0.35,-0.35)m·직선/코너 상한 0.30/0.10m/s를 설명합니다.
  • 상수 명령 원호와 현의 차이 상한 |v·w|·dt²/8을 몸체 반경에 추가하여 HAL 이동 전에 검사하고 실제 이동 로그를 재확인합니다.
  • 종점 0 속도 표식과 접근 명령을 구별하며 취소·HAL 결함·60초 시간 초과를 정지로 종료합니다.

완료 기준

  • 열린 지도·우회 지도에서 60초 이내 도달하고 충돌 횟수가 0입니다.
  • 막힌 목표와 좁은 통로 fixture에서 PATH_NOT_FOUND와 정지를 확인합니다.
  • 같은 지도와 이웃 탐색 순서로 재실행하면 경로 셀 목록이 같습니다.
  • bash check.sh 한 줄로 이전 회귀·새 경로 테스트 24개·네 fixture가 실행되며 starter는 AssertionError로 실패하고 solution은 전부 통과합니다.
  • 끝점 둘은 안전하지만 중간에 장애물을 관통하는 선분과 접선 접촉을 충돌로 검출합니다.
  • 사전 충돌 위험 차단은 prevented_segments에, 실제 기록 구간 검사의 충돌 수는 collisions에 구분해 보고합니다.
bash check.sh
미션 시작 코드
모범 답안모범 답안 내려받기

검토 기준

  • 입력·단위·실패 조건과 변경 이유를 설명합니다.
  • 이전 모듈의 회귀 테스트와 이번 실험 근거를 함께 제출합니다.