Open Source Robotics

고품질 오픈소스 로봇 프로젝트, 도구 및 소프트웨어의 엄선된 컬렉션.

Robowflex: Robot Motion Planning with MoveIt Made Easy

저자: Zachary Kingston, Lydia E. Kavraki · IROS 2022

라이선스

  • 오픈 액세스
  • 논문: CC BY 4.0

아래 내용은 모두 논문의 라이선스(CC BY 4.0)에 따라 논문 전문을 바탕으로 하며, 그림에는 저자를 표기했습니다.

요약

Robowflex는 MoveIt의 로봇, 장면, 플래너를 ROS 메시지를 거치지 않고 C++ 프로그램 안에서 직접 불러와, 플래너 개발, 벤치마킹, 과제 및 동작 계획을 스크립트로 작성할 수 있게 한다.

중요한 이유

MoveIt은 이미 많은 로봇을 지원하므로, 팀은 기존 로봇에 대한 플래닝 실험을 짧은 프로그램으로 작성하면서도 필요할 때 ROS 시스템에 연결할 수 있다. 플래너 내부에 직접 접근할 수 있어 연구자는 MoveIt을 다시 컴파일하지 않고 OMPL 샘플러나 플래너를 교체할 수 있고, 과제 및 동작 계획을 위해 서로 다른 장면으로 많은 플래닝 쿼리를 실행할 수 있다. NASA는 이를 사용해 국제우주정거장의 Robonaut 2에 대한 핸드레일 파지와 모션 플래닝을 평가했다.

문제

대부분의 MoveIt 사용자는 launch 파일과 ROS 파라미터로 설정하고 ROS 메시지로 쿼리하는 MoveGroup 프로그램을 통해 플래닝한다. 이는 기본적인 플래닝에는 충분하지만, 플래너를 프로파일링하거나, 그 구성 요소를 바꾸거나, 내부 정보를 추출하거나, 더 큰 알고리즘 안에서 많은 플래닝 쿼리를 실행하기는 어렵게 만든다. MoveIt의 동작을 바꾸려면 플러그인 클래스를 작성해야 하는데, 이는 그 내부 구조에 익숙하지 않은 사람에게 어려운 일이다.

제안 방법

Robowflex는 MoveIt의 핵심 라이브러리를 감싸는 C++ 라이브러리로, launch 파일 없이 로봇(URDF, SRDF, 관절 한계, 기구학)을 불러오고 장면, 동작 요청, 플래너를 하나의 프로그램 안의 객체로 노출한다. 여기에 YAML, XACRO, ROS bag, ROS 파라미터용 입출력 헬퍼, OMPL 호환 출력을 내는 벤치마킹 도구, 그리고 OMPL 내부, DART, Tesseract의 TrajOpt, 실행 중인 MoveGroup, Blender 렌더링을 위한 모듈을 더한다. 어댑터 덕분에 코드는 ROS Indigo부터 ROS Noetic까지 컴파일된다.

핵심 통찰

  • MoveGroup과 ROS 메시지로 통신하는 대신 MoveIt을 라이브러리로 감싸면, ROS 통합을 선택 사항으로 남겨 두면서 내부 데이터 구조에 완전히 접근할 수 있다
  • 많은 로봇, 장면, 플래너를 하나의 프로그램에 불러올 수 있으며, 과제 및 동작 계획은 서로 다른 장면에서 많은 동작 계획을 시도하기 위해 이것이 필요하다
  • OMPL 로그 형식의 벤치마크 출력은 Planner Arena 같은 기존 도구에 바로 연결되며, 일반 파일로 저장된 장면과 요청 덕분에 데이터셋을 쉽게 만들 수 있다
  • MoveIt 자체의 벤치마킹은 ROS Warehouse가 필요하고, 학습 기반 플래너에 필요한 다양한 장애물이 있는 장면을 쉽게 지원하지 않는다
  • 통합 모듈을 통해 라이브러리 간 비교가 가능하다. 예를 들어 같은 장면에서 MoveIt의 RRTConnect와 Tesseract의 TrajOpt를 하나의 짧은 스크립트로 비교할 수 있다

주요 결과

  • Fetch 로봇에서 ROS 메시지 없이 약 40줄의 스크립트로 기본 모션 플래닝을 시연했다
  • 벤치마킹 예시: Fetch 로봇에서 RRT*를 200회 실행하며, 시간에 따른 최적 경로 비용을 진행 속성으로 기록했다
  • DART 모듈은 복합 공간에서 두 대의 Fetch 로봇을 사용하는 다중 로봇 플래닝에, 그리고 다중 로봇 과제 및 동작 계획 프레임워크의 모션 플래닝 구성 요소로 사용되었다
  • NASA가 역기구학 솔버, 핸드레일 파지 구성, 그리고 핸드레일을 따라 이동하는 Robonaut 2의 플래닝 난이도를 평가하는 데 사용했다
  • 집필 시점에 Robowflex의 벤치마킹이나 모듈은 8편의 논문([12]–[19])에서 사용되었으며, 코드는 ROS Indigo부터 ROS Noetic까지 컴파일된다

한계

  • 논문에 한계를 명시한 절이 없다. 사용 사례는 시연이며, MoveGroup 대비 노력이나 실행 시간을 측정해 비교한 결과는 없다
  • MoveIt과 ROS 위에 만들어졌으므로 각 로봇에는 여전히 MoveIt 설정 파일(URDF, SRDF, 관절 한계, 기구학)이 필요하다
  • 저자들은 다른 단순화된 MoveIt 인터페이스(MoveIt CPP, moveit_boilerplate)가 존재한다고 언급하며, 이들과 Robowflex의 비교는 정성적이다
  • Robonaut 2 사용 사례는 RViz에서 시각화한 플래닝 평가로 기술되며, 하드웨어 실행 결과는 보고되지 않았다

분야에 미친 영향

IROS 2022 Best Paper Award for Industrial Robotics Research for Applications 최종 후보에 올랐으며, 인용 수는 31회다. Robowflex는 GitHub에 오픈소스로 공개되어 있고 온라인 문서를 제공한다.

초록

Robowflex는 산업 및 연구 응용을 위한 로봇 모션 플래닝 소프트웨어 라이브러리로, 널리 쓰이는 MoveIt 라이브러리와 Robot Operating System(ROS) 미들웨어를 활용한다. Robowflex는 MoveIt을 이용한 모션 플래닝의 편리함을 살리면서, 하나의 프로그램 안에서 모션 플래닝 쿼리를 작성하고 조작할 수 있는 확장된 API를 제공한다. Robowflex의 고수준 API는 많은 일반적인 사용 사례를 단순화하면서도 기반이 되는 MoveIt 라이브러리에 대한 접근을 그대로 제공한다. Robowflex는 특히 1) 새로운 모션 플래너 개발, 2) 모션 플래너 평가, 3) 모션 플래닝을 사용하는 복잡한 문제(예: 과제 및 동작 계획)에 유용하다. Robowflex는 또한 시각화 기능과 다른 로보틱스 라이브러리(예: DART 및 Tesseract)와의 통합을 제공하며, 다른 많은 로보틱스 패키지와 상호 보완적이다. 우리 라이브러리를 사용하면 모션 플래닝 쿼리를 설정하고, 결과에서 정보를 추출하고, 다양한 소프트웨어 구성 요소와 직접 인터페이스하기 위해 사용자가 ROS나 MoveIt의 전문가일 필요가 없다. 우리는 그 효용을 보여 주는 몇 가지 사용 사례 예시를 제시한다.

링크

  • arXiv 2103.12826: https://arxiv.org/abs/2103.12826
  • DOI 10.1109/IROS47612.2022.9981698: https://doi.org/10.1109/IROS47612.2022.9981698
  • PDF: https://arxiv.org/pdf/2103.12826v1
  • 코드: https://github.com/KavrakiLab/robowflex
  • 프로젝트 페이지: https://kavrakilab.github.io/robowflex/

이 웹사이트는 JavaScript가 필요합니다. 오픈소스 로봇 프로젝트를 탐색하려면 JavaScript를 활성화하세요.