장소 이름과 지도 좌표는 다른 자료다
'실험실로 가서 파란 컵을 집어 와'라는 지시는 장소 탐색·주행과 객체 선택/팔 조작을 포함한다. 실험실이라는 이름만으로 로봇의 base 목표 pose가 정해지지는 않는다. 같은 이름의 방이 둘이거나 문이 닫혔을 수 있고, 방 한가운데까지 갔다고 작업대의 컵을 잡을 수 있는 위치라는 뜻도 아니다. 언어의 장소/물체를 현재 지도/관측 ID와 실행 가능한 목표에 연결한다.
기하 지도는 좌표/장애물 형상·점유 상태 등 공간 정보를 나타낸다. 위상 지도는 장소/구역을 노드, 이동 가능한 연결을 edge로 나타내는 그래프다. 의미 정보는 방/작업대·물체의 종류/이름과 '컵이 작업대 위에 있음' 같은 관계/속성을 붙인다. 이 층들은 연결되어야 하지만 같은 자료는 아니다. 라벨이 맞아도 경로가 막힐 수 있고, 빈 공간이 있어도 그곳이 지시한 장소인지 모를 수 있다.
VLMaps 저자 프로젝트는 영상/언어 feature와 공간 재구성을 연결해 언어로 지도 목표를 찾는 연구 사례다. 이는 이름을 문자열 표에 수동 등록하는 방식과 구현이 다르며, 유사도/검색 결과가 실제 목표의 현재 위치·이동 가능성을 보장하지 않는다. 이 단위는 최소 개념으로 장소 registry와 작은 그래프를 사용한다. 3D 매핑 알고리즘을 실행하거나 선수로 요구하지 않는다.
ID·관계와 기준 프레임을 명시한다
장소 registry에는 lab_A/lab_B처럼 고유 ID와 별칭, 지도 버전·좌표계와 유효 상태를 둔다. 같은 '실험실' 별칭이면 추가 조건/관측이나 명료화가 필요하다. 현재 장면의 cup_7과 table_A 같은 객체 ID도 클래스 이름과 구분한다. 물체가 이동하거나 추적이 끊겼을 때 과거 ID/좌표를 그대로 승인하지 않는다.
목표 pose는 위치와 방향이다. 이동 베이스의 도킹 pose, 팔의 TCP pose, 물체 pose를 분리한다. 지도 frame의 base 도킹 목표를 camera frame의 물체 좌표와 섞지 않는다. '오른쪽'도 지도/로봇/카메라 중 누구의 기준인지와 현재 방향이 필요하다. 같은 label을 가진 두 객체에서 임의로 하나를 선택하거나 텍스트 관계를 임의 m 단위 offset으로 바꾸지 않는다.
계획에는 장소 이동·재관측·파지처럼 서로 다른 skill과 전제/후조건을 둔다. SayPlan 저자 사례는 계층적 scene graph의 의미 검색과 경로 계획/반복 검증을 결합한다. 여기서도 언어 모델이 모든 작은 이동점을 직접 만들어야 한다고 가정하지 않고, 의미 목표와 기하 경로·실행 결과를 나누는 원칙을 적용한다. 원 논문의 과업 성과를 이번 합성 그래프에 전이했다고 쓰지 않는다.
언어가 고른 목적지라도 경로 조건을 먼저 적용한다
아래 합성 그래프의 S는 출발, T는 작업대 근처의 base 도킹 구역, J/K는 통로다. edge는 양방향이며 표에 없는 연결은 없고 길이는 m다. 문/폭은 이번 입력으로 정한 조건이다.
| 연결 | 길이(m) | 통로 폭(m) | 상태 |
|---|---|---|---|
| S–J | 2 | 0.8 | 열림 |
| J–T | 3 | 0.8 | 열림 |
| S–K | 1 | 1.0 | 열림 |
| K–T | 6 | 1.0 | 열림 |
| S–T | 4 | 1.2 | 문 닫힘 |
경로는 노드를 잇는 연결의 순서이고 여기의 비용은 거리 합만 사용한다. 닫힌 문을 통과할 별도 기능/허가가 없으므로 S–T는 후보에서 제외한다. 비운반 시 검사 폭을 0.6 m/좌우 추가 여유 각각 0.05 m로 주면 필요한 폭은 0.7 m다. S–J–T는 5 m, S–K–T는 7 m라 두 경로 중 짧은 것은 5 m다. 문이 닫힌 4 m를 최소라는 이유로 선택하지 않는다.
물체 운반 때문에 검사 폭이 0.8 m가 되면 같은 여유를 더해 0.9 m가 필요하다. 0.8 m 통로는 조건을 만족하지 않으므로 7 m 경로만 남는다. 비용을 계산하기 전에 가능한 edge를 정하는 이유다. 실제 로봇의 footprint/회전 중 형상·동적 장애물과 위치 오차는 더 복잡하다. 이 표의 폭/여유는 실제 안전 기준/통과 인증이 아니며 경로 길이 최소가 시간/위험 최소라는 뜻도 아니다.
도착 pose에는 위치와 방향이 함께 들어간다
Jazzy의 NavigateToPose action은 PoseStamped 목표와 진행/결과 정보를 갖는다. frame/시각이 있는 pose를 제공해야 하며 장소 문자열 자체가 이 메시지를 대신하지 않는다. 결과/허용 오차 의미는 사용하는 server/설정과 연결한다. 이 단위는 실제 goal을 보내지 않는다.
합성 map frame의 base 목표를(x,y,yaw)=(5,2,0), 단위 m/m/rad로 두자. 관측은(4.96,2.06,0.15)이고 위치 허용 0.1 m/방향 허용 0.1 rad라고 입력한다. 위치 오차는√((4.96−5)²+(2.06−2)²)=√0.0052≈0.0721 m로 통과하지만 방향은 0.15 rad라 초과다. 위치만 가깝다고 다음 팔 작업의 전제가 성립한 것은 아니다.
방향이 0.05 rad로 바뀌면 이 단순 기하 기준은 둘 다 통과한다. 그래도 관측의 취득 시각/불확실성과 실제 정지, 베이스/팔 장착·공구/물체의 상태/주변 scene을 확인해야 한다. 방향의 일반 비교는 원형 경계의 최단 차이를 써야 하며 이번 목표 0/작은 각도 예에서는 직접 차이를 사용했다. 공분산/정합이 미상인데 위치 오차만 정확하다고 단정하지 않는다.
주행에서 팔 동작으로 넘어가는 전제를 검사한다
언어 과업은 '대상 장소 결정→현재 상태/경로 확인→base 이동→도착/정지·재관측→컵/트레이 ID·TCP 목표/접근 검증→파지/유지→이송/배치→결과 확인'처럼 나눌 수 있다. 도킹 목표는 팔의 작업 범위/방향에 맞게 선정해야 하지만, 그 위치에 갔다는 사실만으로 실제 컵이 시연 위치에 있다는 뜻은 아니다. 이동 후 카메라/물체와 base/TCP의 관계를 새로 확인한다.
팔을 움직이는 동안 베이스가 계속 움직일 수 있는지 또는 정지 후 조작인지도 계약에 적는다. 이미 잡은 물체를 운반한다면 팔/그리퍼·물체가 차지하는 공간과 유지 상태를 주행 조건에 포함한다. navigation action 수락이나 최종 result는 해당 이동 목표의 결과이며 컵 파지/배치의 성공을 대신하지 않는다. 물체/지시·scene이 바뀌면 이전 계획을 새 상태에 재검증한다.
피드백이 누락되거나 문/통로 상태가 달라졌을 때는 결과를 미상/실패로 남기고 재관측·재계획/보류 정책을 적용한다. 실패 단계만 다시 수행해도 되는지와 현재 파지/위치 상태를 확인하지 않고 전체 언어 명령을 무조건 반복하지 않는다. 한 장소에서의 성공으로 다른 방/로봇의 경로/도킹·팔 조건을 승인할 수도 없다.
기존 4.3 TF와 기존 6.5 End-to-End 배포 계약을 연결해 프레임/시각·실행 결과를 더 확인하자. 아래 활동은 표/관측만 계산하며 지도 생성·실제 주행/팔 동작을 하지 않는다.