Summary#
Robotics map에서 “HOME”을 단순한 generic waypoint 중 하나로 취급할지, 별도의 HOME node / startpoint / docking contract로 모델링할지는 return-to-home, docking, fleet UI, map versioning에서 중요한 아키텍처 경계다. 공개 문서 기준으로 ROS 2 Nav2는 waypoint following과 docking을 별도 기능으로 제공하며, docking은 단순 좌표 이동보다 “dock instance / dock type / detection / staging pose / docking pose” 같은 추가 의미를 가진다. REP-105도 map, odom, base_link 프레임의 성격과 drift / discontinuity를 구분한다. 따라서 HOME이 충전기, 대기 위치, 초기 pose, mission start, emergency return target 등 여러 의미를 겸할 경우, generic waypoint만으로는 UI-백엔드-로봇 실행계 사이의 semantic drift가 발생하기 쉽다.
안전한 계약은 HOME을 “이름 붙은 좌표”가 아니라 map version, frame, pose, heading, docking capability, fallback waypoint, validation status를 포함한 semantic map object로 다루는 것이다. 특히 docking/home-return resolution은 “HOME → dock object 또는 staging waypoint → final docking behavior”처럼 단계적으로 해석되어야 하며, map edit, dock relocation, coordinate-frame change, waypoint rename/delete가 발생할 때 링크 무결성 검사를 해야 한다.
Key Points#
- Dedicated HOME node와 generic waypoint는 계약 수준이 다르다.
- generic waypoint는 보통
pose또는 waypoint task 실행의 목적지에 가깝다. - HOME은 흔히 다음 의미를 동시에 가진다:
- 로봇의 기본 복귀 위치
- 충전 또는 docking 대상
- 운용 UI의 “return home” 버튼이 참조하는 대상
- 지도 로딩 후 초기 기준점 또는 start pose
- fleet scheduler가 idle robot을 보내는 위치
-
이 의미들이 분리되지 않으면 “HOME이라고 표시된 waypoint”와 “실제 docking 가능한 station”이 어긋날 수 있다.
-
Nav2의 waypoint following과 docking은 분리된 개념으로 보는 것이 안전하다.
- Nav2 Waypoint Follower는 여러 waypoint를 순차적으로 따라가는 기능을 제공한다.
- Nav2 Docking Server는 dock database, dock type, detection, staging pose, dock pose 등 docking에 특화된 정보를 다룬다.
- 따라서 return-to-home이 충전 docking을 의미한다면 단순 waypoint navigation 성공만으로 “home return complete”를 선언하면 안 된다.
-
더 안전한 상태 모델은 다음과 같다:
- resolve HOME semantic object
- resolve linked dock or fallback waypoint
- navigate to staging pose
- execute docking behavior
- verify docked / charging / final state
-
HOME resolution은 명시적이어야 한다.
- 권장 contract 예시:
home_idmap_idmap_versionframe_idposeyawrole:home,dock_home,idle_home,start_pose등dock_id또는dock_typestaging_posevalid_from_map_revisionlast_validated_atvalidation_status
-
UI에는 “HOME”으로 보이더라도 backend에서는 generic waypoint ID가 아니라 stable semantic ID를 참조하는 편이 drift에 강하다.
-
map-link drift가 핵심 failure mode다.
- 대표적인 drift:
- waypoint 이름은 HOME으로 남아 있지만 linked dock ID가 삭제됨
- dock pose는 갱신됐지만 UI의 HOME marker는 이전 좌표를 가리킴
- map image / occupancy grid가 재작성되었지만 HOME pose가 이전 map frame 기준으로 유지됨
mapframe과odomframe의 관계가 바뀌었는데 cached home pose를 재사용함- 충전기 위치를 옮겼지만 robot parameter 또는 docking database가 갱신되지 않음
- “start pose”와 “return home pose”가 같은 필드에 저장되어 운용 의미가 섞임
-
이런 drift는 로봇이 잘못된 위치로 복귀하거나, docking 직전 alignment 실패를 반복하거나, UI상으로는 HOME 도착처럼 보이지만 실제 충전 상태가 아닌 문제를 만든다.
-
REP-105 관점에서 frame contract를 고정해야 한다.
- REP-105는
mapframe이 장기적으로 전역적으로 일관되지만 discrete jump가 있을 수 있고,odomframe은 연속적이지만 drift할 수 있다고 설명한다. - HOME pose를 저장할 때
frame_id와 map revision 없이 단순(x, y, theta)만 저장하면, localization reset, map replacement, multi-floor map switching에서 잘못 해석될 수 있다. -
HOME / dock pose는 최소한
map_id + frame_id + revision에 묶어야 한다. -
검증은 편집 시점과 실행 시점 모두 필요하다.
- map editor 저장 시:
- HOME object가 정확히 하나인지 또는 robot/fleet별로 명확히 지정됐는지 확인
- linked dock이 존재하는지 확인
- dock pose와 staging pose가 traversable area에 있는지 확인
- heading이 docking plugin / physical charger 방향과 일치하는지 확인
- waypoint rename/delete 시 HOME reference가 깨지지 않는지 확인
-
runtime 실행 시:
- 현재 robot이 해당 map에 있는지 확인
- HOME의 map version과 현재 localization map이 호환되는지 확인
- docking target이 resolve되지 않으면 fallback policy를 명확히 적용
- navigation success와 docking success를 별도 상태로 기록
-
HOME을 generic waypoint로만 구현해도 되는 경우가 있다.
- HOME이 단순 대기 위치이고 docking, charging, start pose, emergency return 의미가 없다면 generic waypoint alias로 충분할 수 있다.
-
그러나 충전, 자동 docking, fleet idle placement, map editor UI, operator button이 연결되면 dedicated semantic object가 더 안전하다.
-
권장 failure handling
- HOME link가 깨진 경우:
- 자동으로 가장 가까운 waypoint로 대체하지 말고 operator-visible error를 낸다.
- dock object가 사라진 경우:
- docking return을 금지하고 non-docking staging waypoint까지만 허용할지 정책화한다.
- map revision mismatch:
- warning이 아니라 hard validation failure로 처리하는 편이 안전하다.
- navigation은 성공했지만 docking이 실패한 경우:
- “home reached”와 “docked/charging”을 분리해서 telemetry에 기록한다.
Cautions#
- 공개 문서들은 Nav2의 waypoint follower, docking server, ROS frame semantics를 설명하지만, “HOME node는 반드시 dedicated semantic object여야 한다”는 표준을 직접 규정하지는 않는다. 이 초안의 HOME-node contract는 공개 문서에서 확인되는 구성요소를 바탕으로 한 아키텍처 권고다.
- “HOME”, “start pose”, “dock”, “idle waypoint”의 용어는 vendor, fleet manager, map editor마다 다를 수 있다. 특정 제품의 내부 구현까지 일반화하면 안 된다.
- map-link drift failure mode는 공개 robotics 문서에서 자주 명시적으로 명명되는 패턴은 아니며, map versioning, frame semantics, docking database, waypoint management를 결합한 운영상 추론이다.
- Nav2 Docking Server의 세부 API와 파라미터는 배포판 및 버전에 따라 달라질 수 있다. 실제 capsule 작성 시 대상 ROS 2/Nav2 버전을 고정해야 한다.
- physical docking 성공 여부는 pose resolution만으로 보장되지 않는다. charger geometry, perception/detection plugin, contact sensor, charging telemetry, controller tuning이 별도로 필요하다.
Sources#
- https://docs.nav2.org/configuration/packages/configuring-waypoint-follower.html
- https://docs.nav2.org/configuration/packages/configuring-docking-server.html
- https://docs.nav2.org/tutorials/docs/using_docking.html
- https://www.ros.org/reps/rep-0105.html
- https://docs.ros.org/en/rolling/p/nav_msgs/msg/OccupancyGrid.html
Related#
- Core API Rate Limiting Contracts: RFC 9333 Headers, Quota Semantics, Distributed Counter Drift, and Retry-After Failure Modes
- Python Typing Narrowing Contracts: TypeGuard vs TypeIs, Overload Resolution, Annotated, PEP 695, and Pydantic Failure Modes
- Robotics Manual-Override Control Architecture: Emergency-Stop Precedence, cmd_vel Arbitration, Teleop Watchdog Timeouts, and Nav2 Handoff Failure Modes
Sagwan Revalidation 2026-07-17T14:51:13Z#
- verdict:
ok - note: Nav2/REP-105 근거와 HOME 계약 권장안은 현재도 유효함
Sagwan Revalidation 2026-07-19T15:36:44Z#
- verdict:
ok - note: Nav2/REP-105 구분과 HOME 의미 계약 권장은 여전히 유효함