01-30 22:54
Notice
Recent Posts
Recent Comments
관리 메뉴

BAN2ARU

[Humble/Nav2] 튜토리얼 3. Navigation Concepts - 3) Navigation Servers 본문

Study/Nav2

[Humble/Nav2] 튜토리얼 3. Navigation Concepts - 3) Navigation Servers

밴나루 2024. 10. 3. 17:17
반응형

해당 글은 공식페이지를 참조하여 작성함.

 

이전 글 목록

Navigation Servers

플래너(Planner)와 컨트롤러(Controller)는 navigation 작업의 핵심이다. 복구(Recovery)는 로봇이 잘못된 상황에 빠졌을 때 이를 해결하거나 다양한 문제를 처리하여 시스템이 오류에 강하도록 만들어 준다. 스무더(Smoother)는 계획된 경로의 품질을 추가로 개선하는 데 사용될 수 있다.

Planner, Controller, Smoother and Recovery Servers

내비게이션 서버는 Nav2 프로젝트에서 중요한 역할을 한다. 이 프로젝트에는 네 가지의 액션 서버를 활용하는데 이는 **플래너(Planner), 컨트롤러(Controller), 스무더(Smoother), 복구서버(Recovery)**로 로봇이 경로를 계획하고 장애물 회피 등을 수행하며, 문제가 발생했을 때 복구하는 기능을 제공한다. 이들에 대한 핵심 개념은 아래와 같다.

  1. 플러그인(plugin) 방식의 서버 : 플래너, 스무더, 컨트롤러 서버는 여러가지의 알고리즘을 실행할 수 있는 플랫폼임. 이 서버들은 어떤 알고리즘을 사용할 지 런타임에 구성할 수 있으며, 이를 통해 다양한 알고리즘을 유연하게 사용할 수 있음. 알고리즘 이름(별칭)과 유형은 플러그인 라이브러리(pluginlib)에 등록되어 있음. 예를 들어, DWB Controller라는 알고리즘을 FollowPath라는 이름으로 사용할 수 있다. 이러한 구조는 다양한 알고리즘을 플러그인으로 관리하면서, 이름(별칭)으로 각 작업을 실행할 수 있게 함. 따라서 사용자는 행동 트리(behavior tree)에서 어떤 알고리즘을 사용하든지, 그 알고리즘의 내부 구현을 모르더라도 이름을 통해서 쉽게 접근할 수 있음.
  2. 환경 표현 객체 공유 : 플래너, 스무더, 컨트롤러 서버는 로봇이 탐색할 환경 정보를 공유함. 이를 통해 costmap과 같은 환경 표현 객체를 중복 생성하지 않고, 한 번만 만들어 여러 서버에서 사용할 수 있음. 이로 인해 메모리 사용량과 계산 비용이 줄어들고, 효율적인 시스템 운영이 가능함.
  3. 행동 트리(Behavior Tree;BT)와의 연동: 행동 트리는 각 작업의 플러그인 알고리즘을 추상화하여 다양한 알고리즘을 사용할 수 있도록 함. 예를 들어, 경로 따르기(Follow Path), 충전기에 도킹하기, 장애물 회피 등 여러 작업을 하나의 행동 트리 내에서 구성할 수 있음. 행동 트리는 로봇의 복잡한 동작을 구조화하는 방법 중 하나임. 각 행동 트리 노드가 틱(Tick)할 때, 해당 작업을 처리하기 위해 적절한 액션 서버를 호출함. 서버 내 액션 서버 콜백은 지정된 알고리즘 이름을 호출하고, 이는 특정 알고리즘과 mapping됨
  4. 행동 서버 : 행동 서버는 특정 행동을 처리하는데 사용되며, 각 행동은 독립적인 액션 서버로 실행됨. 이는 다양한 행동 작업이 생성될 수 있기 때문에, 하나의 단일 인터페이스로 처리하기 어렵기 때문임. 또한, 행동 서버는 실시간으로 local costmap의 업데이트를 subscribe하여 이를 기반으로 작업을 처리함. 이를 통해 local costmap을 여러번 생성하는 비효율성을 피할 수 있음. 자세하게 설명하자면 로봇 시스템에서 여러 서버나 노드가 동시에 costmap을 사용한다면, 각 서버가 개별적으로 costmap을 생성하는 대신 하나의 costmap을 공유하여 처리하는 것이 효율적임.

Planners

플래너(planner)는 로봇이나 자율주행 시스템에서 경로를 계산하는 역할을 한다. 경로는 “어디에서 어디로” 이동할지, 또는 “어떻게 목표를 달성할지”에 대한 명확한 지침을 제공한다. 이 경로는 다양한 목적에 맞춰 설계될 수 있다.

플래너(planner)가 하는 작업은 크게 세 가지로 나눌 수 있다.

  1. 최단 경로 계산 (Shortest Path Planning) : 로봇이 목표 지점에 도달하기 위하여 가장 짧은 거리나 최적의 경로를 계산하는 방식임. 예를 들어, 로봇이 특정 지점에서 다른 지점으로 이동해야 할 때, 가장 적은 에너지나 시간을 소비하는 경로를 찾는 것이 목적임
  2. 완전 커버리지 경로 계산 (Complete Coverage Path Planning) : 로봇이 전체 공간을 빠짐없이 이동해야 하는 경우를 의미함. 예를 들어, 청소 로봇이 방 안의 모든 부분을 다 청소해야 할 때, 어떻게 움직여야 모든 공간을 커버할 수 있을지 계획함. 이 방식은 단순히 목표 지점에 도달하는 것이 아니라, 주어진 공간을 빠짐없이 탐색하는 것이 중요함
  3. 희소한 경로 또는 사전 정의된 경로를 따른 경로 계산 (Sparse or Predefined Route Planning) : 이미 정해진 경로나 희소한 경로를 따라갈 때 사용하는 방식임. 예를 들어, 물류 로봇이 물건을 나를 때 정해진 경로를 반복적으로 따라가야 할 경우, 미리 정의된 경로를 따르는 방법이 유용함. 이 경우 로봇은 복잡한 계산을 할 필요 없이 주어진 경로만 잘 따라가면 됨

Planner가 경로 계산 시 사용하는 데이터

플래너(planner)가 경로를 계산할 때는 환경 정보와 센서 데이터를 사용한다. 이는 로봇이 주변 환경을 인식할 수 있도록 도와주는 정보들인데, 예를 들어 로봇 주행 경로에 장애물이 있는지, 길이 막혀 있는지 등 주어진 목표 지점까지 가는길이 어떤 상태인지 파악하는 데 도움을 준다.

  • 환경 정보 : 플래너(planner)는 주어진 환경의 전역 정보(지도처럼 전체 공간의 구조)를 알고 있어야 함. 이 전역 정보는 로봇이 어디로 가야 할지, 어떻게 갈 수 있을지를 판단하는 데 중요한 역할을 함
  • 센서 데이터 : 로봇에 장착된 센서들이 실시간으로 데이터를 수집함. 예를 들어 카메라, 레이더, 라이다와 같은 센서들이 주변 장애물이나 상황을 실시간으로 인식해 줌. 이 정보를 플래너(planner)가 이용하여 경로를 수정하거나 최적화할 수 있음

Nav2에서의 planner 역할

Nav2는 로봇 네비게이션을 관리하는 소프트웨어 시스템이다. 여기에서 플래너는 로봇이 주어진 목표를 달성할 수 있도록 유효한 경로를 계산하는 핵심 역할을 한다. 유효한 경로란 로봇이 장애물에 부딪히지 않고, 목표에 도달할 수 있는 경로를 의미한다.

  • 최적 경로란 로봇이 목표에 가장 효율적으로 도달하는 경로임. 여기에는 거리, 시간, 에너지 소모 등이 고려됨
  • Nav2는 다양한 종류의 경로를 지원하기 때문에, 로봇이 목적에 따라 최단 경로를 선택할 수도 있고, 전체 공간을 커버하는 경로를 선택할 수도 있음

Controllers

컨트롤러(controller)는 로봇이 전역 경로(global path)를 따라갈 수 있도록 제어 명령을 계산하는 소프트 웨어 구성 요소로, 일종의 로컬 플래너로 볼 수 있다. 예를 들어, 로봇이 목표 지점까지 이동할 때, 전역적으로는 큰 그림의 경로가 이미 계획되어 있지만, 로봇이 실시간으로 움직이기 위해서는 지역적인 환경 정보에 기반하여 세부적인 움직임을 결정해야 한다. 이 세부적인 움직임을 계산하는 것이 컨트롤러(controller)의 역할이다.

컨트롤러(controller)는 다양한 상황에서 로봇을 제어하는데 사용되며, 주요 작업은 아래와 같다.

  • 경로 따라가기(Follow a path) : 로봇이 전역적으로 계산된 경로를 따라 이동할 수 있도록 유효한 제어 명령을 생성함. 전역 경로는 전체적인 방향과 목표를 제시하지만, 실시간 환경에서는 장애물이나 동적인 변화가 발생할 수 있음. 이 때 컨트롤러(controller)는 그 장애물을 회피하면서 계속 경로를 따라가는 명령을 계산함
  • 충전 스테이션 도킹 (Docking with a charging station) : 로봇이 충전 스테이션과 정확하게 도킹하기 위해 오도메트릭 프레임(odometric frame)에서 감지된 데이터를 사용함. 오도메트릭 프레임이란 로봇의 이동과 회전을 바탕으로 계산된 위치 정보를 의미함. 이 정보를 바탕으로 컨트롤러는 로봇이 충전 스테이션에 접근하고 정확한 위치에 도킹할 수 있도록 세밀한 제어 명령을 계산함
  • 엘리베이터 탑승 (Boarding an elevator) : 엘리베이터에 탑승하는 과정은 복잡한 제어가 필요함. 엘리베이터 문이 열리고 로봇이 안전하게 탑승하고 정해진 위치에 서는 것까지, 컨트롤러는 이 모든 동작을 실시간으로 계산하여 로봇이 정확하게 탑승할 수 있도록 도와줌
  • 도구와의 상호작용 (Interface with a tool) :특정 작업을 위해 도구와 상호작용할 때도 컨트롤러가 제어 명령을 생성함. 예를 들어 로봇 팔이 특정 물체를 들어 올리거나, 특정 도구를 사용하여 작업을 수행할 때, 컨트롤러는 도구와의 상호작용이 원할히 이루어지도록 세밀하게 제어함

Nav2에서의 controller 역할

Nav2는 ROS 2에서 제공되는 네비게이션 시스템이며, 다양한 controller 알고리즘을 지원한다. 컨트롤러 서버는 이러한 다양한 컨트롤러 알고리즘을 플러그인 형태로 통합하여 사용할 수 있도록 해준다.

  • 플러그인 시스템: 여러 종류의 컨트롤러 알고리즘을 플러그인 형태로 추가하여 필요에 맞게 사용할 수 있음. 연구 환경이나 산업 환경에서 특정 작업에 맞는 컨트롤러를 선택하여 로봇에게 적합한 제어 명령을 계산할 수 있게 함
  • 공통의 자원 사용: 여러 컨트롤러가 공통의 리소스(예: 코스트맵, TF 버퍼)를 공유하여 효율적으로 작업할 수 있음. 이를 통해 여러 개의 컨트롤러가 동일한 환경 정보를 사용하면서도 각자의 작업에 맞게 최적화된 제어 명령을 생성할 수 있음

Behaviors

복구 행동(Recovery behaviors)로봇 시스템에서 예상치 못한 오류나 문제가 발생했을 때, 이를 자율적으로 해결하기 위한 행동을 의미한다. 이러한 행동들은 시스템이 계속해서 안정적으로 작동할 수 있도록 도와주는 중요한 요소이다. 로봇 시스템에서 복구 행동은 문제가 발생했을 때, 이를 탐지하고 시스템이 스스로 문제를 해결하거나 최소한 문제를 완화하는 방식으로 동작한다. 복구 행동(Recovery behaviors)은 특히 결함 허용 시스템(fault-tolerant systems)에서 핵심적인 역할을 한다. 결함 허용 시스템은 하나의 부품이나 소프트웨어에 문제가 생겨도 시스템 전체가 완전히 멈추지 않고, 자율적으로 문제를 해결해 계속 작동할 수 있도록 설계된 시스템이다.

예시

복구 행동(Recovery behaviors)은 아래와 같이 작동한다.

  1. 환경 인식 시스템(perception system)의 오류 - 가짜 장애물 문제 : 로봇은 환경 인식 시스템(Perception system)을 통해 주변 환경을 인식하고, 장애물이나 경로 등을 파악함. 하지만 때때로 센서나 시스템 오류로 인해 잘못된 데이터를 기반으로 환경을 인식할 수 있음. 예를 들어, 로봇이 장애물이 없는 곳에도 가짜 장애물이 있다고 인식하여 더 이상 움직일 수 없는 상황이 발생할 수 있음. 이 때 복구 행동 중 하나인 clear costmap 복구가 실행됨. 코스트맵(costmap)은 로봇이 주변 환경에서 장애물을 인식하고 회피하기 위해 사용되는 지도임. 만약 이 코스트맵에 잘못된 장애물 정보가 포함되면, 로봇이 이동하지 못하게 됨. Clear costmap 복구는 코스트맵에 저장된 잘못된 장애물 정보를 지워주고, 로봇이 정상적으로 이동할 수 있도록 도움. 
  2. 동적 장애물이나 제어 문제로 인해 로봇이 멈춘 경우 : 때때로 로봇이 동적 장애물(사람, 다른 로봇 등) 때문에 멈추거나, 제어 문제로 인해 이동하지 못할 때가 있음. 이 경우에는 로봇이 스스로 상황을 해결하기 위한 다양한 복구 행동을 실행할 수 있음.
    • 후진 또는 제자리 회전 : 로봇이 현재 위치에서 더 이상 나아갈 수 없을 때, 복구 행동(Recovery behaviors)으로 후진하거나 제자리에서 회전을 시도할 수 있음. 이러한 동작을 통해 로봇은 더 이상 움직일 수 없는 위치에서 벗어나, 다른 경로를 찾아 이동할 수 있음.
  3. 시스템이 완전히 멈춘 경우 - 운영자에게 도움 요청 : 가끔 로봇이 스스로 해결할 수 없는 상황에 직면할 수 있음. 이런 경우에는 복구 행동(Recovery behaviors)이 실행되어 운영자에게 도움을 요청함. 이는 다양한 방식(이메일, Slack과 같은 협업 도구 등)으로 전달될 수 있음

복구 행동(Recovery behaviors)을 위한 자원 관리 : 행동 서버(Behavior Server)

복구 행동(Recovery behaviors)는 단독으로 작동하는 것이 아니라, 행동 서버(Behavior Server)에서 관리된다. 이 서버는 단순히 Recovery behaviors만 관리하는 것이 아니라, 다양한 비용이 많이 드는 리소스를 공유할 수 있다. 예를 들어, 코스트맵(costmap)이나 TF 버퍼는 많은 계산 자원이 필요하지만, 이러한 자원을 효율적으로 관리하기 위해 행동 서버에서 공유할 수 있다.

Smoothers

스무더(Smoothers)는 로봇이 경로를 따라가는 과정에서 경로의 품질을 향상시키기 위한 도구이다. 플래너(Planner)가 계산한 경로는 보통 최적화 기준이 단순화되어 있기 때문에, 실제 환경에서는 경로를 부드럽게 만들거나 안전하게 다듬는 것이 필요할 수 있다. 이러한 이유로, smoothers는 경로의 불규칙성을 줄이고, 급격한 회전을 부드럽게 만드는 역할을 한다. 또한 로봇이 장애물이나 이동에 불리한 지역보다 안전하게 주행할 수 있도록 경로를 수정할 수 있다. Smoother는 전역(global) 환경 정보를 이용하여 이러한 작업을 수행한다.

스무더(Smoothers)는 경로의 품질을 향상시키기 위해 다음과 같은 작업을 수행한다.

  1. 경로의 울퉁불퉁함 제거 : Planner가 계산한 경로는 가끔 불규칙적이거나 울퉁불퉁할 수 있음. Smoother는 이러한 경로를 다듬어 로봇이 더 부드럽게 움직일 수 있도록 만듦. 급격한 회전이나 불필요하게 복잡한 경로를 완화하여 로봇이 효율적으로 이동할 수 있도록 도움
  2. 급격한 회전 부드럽게 처리 : 경로에서 로봇이 갑자기 급격하게 회전해야 하는 부분이 있는 경우, smoother는 이러한 부분을 부드럽게 처리하여 로봇이 자연스럽게 방향을 바꿀 수 있도록 함. 급격한 회전은 로봇의 동작을 비효율적으로 만들 수 있기 때문에, 이를 부드럽게 하는 것이 중요함
  3. 장애물 및 위험 구역으로부터 안전거리 확보 : Smoother는 로봇이 장애물이나 위험 구역으로부터 안전한 거리를 유지할 수 있도록 경로를 조정함. 위험 구역은 로봇이 이동할 때 더 많은 에너지가 필요하거나 사고의 위험이 높은 지역을 의미함. Smoother는 경로를 최적화하여 로봇이 이러한 위험 지역을 피하고 안전하게 이동할 수 있도록 도와줌

Smoother와 Planner를 분리해서 사용해야하는 이유

  1. 역할 분담 : planner는 일반적으로 전체 경로를 계산하는 역할을 하며 경로 생성에 중점을 둠. smoother는 경로 개선에 집중하여 planner가 생성한 경로 중 매끄럽지 않거나 수정이 필요한 경우 효율적으로 수정할 수 있음. 즉, planner는 큰 그림의 경로를 계획하고 smoother는 그 경로를 개선하는 방식으로 활용할 수 있음
  2. 효율성 향상 : 경로 계획은 planner만 활용하는 경우, 경로를 수정하거나 다듬기 위해서는 매번 전체 경로를 다시 계산해야하므로 비효율적임. planner가 생성한 경로는 그대로 사용하되, 필요한 경우에만 smoother로 경로를 세밀하게 수정하는 방식이 효율적
  3. 독립적 조합 가능 : planner와 smoother를 분리하면, 서로 다른 planner와 smoother를 독립적으로 조합할 수 있음. 예를 들어, 장애물 근처에서만 특별한 smoother를 사용하여 안전한 경로로 수정할 수 있어 다양한 상황에 맞는 조합이 가능함

Robot Footprints

로봇이 이동할 때, 주변 장애물을 피하기 위해서는 로봇의 크기와 모양을 코스트맵(costmap)에 반영해야하는데, 이 때 로봇의 발자국(Robot footprints)라는 개념이 등장한다. Robot footprint는 로봇이 얼마나 큰지, 그리고 어떤 모양인지 나타내는 것이다.

원형 로봇의 경우, footprints는 반지름을 사용하여 원으로 설정한다. 이 원은 로봇이 이동할 때 costmap에서 장애물을 피하는데 사용된다. 예를 들어, 로봇 청소기처럼 원형인 로봇은 반지름을 기준으로 원형 footprints를 그려서 로봇이 안전하게 장애물을 피해 이동할 수 있도록 한다.

비원형 로봇의 경우, footprints는 다각형으로 정의된다. 다각형은 로봇의 실제 모양을 더 잘 반영하는 방식으로, 만약 네모난 로봇이나 로봇 팔이 달린 복잡한 형태의 로봇인 경우 여러 점을 연결하여 다각형 모양을 만든다. 이 다각형은 로봇이 어느 부분까지 차지하는지를 명확히 나타내기 때문에, 복잡한 호나경에서 장애물을 피하는데 더 유용하다.

로봇의 footprints는 실시간으로 변경될 수 있다. 예를 들어, 로봇에 팔이 달려 있을 때 팔이 움직이거나, 팔레트를 들어올리면서 모양이 변하는 상황이 발생할 경우, 로봇의 footprints도 그에 맞게 업데이트 되어야 한다. 이를 위해 ~/footprint라는 토픽을 사용하여 로봇의 모양이 변할 때마다 footprint를 업데이트할 수 있다.

로봇의 footprint가 변경되면, 로봇의 경로를 계획하는 플래너(planner)로봇을 제어하는 컨트롤러(controller)는 자동으로 이 정보를 사용한다. 즉, 로봇의 모양이 변하면 경로를 새롭게 계산하거나 제어하는 방식도 그에 맞춰 변하게 된다.

Waypoint Following

Waypoint following여러 목적지(waypoint)를 차례로 방문할 수 있도록 하는 네비게이션 기능이다. 로봇은 각 waypoint에 도착할 때마다 특정 작업을 수행할 수 있다. 예를 들어, 지정된 위치에서 상자를 집거나, 사진을 찍는 등의 작업을 수행할 수 있다.

nav2_waypoint_follower는 waypoint following을 구현한 Nav2의 패키지이다. 이 패키지는 플러그인 인터페이스를 제공하여, 특정 작업(상자 집기, 사용자 입력 대기 등)을 waypoint에 도착한 후 자동으로 실행할 수 있게 한다. 이는 로봇이 단순히 한 장소에서 다른 장소로 이동하는 것 뿐만 아니라, 주어진 작업을 효율적으로 완료할 수 있도록 해준다.

Waypoint following은 두 가지의 주요 방식이 있다. 이 방식들은 fleet manager나 dispatcher가 어떻게 설계되는지에 따라 다르다. fleetmanager는 여러 대의 로봇을 중앙에서 관리하는 시스템을 의미하며, dipatcher는 작업을 로봇에 할당하는 시스템을 의미한다.

  1. Dumb Robot; smart centralized dispatcher : 이 방식에서는 로봇이 수행할 작업은 상대적으로 단순하고, 중앙에서 모든 복잡한 작업을 처리함. 로봇은 waypoint로 이동하여 주어진 작업만 완료하면 되고, 그 외의 복잡한 결정(로봇 상태 확인, 다음 작업 할당 등)은 중앙 dispatcher가 담당함
    • 예시 : 중앙 dispatcher는 창고에서 모든 로봇의 상태를 파악하고, 로봇에게 작업을 할당하는 시스템으로, 로봇 A는 선반에서 물건을 가져오고, 로봇 B는 다른 위치로 물건을 옮겨라와 같은 명령을 내리며, 로봇은 이 명령을 그대로 수행만 함. 즉, 로봇이 자율적인 판단(배터리 상태 확인 등)을 하지않고 중앙에서 주는 명령에만 따름. 로봇이 작업을 마치면, 중앙 dispatcher로 돌아가 다음 명령을 기다림.
    • 이 방식에서의 nav2_waypoint_follower의 역할 : nav2_waypoint_follower는 로봇이 주어진 waypoint를 따라 이동하면서 단순한 작업을 수행하도록 도와줌. 이 방식에서는 로봇이 경로를 따라 작업을 수행하는 것이 전부이기 때문에 nav2_waypoint_follower가 매우 적합함.
  2. Smart Robot; dumb centralized dispatcher : 이 방식에서는 로봇이 더 많은 자율성을 가지고 작업을 수행해야 함. 즉, 로봇이 자신의 상태(배터리, 작업 상황 등)을 스스로 관리하며, 상황에 맞는 결정을 내림. 이 방식에서는 중앙 dispatcher는 단순히 로봇에게 작업만 할당하고, 로봇은 그 작업을 효율적으로 완수할 방법을 스스로 찾아야 함
    • 예시 : 중앙 dispatcher는 로봇 A는 물건을 가져오고, 로봇 B는 충전소로 돌아가라는 간단한 작업만 할당함. 이 방식에서 로봇은 작업을 진행하는 동안 스스로 복잡한 결정(배터리 부족 시 스스로 충전소로 돌아가고, 충전 후 다시 작업 등)을 내려야 함. 로봇은 실시간으로 주변 상황을 파악하여, 스스로 경로를 수정하거나 여러 작업을 효율적으로 병행할 수 있음.
    • 이 방식에서의 nav2_waypoint_follower의 역할 : nav2_waypoint_follower는 단순히 waypoint를 따라 이동하는 기능에만 초점을 맞추어 기능적으로 한계가 있음. 따라서 nav2_behavior_tree와 같은 더 복잡한 자율 시스템이 필요함. nav2_behavior_tree는 행동 트리(behavior tree) 기반으로 작동하는 시스템으로, 로봇이 상황에 맞는 결정을 내리도록 계층적 작업 흐름을 설정할 수 있음. 그리고 곧 개발될 nav2_bt_waypoint_follower를 통해 자율적인 waypoint following을 더 쉽게 구현할 수 있을 예정임.

두 방식은 업무 환경과 로봇이 수행하는 복잡도에 따라 효율적인 방식을 선택하며 된다. 전자의 방식은 중앙에서 모든 결정을 내리며, 로봇은 단순한 작업만 수행하면 되는 환경인 창고 관리나 순찰 같은 반복적이고 명확한 작업에 효율적이다. 반면 후자의 방식은 로봇이 자율적으로 여러 가지 상황을 처리해야 할 때 유리하므로, 복잡한 환경에서의 작업이 필요할 시에 효율적이다.

nav2_waypoint_followerGPS 기반 waypoint following도 지원한다. 이를 통해 로봇은 GPS 좌표로 목표를 설정할 수 있고, 해당 좌표를 전역 좌표계로 변환하여 경로를 실행할 수 있다. 이 기능은 robot_localization 패키지의 navsat_transform 노드를 이용하여 전역 위치를 받아오며, Fuse와 같은 다른 위치 추적 시스템과도 연동이 가능하다.

728x90
Comments