티스토리 뷰

오늘은 학술적인 내용보다는 조금은 테크니컬한 내용을 가져왔습니다. ROS2와 함께 Moveit2도 같이 Release가 되어 여러 로봇 연구에 사용되고 있는데요. 그 중 최근 제가 관심 있게 보고 있는 기능은 Hybrid Planning입니다.

 

모바일 로봇에 조금 익숙하신 분들은 Global Planner와 Local Planner에 대한 개념을 알고 계실 겁니다. Motion planning은 크게 봤을 경우 “Sense-Plan-Act” 방식을 사용하는데요. 이런 방식은 환경이 변하지 않는 상태에서 진행하는 Global motion planning에서는 잘 작동합니다. 다만 주변 환경이 다이나믹하게 변하는 경우에는 Global planner로만으로는 Task를 부드럽게 수행하기 어렵습니다. 이런 이유로 최근 모바일 로봇의 Local planner를 개선시켜 다이나믹한 환경에서도 잘 반응하며 움직일 수 있도록 하고 있는데요. 이와 같은 작업이 로봇 팔에서도 이뤄지고 있습니다. (물론 기존에 다양한 연구들이 많았지만, Nav2와 같이 접근성이 좋게 개발되고 있다는 게 큰 장점이라 생각합니다.)

 

Moveit Hybrid planning 아키텍쳐는 global과 local planner를 병렬로 돌리는 형태로 구성되어 있습니다. Global planner의 경우 계산 시간이 늦으며, real-time 안정성을 갖추지 않아도 됩니다. 반면에 Local planner의 경우 global trajectory를 따라가기 위해 계속해서 계산하고 있게 됩니다. local planner는 Global planner로만으로는 해결할 수 없는 다양한 local planner 문제들을 해결할 수 있습니다. 단적인 예로 global path를 따라가면서 동적으로 움직이는 물체를 피해 움직일 수 있게 해줍니다.

당연하게도 local planner는 연산이 빨라야 하는데요. 단순히 빠른 게 아닌 jerk가 적은 안정적인 한 모션이어야 하기 때문에 deterministic해야 합니다. 일반적으로 local planner는 local minima에 빠지지 않기 위해 global planner의 trajectory를 레퍼런스로 삼게 됩니다. 이런 작업으로도 local minima에 빠지는 걸 100퍼센트 방지할 수는 없는데요. 따라서 global planner를 다시 한번 돌려야하는 경우가 생기고, 이를 위해서 planner event를 설정할 수 있어야 합니다. 이런 작업을 바로 Hybrid planning 아키텍쳐가 진행하게 됩니다. 특정 사용 조건과 planner type을 선택하여 event-base logic을 설정할 수 있도록 해주는 거죠.

Hybrid planning 사용성

그렇다면 이런 Hybrid planning을 사용할 수 있는 곳에는 어떤 곳이 있을까요? 정확한 예시를 들어드리기는 어렵지만, moveit 공식 문서에서는 총 3가지 시나리오를 제시해줍니다.

  • Online motion planning : 글로벌 플래너가 초기 글로벌 솔루션을 생성하고 최적화 하며, 로컬 플래너는 동시에 참조 된 trajectory 조정하면서 업데이트 된 경로 세그먼트를 초기 경로에 합치는 작업을 합니다.
  • Reactive Motion : 로컬 플래너가 충돌 전에 속도를 줄이거나 멈추는 동안에 글로벌 플래너는 유효하지 않은 경로를새롭게 계획하고 수정을 진행합니다.
  • Adaptive Motion : 적응 모션이라고 하여, 고르지 못한 표면에 툴이 안정적으로 접촉하는 것과 같은 동적인 환경에 글로벌 경로를 적응할 수 있도록 로컬 플래너가 같이 사용 됩니다.

The Hybrid Planning Architecture

Hybrid Planning 아키텍쳐는 총 3가지로 나눠져 있습니다.

  1. Hybrid planner : Hybrid planning 요청을 action 형태로 전달하여 플래너들을 조율합니다.
  2. Global Planner : Global trajectory를 전달합니다.
  3. Local Planner : Global planner의 Trajectory를 전달받아 Local planner 문제를 해결하고 로봇 드라이버에게 직접적으로 위치와 속도 지령을 전달합니다.

이 3가지는 모두 로스2의 구성 노드이며, Global planner와 Local Planner는 Hybrid Planner에게 Action이나 Topic을 전송하는 형태로 구성되어 있습니다.

Hybrid Planning Manager

Hybrid Planning 매니저는 HybridPlanner action의 요청을 처리하는 것과 플래닝 플로그인에 기반하여 모션 플래닝과 실행을 조율하는 작업을 합니다. 이때 로직은 PlanningLogic 플로그인에 구현되어 있고 event-drvien 디자인으로 구현되어 있습니다.

Planning Logic의 경우 Plugin 형태로 구현되어 있습니다. 따라서 사용자가 “글로벌 계획 시작”, “trajectory 중지” 혹은 “Local planner 제약 조건 변경”과 같은 아키텍쳐가 제공하는 action들에 일반 이벤트를 매핑하는 것이 가능합니다. 즉, 사용자에 맞게 모션 플래닝을 만들 수 있습니다.

Global Planner

Global Planner는 Global Planner 플러그인에서 처리 된 action server를 제공합니다. 단순히 우리가 알던 무브잇 planning 파이프라인이지만 어떤 종류의 플래너도 사용될 수 있습니다. 최종적으로 만들어진 trajectory는 Local Planner로 publish 됩니다.

Local Planner

Local Planner는 Hybrid Planning Manager로부터 온 요청을 처리하는 action server를 돌립니다. Local planner는 2개의 플러그인으로 구성되어 있는데요.

  1. Trajectory Operator : 참조하는 global trajectory를 확인하고 처리하는 플러그인으로 로봇 상태 처리를 모니터링 합니다.
  2. Local Constraint Solver : local 제약들과 참조하는 trajectory를 기반으로 반복적인 알고리즘이 구현 된 플러그인입니다. 최종적으로 로봇에 명령을 내리는 곳이며 이벤트 업데이트나 동적으로 센서 값을 처리할 수 있는 인터페이스를 가지고 있습니다.

정리하자면 아래의 다이어그램과 같이 나타낼 수 있습니다.

Hybrid planning 기본적인 워크플로우 다이어그램

Hybrid planning의 작동 방식은 위의 다이어그램을 통해 한눈에 확인할 수 있습니다. 한가지 유심히 봐야할 것은 Local Planner의 실행 조건입니다. 실제 Global Planner가 참조할 global trajectory를 던져줘도 Hybrid planning manager가 요청을 보내기 전까지는 trajectory를 처리하지 않습니다. 요청이 있는 후에는 2개의 Plugin을 거친 후 최종적으로 로봇에 Command를 보내게 됩니다. 그 후 완전히 Goal에 도착했을 경우 다시 Hybrid Planning Manager에게 응답을 보내게 됩니다.

 

Global planner가 global trajectory를 만들고 Local planner에서 계산되는 과정에서 물체가 나타난 경우입니다. Local planner에서 충돌에 관한 피드백 신호를 받으면 로봇 동작을 멈추게 되고, Global planner가 신호를 받아 다시 reference trajectory (Global trajectory)를 전달해줄 동안 기다립니다. 그리고 최종적으로 새롭게 받은 trajectory를 가지고 Local planner는 참조할 trajectory로 블랜딩 하는 작업을 진행하게 되고, 물체를 돌아가는 trajectory를 따라 진행하게 됩니다.

 

Hybrid planning과 연관 된 내용의 영상도 확인하시면 좋습니다!

https://www.youtube.com/watch?v=xgD0OJzHOgc

 

위 내용은 Moveit 공식 문서를 번역/정리 한 내용입니다. 정확하고 더 자세한 내용을 위해서는 공식 문서를 참고 부탁드립니다. (링크)

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31