안녕하세요. 이번에 리뷰로 가져온 논문은 From Obstacles to Etiquette: Robot Social Navigation with VLM-Informed Path Selection이라는 논문입니다. 해당 논문의 핵심은 엄청 간단한데 플래닝 모듈이 여러 개의 collision free path를 먼저 생성한 다음 VLM을 통해서 후보 궤적중에서 사회적으로 가장 적절한 경로를 선택하는 social navigation을 가능하도록 했다라는 점이라고 보시면 좋을 것 같습니다. 그래서 이 논문에서는 이런 social context를 이해할 수 있는 별도의 모듈로 직접 설계하기보다는 VLM을 가지고 와서 Geometric Planning —> Candidate Paths 생성 —> VLM 기반 Social Path Selection 이라는 구조로 후보 경로들 중에서 어떤 경로가 현재 상황에서 사회적으로 가장 적절한지를 VLM이 판단하도록 구성합니다. 자세한 내용은 리뷰에서 설명드리도록 하겠습니다. 바로 리뷰 시작하도록 하겠습니다.
Introduction
최근 연구자들은 사회적으로 잘 움직일 수 있는 그런 내비게이션 연구를 많이 하는 것 같습니다. 실제로도 사람이 있는 공간에서 로봇이 움직이려면 단순히 collision-free하다는 조건만으로는 불안정 할 수 있다는 점에 대해서 다양한 연구에서 언급되고 있습니다. 기하학적인 정보도 중요하지만 해당 씬에 대한 의미론적인 이해가 필요하다라는 점을 다양한 논문에서 주장하고 있고 이런 의미론적인 이해를 VLM의 visual reasoning 능력을 통해 해결하고자 하는 연구들도 많이 등장하는 것 같습니다.

위 그림을 보시면 한쪽에서는 사람이 사진을 찍고 있고 다른 쪽에서는 사람이 사다리 위에서 작업하고 있습니다. 사실 위 fig에서 경로 3개를 보면 3개 경로 모두 obstacle collision이라는 관점에서는 충분히 이동 가능한 경로로 볼 수 있습니다. 근데 왼쪽으로 지나가면 사진을 찍고 있는 두 사람한테 방해가 될 수 있고 맨 오른쪽으로 지나가면 사다리 위에서 작업하고 있는 사람이랑 가까워지기 때문에 잠재적인 위험을 유발할 수 있습니다. 초록색 가운데 경로가 최적 경로 대비 살짝 돌아가더라도 사람들의 행동을 방해하지 않는 경로가 social navigation 관점에서는 더 적절한 경로라고 볼 수 있습니다. 그래서 저자들은 Collision-free Path ≠ Socially Compliant Path라고 주장합니다. 물론 기존 crowd navigation 연구들은 주로 사람의 미래 이동 궤적을 예측하거나 personal space를 정의해서 사람과의 충돌을 방지하는 방향으로 많이 연구되었습니다. 근데 이런 기존 방식들은 사람이 현재 무엇을 하고 있는지를 의미론적으로 이해하기 어려울 수 있다고 합니다. 예를 들어 두 사람이 서로 이야기하고 있는 상황인지, 위 그림처럼 사진을 찍고 있는상황인지 와 같은 정보는 단순한 사람의 위치 정보나 속도 정보만 가지고 판단하기 어려울 수 있기 때문입니다. 그래서 저자들은 이러한 부분을 VLM의 contextual reasoning 능력을 이용해서 해결하고자 합니다.
그렇다고 GPT-4o 같은 큰 모델에게 매 순간 현재 이미지를 보여주고 어디로 가야 할지를 계속 물어보면 latency가 너무 커서 실제 robot navigation에 사용하기는 어렵습니다. 논문에서도 LVLM을 반복적으로 query하는 방식은 리얼타임 navigation에 적합하지 않다는 문제를 지적합니다.
그래서 저자들은 VLM에게 직접 navigation action을 생성시키지 않고 path planner가 미리 생성한 몇 개의 candidate path 중 하나만 선택하도록 문제를 단순화하였고 GPT-4o의 social reasoning 결과를 이용해 작은 Qwen-2.5-VL 7B 모델을 파인튜닝하여 실제 inference에 사용합니다.
Method

위가 해당 논문 전체 파이프라인이라고 보시면 좋을 것 같습니다. 여기서 앞부분의 Human Motion Extraction부터 Path Planning까지는 현재 환경에서 실제로 주행 가능한 경로를 만드는 geometric planning 영역이고 Social-Compliance Selection에서는 앞에서 생성된 여러 path들을 이미지 위에 프로젝션한 다음 VLM이 현재 social context를 보고 가장 적절한 path를 선택합니다. 그리고 마지막 Local Reactive Controller가 선택된 path를 레퍼런스로 사용해서 실제 robot velocity를 생성합니다.
논문에서는 social navigation 문제를 수식적으로는 \arg\min_{\tau} \left(c(\tau), c_{\text{social}}(\tau)\right) 과 비슷한 multi-objective optimization 문제로 정의합니다.
여기서(c(\tau))는 path 길이나 obstacle collision처럼 기존 navigation에서 고려하는 geometric cost이고 (c_{\text{social}})은 사람의 활동을 방해하는지와 같은 social cost라고 보시면 좋을 것 같습니다. 근데 실제 구현에서는 이 두 cost를 하나의 복잡한 cost function으로 직접 optimization하지 않습니다. 대신dp geometric cost는 기존 planner를 이용해 먼저 처리하고 그렇게 만들어진 후보 path 집합 안에서 VLM이 social cost가 가장 작은 경로를 고르는 방식이라고 보시면 좋을 것 같습니다.
자세한 내용에 대해서는 이어서 설명드리도록 하겠습니다.
Human Motion Extraction
먼저 첫 번째 단계에서 진행하는 Human Motion Extraction는 주변 사람의 위치와 움직임을 추정하는 과정이라고 보시면 좋을 것 같습니다. 그리고 일단 해당 프레임워크에서는 기본적으로 센서는 RGB 카메라 센성랑 라이다 센서를 사용합니다.

먼저 YOLOv10으로 사람을 detection하고 ByteTrack을 이용해 사람을 트래킹합니다. 이때 최근 40 프레임의 track 정보를 저장한다고 합니다. 그리고 LiDAR 포인트 클라우드를 2D 이미지 평면으로 프로젝션해서 각각의 사람 바운딩 박스안에 들어오는 depth 정보를 얻습니다. 근데 바운딩 박스 안에는 사람 point뿐만 아니라 사람 뒤쪽에 있는 벽과 같은 다른 object point가 같이 들어올 수 있습니다. 그래서 저자들은 여기서 point들을 KMeans로 3개의 cluster로 나눈 다음 dominant한 cluster를 이용해 사람의 3D 위치를 추정했다고 합니다. 그리고 tracking된 결과와 로봇 odometry를 결합하여 사람의 위치를 global 좌표로 변환하는 과정을 진행합니다.
정리하면 해당 부분에서는 탐지된 사람이 지금 어느 위치에 있고 어느 방향으로 얼마나 빠르게 움직이고 있는가를 추정하는 것이라고 보시면 좋을 것 같습니다.
Prediction-Fused Costmap Generation
다음은 앞서 추정된 사람의 trajectory를 이용해 costmap을 만드는 과정입니다.

일반적인 내비게이션에서는 현재 LiDAR포인트 클라우드를 바닥으로 프러젝션하고 obstacle이 존재하는 위치를 occupancy grid 또는 costmap 형태로 표현하는데, 여기서는 현재 사람 위치만 사용하는 것이 아니라 앞으로 사람이 어디로 이동할지까지 prediction한 결과를 costmap에 반영합니다. 논문에서는 stochastic human trajectory prediction network를 사용하여 앞으로 2.4초 동안의 human trajectory를 prediction하고 20개의 trajectory sample을 생성했다고 합니다.
이렇게 prediction된 미래 위치들은 모두 동일하게 cost를 주는 것이 아니라 가까운 미래에는 높은 weight를 주고 먼 미래에는 낮은 weight를 주는식으로 이를 LiDAR 기반 obstacle map과 합쳐 최종 prediction-fused costmap을 생성했다고 합니다. 이렇게 하면 현재는 비어 있는 공간이라도 1~2초 뒤 사람이 지나갈 것으로 예상되는 공간에 대해서 미리 높은 cost를 줄 수 있게 됩니다.
Path Planning

그 다음은 실제 candidate path를 생성하는데 Path Planning 자체는 전통적인 A* algorithm을 기반으로 합니다. 근데 기본적인 A를 그대로 사용하면 문제가 하나 있는데 A는 기본적으로 가장 cost가 작은 하나의 path를 찾기 때문에 보통 목적지를 향한 가장 짧은 경로 하나만 나오게 됩니다. 근데 introduction에서 그림에서 예시로 설명했듯이 social navigation관점에서는 가장 효율적인 path가 항상 좋은 path가 아닙니다.
그래서 저자들은 start와 goal 사이에 여러 개의 anchor point를 만들어 candidate path를 다양하게 생성합니다.(맨 왼쪽 그림에서 초록점이 앵커 포인트임)
그레서 각 path는 Start —> Anchor —> Goal 형태로 A를 두 번 수행해서 만들어집니다. (start – Anchor에서 A 한번, Anchor – Goal goal 에서 A* 한번해서 총 두번)
Anchor point 들은 아무 위치에서 랜덤하게 샘플링되는 것이 아니라 obstacle에서 충분히 떨어진 영역 안에서 푸아송 디스크 샘플링 원칙을 기반으로 서로 어느 정도 떨어진 위치를 선택했다고 합니다. 이렇게 하면 왼쪽으로 우회하는 path, 오른쪽으로 우회하는 path, 비교적 직선으로 이동하는 path 등 여러 종류의 candidate를 얻을 수 있다고 합니다. 그리고 생성된 path가 너무 많으면 VLM이 선택하기 어려워지기 때문에 Hausdorff distance를 기준으로 비슷한 path끼리 클러스터링한 뒤 최종적으로 3~6개의 representative path를 남깁니다. 확실히 이런 전통 플래닝 알고리즘에는 수학적인 내용이 많이 들어가네요. 마지막으로 이 path들을 RGB 이미지 위에 프로젝션하고 번호를 붙여 VLM에게 입력하게 됩니다.
암튼 여기서 VLM의 역할은 현재 여기서 어디로 이동해야 할지에 대한 continuous trajectory를 직접 생성시키는 것이 아니라 1번, 2번, 3번 중 어떤 경로가 가장 적절한지 선택하는 역할을 한다고 보시면 됩니다.
그래서 geometry와 collision constraint는 기존 planner가 책임지고 VLM은 자기가 잘하는 semantic reasoning에만 집중하는 식의 그런 흐름이라고 보시면 좋을 것 같습니다.
Social-Compliance Selection

마지막으로 앞서 만든 후보경로들이 투영된 이미지들이 VLM 입력으로 들어가게 되고 여기서 모델은 크게 세 가지를 출력하게 됩니다.
첫 번째는 각 path에 대한 설명, 두 번째는 최종적으로 선택한 path, 마지막은 왜 해당 path를 선택했는지에 대한 reasoning입니다.
처음에는 GPT-4o를 사용하면 이런 reasoning을 충분히 수행할 수 있지만 실시간성 관점에서 계속 GPT-4o를 호출하기에는 inference latency가 너무 큽니다. 그래서 저자들은 GPT-4o가 생성한 social reasoning 결과를 이용하여 Qwen-2.5-VL 7B를 파인튜닝합니다.
파인튜닝 데이터는 기존 Social Navigation dataset인 SCAND를 이용해서 생성했다고 합니다.
SCAND frame마다 미래 6초 trajectory를 이용해 대략적인 goal direction을 추정하고, 약 13~14.5m 떨어진 위치에 goal을 설정하고 하고 그리고 앞에서 설명한 planner를 이용해 candidate path를 생성한 다음 GPT-4o에게 어떤 path가 social norm에 가장 적절한지를 선택하도록 하여 GT라벨을 생성했다고 합니다.
Local Reactive Controller
마지막은 실제 robot velocity를 생성하는 controller인데, 여기서 저자들은 기본적으로 ORCA알고리즘을 사용합니다. 그리고 앞에서 VLM이 선택한 path를 그대로 따라가는 것이 아니라 현재 candidate path 중 VLM이 선택했던 path와 가장 가까운 path를 계속 reference로 가져오고 실제 velocity control은 local controller가 high frequency로 수행하는 구조로 동작시킵니다. 보통 느린 VLM이 추론하는 동안에 로봇과 사람은 움직이기 때문에 이런 VLM을 활용하는 구조에서 이런 구조를 많이 사용하는 것 같습니다.
Experiments
실험은 4족 보행 로봇을 이용해서 실환경에서 평가합니다. 저자들은 social navigation에서 자주 발생할 수 있는 상황을 네 가지로 만들어 실험합니다.

첫 번째 Wiping glass-wall은 사람이 사다리 위에서 유리벽을 닦고 있는 상황으로 이 경우 로봇은 사람이 떨어질 수 있는 영역을 고려해서 크게 우회해야 하는 시나리오 입니다.
두 번째 Walking-talk은 두 사람이 걸어가면서 대화하고 있는 상황인데 로봇이 대화 중인 두 사람 사이로 들어가지 않아야 하는 시나리오 입니다.
세 번째 Photography는 한 사람이 다른 사람의 사진을 찍고 있는 상황으로 로봇이 두 사람의 line-of-sight를 가로막지 않아야 하는 시나리오 입니다.
마지막 Queuing은 사람들이 자판기 앞에서 줄을 서고 있는 상황이고 로봇은 사람들 사이로 새치기하지 않고 줄 바깥으로 이동해야 하는 시나리오로 보시면 됩니다.

위는 각 시나리오마다 3번씩 실험해서 평가한 결과입니다. 해당 실험에서는 단순히 Success Rate나 Navigation Time만 보는 것이 아니라 social behavior를 측정하기 위한 평가지표들을 같이 사용합니다.
Navigation Time(NT)은 말 그대로 목적지까지 도착하는 데 걸린 시간이고, Personal Space Violation(PSV)은 사람으로부터 0.25m 안으로 접근한 시간, Time Facing Pedestrians(TFP)은 로봇이 사람을 정면으로 바라보면서 가까이 있었던 시간이라고 보시면 좋을 것 같습니다.
그리고 논문에서 추가적으로 두 개의 평가지표를 정의합니다. Social-zone Interruption Time(SIT)은 로봇이 social zone 내부에 들어가 있었던 시간이고, Maximum Social-zone Interruption Ratio(Max. SIR)는 robot footprint가 social zone을 최대 어느 정도 침범했는지를 나타냅니다. Photography 상황을 예로 들면 photographer와 모델 사이 공간 자체를 social zone으로 정의하는 식인 것 같습니다.
전체적으로 제안하는 방법이 social-zone 관련 지표에서 좋은 결과를 보입니다. 근데 개인적으로 여기서 단순히 저자들의 방법론이 모든 메트릭에서 가장 좋다라는 것보다 기존 방법론들이 왜 실패했는지를 보는 것이 더 중요한 것 같습니다. VLM-Social-Nav는 현재 순간의 액샨을 VLM으로 scoring하는 방식인데 Walking-talk에서는 사람 앞에서 멈춰서 회전하면서 오히려 사람의 움직임을 방해하고, Queuing에서는 obstacle 앞에서 반복적으로 회전하다가 목적지에 도착하지 못하는 경우를 보였다고 합니다. 그리고 ViNT 같은 경우에는 SCAND를 포함한 social navigation dataset으로 학습되어 있음에도 불구하고 상당히 자주 straight-line 형태로 goal을 향해 이동하면서 social zone을 침범하는 모습을 보였다고 합니다. 그래서 결국 이 실험에서 저자들이 주장하고 싶은 것은 social navigation을 단순 collision avoidance나 group detection, 현재 순간 action에 대한 scoring문제로 정의하기보다 현재 사람이 무엇을 하고 있는지를 context level에서 이해해야 한다라는 것을 의미하는 것 같습니다. 저자의 방법론 측면에서 말하면 후보궤적들을 이미지에 그려서 VLM에게 context level에서 이해하도록 해야한다 인거 같습니다.

위 Fig 8에서는 네 scenario의 social violation 비율을 전체적으로 비교하는데 저자들의 방법론이 모든 지표에서 가장 낮은 수준을 보입니다.

먼저 저자들은 long-horizon path를 VLM에게 보여주는 것이 실제로 중요한지를 확인하기 위해서 어블레이션을 진행합니다. 저자들은 전체 path를 보여주는 대신 로봇 앞의 약 1.2m 정도의 짧은 path만 보여주고 방향을 선택하도록 만듭니다. 그 결과 기존 다른 방법론인 VLM-Social-Nav가 선택했던 순간적인 action과 거의 동일한 선택을 하게 됩니다. 어덯게 보면 VLM 자체가 완전히 다른 reasoning을 한다기보다는 VLM에게 얼마나 긴 미래 trajectory를 보여주는지가 행동 차이를 만드는 중요한 요소라고 볼 수 있을 것 같습니다.
그리고 사람 trajectory prediction horizon에 대한 ablation도 진행합니다. Prediction horizon이 최종적으로 2.4초까지 prediction하면 8.89%까지 감소하는 결과를 보입니다. 이 결과를 보면 VLM이 social reasoning을 하기 이전에 path planner가 미래 사람 움직임을 고려해서 candidate path 자체를 길게 잘 만들어 주는 것도 중요하다는 것을 보입니다. 암튼 VLM이 만능은 아니니 VLM이 잘 이해할 수 있도록 앞단에서 Path 후보들을 잘 정의해서 줘야하는것도 중요하다라는 것을 보이는 실험인거 같습니다.
VLM에게 Path를 직접 생성시키면?
실제 논문을 읽으면서도 이 부분에 대해서도 궁금했고 실제로 해당 실험에 대해서 Appendix에 실험결과가 리포팅 되어있었습니다.

위는 VLM Direct Path Generation vs Proposed Path Selection를 나타낸 그림이라고 보시면 됩니다. 초록색이랑 파란색은 무슨 차이인지 자세하게 언급되어있지는 않은데 그냥 빨강 vs 초록파랑 으로 보셔도 무방하실 것 같습니다. 암튼 결과적으로 VLM이 직접 생성한 path는 대부분 goal 방향을 향한 직선 형태로 나오고 obstacle avoidance나 social constraint를 충분히 반영하지 못하는 결과를 보였다고 합니다. VLM은 이미지 semantic 한 이해나 commonsense reasoning에는 강하지만 정확한 geometric trajectory 생성까지 잘한다고 보기 어렵다라는 것을 보여주는 결과인 것 같습니다.
Human Study
저자들은 이 시스템을 만들기 전에 VLM이 사람과 비슷한 social path preference를 가질 수 있는지 확인하기 위한 human study도 진행했다고 합니다.
총 54명의 참가자에게 하나의 scene과 전문가가 생성한 3~4개의 feasible path를 보여주고 본인이 일상적으로 걸어갈 것 같은 path를 선택하도록 합니다. 그리고 동일한 scene에 대해 VLM도 여러 번 query하여 결과를 비교합니다.


결과적으로 VLM의 Top-2 선택이 대부분의 시나리오에서 사람들이 많이 선택한 주요 path와 상당 부분 일치했다고 합니다. 물론 social behavior 자체가 사람마다 다르기 때문에 항상 하나의 정답이 존재한다고 볼 수는 없지만 적어도 VLM을 feasible path들 사이에서 semantic evaluator로 사용할 가능성은 있다는 결과로 이해하시면 좋을 것 같습니다.
Conclusion
현재 evaluation scenario가 네 종류로 제한적이고 VLM 자체도 현재 frame 하나만 보기 때문에 장기적인 social context를 이해하지 못한다는 한계가 있기 때문에 현 시점에서 완전히 일반적인 social navigation을 해결했다고 보기보다는 기존 geometric navigation 파이프라인 위에 VLM의 commonsense한 social reasoning을 이렇게 활용할 수 있다 정도를 보여준 논문인 거 같습니다. 특히 요즘 VLM을 navigation에 사용하는 연구들이 많아지고 있는데,무조건 VLM에게 end to end로 action을 생성시키는 것이 아니라 VLM은 high level의 의미론적 이해에 사용하고 실제 geometry와 control에 대해서는 기존 빠른 모듈에 맡기는 구조가 실제 로봇 시스템에서 현실적인 방향이지 않을까하는 생각이 듭니다.
이만 리뷰 마치도록 하겠습니다. 감사합니다.
안녕하세요 우현님 좋은 리뷰감사합니다
최근 우현님 연구 동향이 safety로 본격적으로 치우치게 되는 것 같습니다 . ㅎㅎ
궁금한 것이 한가지있는데 vlm을 계속해서 한프레임 씩받으면 실시간 구동률이 떨어지기 때문에 어떻게 보면 비디오 프레임으로 받으면서 하는게 더 효율적이지않나요 ? 한프레임 받는게 큰 제한처럼 보이는데 어떤가요?
감사합니다