liminfo

MoveIt Reference

MoveIt2 모션플래닝/SRDF/IK 레퍼런스

27개 결과

MoveIt Reference 소개

MoveIt2 레퍼런스는 MoveIt 모션 플래닝 프레임워크를 사용하는 로봇 공학 엔지니어와 ROS2 개발자를 위한 검색 가능한 치트 시트입니다. MoveGroupInterface의 완전한 C++ API 예제를 제공하며, TCP 위치 지정을 위한 setPoseTarget(), 관절 공간 목표를 위한 setJointValueTarget(), SRDF 정의 자세를 위한 setNamedTarget(), 용접 및 도포 작업에 사용되는 직선 경로 추적을 위한 computeCartesianPath()를 포함합니다.

플래너 섹션에서는 모든 주요 OMPL 알고리즘을 설정 예제와 함께 다룹니다. RRTConnect(빠른 양방향 RRT 기본 플래너), RRTstar(점근적 최적 경로), PRM(반복 쿼리용 확률적 로드맵), STOMP(부드러운 궤적 최적화), Pilz 산업용 모션 플래너(PTP/LIN/CIRC 명령) 등 각 항목에 setPlannerId() 호출, 권장 계획 시간, YAML 설정 파라미터가 포함됩니다.

추가 섹션에서는 Planning Scene 관리(박스/메시 충돌 객체, ACM 허용 충돌 행렬), SRDF 설정(그룹 정의, 이름 자세, 엔드이펙터 연결, 가상 조인트), 역기구학 솔버(KDL, IKFast 해석 솔버, TRAC-IK SQP 최적화, BioIK 진화 알고리즘), 완전한 Pick & Place 파이프라인(접근-파지-후퇴), move_group 런치 파일 및 MoveIt Setup Assistant 워크플로우를 다룹니다.

주요 기능

  • setPoseTarget(), setJointValueTarget(), setNamedTarget(), computeCartesianPath() C++ 예제를 포함한 MoveGroupInterface API 레퍼런스
  • OMPL 플래너 비교: RRTConnect, RRTstar, PRM, STOMP, Pilz 산업용 플래너와 YAML 설정
  • 박스/메시 CollisionObject 생성 및 ACM(허용 충돌 행렬) 설정을 포함한 Planning Scene 관리
  • 완전한 SRDF 레퍼런스: 그룹 체인, group_state 이름 자세, end_effector 정의, virtual_joint 유형
  • IK 솔버 비교: KDL(기본 수치), IKFast(해석적), TRAC-IK(SQP+KDL 병렬), BioIK(진화 다목적)
  • 접근-파지-후퇴, 배치 시퀀스 설정을 포함한 Pick & Place 파이프라인
  • move_group 런치 파일 템플릿 및 MoveIt Setup Assistant 단계별 워크플로우(URDF에서 설정 패키지까지)
  • 한국어/영어 전환 지원, MoveGroup, Planning Scene, OMPL 플래너, SRDF, IK 솔버 등 카테고리 필터링

자주 묻는 질문

MoveIt2로 로봇 팔을 목표 자세로 이동시키려면 어떻게 하나요?

계획 그룹에 대한 MoveGroupInterface를 생성한 후, 위치(x, y, z)와 방향(쿼터니언)을 포함한 geometry_msgs::msg::Pose로 setPoseTarget()을 호출합니다. plan()으로 궤적을 생성하고 성공 여부를 확인한 후 execute()로 로봇을 이동합니다. 계획 시간과 속도 스케일링 팩터로 튜닝합니다.

RRTConnect와 RRTstar 플래너의 차이는 무엇인가요?

RRTConnect는 빠르게 경로를 찾는 양방향 RRT 기본 플래너로 대부분의 환경에서 잘 동작합니다(보통 5초 계획). RRTstar는 점근적 최적 플래너로 더 짧고 부드러운 경로를 생성하지만 훨씬 긴 계획 시간(30초 이상)이 필요합니다. 속도가 중요하면 RRTConnect, 경로 품질이 중요하면 RRTstar를 사용합니다.

용접이나 도포를 위한 직선 데카르트 경로는 어떻게 계획하나요?

computeCartesianPath()에 웨이포인트 벡터(geometry_msgs::msg::Pose), 엔드이펙터 스텝 크기(예: 0.01m), 점프 임계값(0.0은 비활성화)을 전달합니다. 함수는 경로가 성공적으로 계획된 비율(0.0~1.0)을 반환합니다. 1.0이면 전체 경로가 충돌 없이 계획된 것입니다.

어떤 IK 솔버를 선택해야 하나요?

KDL은 기본 수치 솔버로 6DOF 이상 로봇에 적합하지만 느리고 해를 놓칠 수 있습니다. IKFast는 OpenRAVE 기반 해석적 솔버로 6DOF 로봇에서 빠르고 정확합니다. TRAC-IK는 SQP 최적화와 KDL을 동시 실행하여 높은 성공률을 보입니다. BioIK는 진화 알고리즘을 사용하여 다중 목표와 7DOF 이상 여유 자유도 로봇에서 우수합니다.

ACM(허용 충돌 행렬)이란 무엇이고 왜 중요한가요?

ACM은 SRDF에 정의되어 충돌 검사를 건너뛸 링크 쌍(보통 항상 맞닿는 인접 링크)을 지정합니다. 적절한 ACM 설정 없이는 MoveIt이 연결된 링크 간에 거짓 충돌을 보고합니다. MoveIt Setup Assistant의 Self-Collisions 단계에서 ACM을 자동 생성할 수 있습니다.

MoveIt의 Pick & Place 파이프라인은 어떻게 동작하나요?

Pick 동작은 세 단계로 구성됩니다: 접근(pre-grasp approach, 물체를 향해 이동), 파지(grasp posture, 그리퍼 닫기), 후퇴(post-grasp retreat, 물체 들어올리기). Place는 반대입니다: 접근(목표 위치로 이동), 배치(그리퍼 열기), 후퇴(뒤로 물러남). 각 단계에서 방향 벡터와 최소/희망 거리를 지정합니다.

SRDF 파일이란 무엇이고 어떻게 만드나요?

SRDF(Semantic Robot Description Format)는 계획 그룹(조인트 체인), 이름 자세(home, ready), 엔드이펙터 할당, 가상 조인트(고정/평면/부동 베이스-월드 연결), 충돌 행렬을 정의합니다. MoveIt Setup Assistant GUI를 사용하면 각 설정 단계를 안내받아 가장 쉽게 만들 수 있습니다.

ROS2에서 move_group 런치 파일은 어떻게 설정하나요?

launch.py 파일을 만들어 moveit_ros_move_group의 move_group Node를 robot_description, robot_description_semantic(SRDF), kinematics_yaml, ompl_planning_yaml, joint_limits_yaml 파라미터와 함께 인스턴스화합니다. MoveIt Setup Assistant가 모든 YAML 파일과 런치 스크립트가 포함된 설정 패키지를 자동 생성합니다.