Replanning 기능을 가진 모션플래너 패키지가 궁금합니다. 디자인 패턴을 참고하고 싶습니다.

40 views
Skip to first unread message

Jae Sung Park

unread,
Oct 30, 2016, 10:22:24 AM10/30/16
to 한국 ROS 사용자
안녕하세요. 모션플래너를 구현하는 학생입니다.
실시간으로 dynamic environment를 업데이트하는 replanning 기능을 로봇 팔 모션플래너에 구현하고자 합니다.
예를 들어, 움직이는 사람을 피하기 위해서는, 주기적으로 사람의 움직임을 입력받아서 collision-free trajectory를 재생성하는 refinement 과정이 필요합니다.

다른 사람들이 어떻게 구현했는지 코드를 보고싶은데 (디자인 패턴을 중점적으로), 코드를 찾기가 쉽지 않아 도움을 구하고자 이곳에 글을 남깁니다.
ROS planner node를 만들고 ROS message로 environment를 업데이트할지, 아니면 C++ planner class를 만들고 planner thread, input thread를 따로 돌려서 구현할지. 이와 같은 프로그래밍 구조적인 부분이 궁금합니다.
Replanning 기능이 있는 모션플래너 패키지 아시는 것이 있으면 공유 부탁드립니다.

MoveIt! 패키지를 찾아봤으나 제가 원하는 답은 못 찾았습니다.
대부분의 MoveIt! API는 static environment를 가정한 것 같아 보입니다.
MoveIt! 패키지에 있는 replanning 기능을 보면, '로봇 모션 실행 중 collision 등의 이유로 문제가 생겼을 경우 모션 플래닝을 다시 돌리는 것'으로 되어 있어서, 제가 원하는 기능과는 다르더군요.

이재민

unread,
Oct 30, 2016, 11:42:00 AM10/30/16
to 한국 ROS 사용자
Dynamic replanning 기능을 key feature로 걸어 둔 패키지가 하나있네요. 참고가 되실지는 모르겠습니다
http://wiki.ros.org/descartes

Jae Sung Park

unread,
Oct 30, 2016, 3:12:36 PM10/30/16
to 한국 ROS 사용자
답변 감사합니다. 도움 많이 되었습니다.
제가 생각하던 것보다 간단하게 디자인되어있네요. 저는 모션플래닝 함수가 돌아가는 중에 주변 상태 업데이트를 어떻게 해야 할지 고민을 하고 있었는데 (이것을 플래닝 함수 내부에서 ROS msg로 해결할지 multi-threading으로 해결할지 고민중이었습니다), 이 코드는 그냥 모션플래닝 함수 따로 업데이트 함수 따로 구현되어 있는 것 같습니다.
이것 비슷하게 저도 void Plan(double time_limit); 처럼 time limit을 파라미터로 받는 플래닝 함수를 구현하고 Plan(...) 함수와 UpdateEnvironment() 함수를 번갈아 호출하는 식으로 구현하면 좋겠다는 생각이 들었습니다.
다른 replanning 패키지, 프로그램 디자인에 대한 조언도 감사히 받겠습니다.


On Sunday, October 30, 2016 at 11:42:00 AM UTC-4, 이재민 wrote:
Reply all
Reply to author
Forward
0 new messages