운동학 (Kinematics)#
운동학 플러그인#
MoveIt은 사용자가 자신의 역운동학 알고리즘을 작성할 수 있도록 플러그인 인프라를 사용합니다. 순방향 운동학과 Jacobian 행렬 계산은 RobotState 클래스 내에서 통합됩니다. MoveIt의 기본 역운동학 플러그인은 KDL 수치적 Jacobian 기반의 솔버를 사용하여 구성됩니다. 이 플러그인은 MoveIt Setup Assistant에 의해 자동으로 설정됩니다.
충돌 검사 (Collision Checking)#
MoveIt에서 충돌 검사는 Planning Scene 내부의 CollisionWorld
객체를 사용하여 구성됩니다. 다행히도 MoveIt은 사용자가 충돌 검사가 어떻게 이루어지는지에 대해 크게 신경 쓸 필요가 없도록 설계되어 있습니다. MoveIt에서 충돌 검사는 주로 FCL 패키지를 사용하여 수행됩니다. FCL은 MoveIt의 주요 충돌 검사 라이브러리입니다.
충돌 객체 (Collision Objects)#
MoveIt은 다양한 유형의 객체에 대한 충돌 검사를 지원합니다. 다음과 같은 객체 형식이 있습니다:
메쉬 (Meshes) - 로봇 링크와 같은 객체를 설명하기 위해
.stl
(표준 삼각형 언어) 또는.dae
(디지털 자산 교환) 형식을 사용할 수 있습니다.기본 형상 (Primitive Shapes) - 예: 상자, 원기둥, 원뿔, 구 및 평면
Octomap -
Octomap
객체는 충돌 검사에 직접 사용할 수 있습니다.
허용 충돌 매트릭스 (Allowed Collision Matrix, ACM)#
충돌 검사는 매우 비용이 많이 드는 작업으로, 종종 모션 계획 동안 전체 계산 비용의 약 90%를 차지합니다. 허용 충돌 매트릭스
또는 ACM
은 두 개체 쌍 간의 충돌 검사 필요 여부를 나타내는 이진 값을 인코딩합니다 (로봇 상의 또는 세계 상의 개체일 수 있음). ACM에서 두 개체에 해당하는 값이 true
로 설정된 경우, 두 개체 간의 충돌 검사가 필요 없거나 원하지 않는다는 것을 지정합니다. 예를 들어, 두 개체가 항상 너무 멀리 떨어져 있어 절대 충돌할 수 없는 경우 충돌 검사가 필요하지 않습니다. 또는 두 개체가 기본적으로 서로 접촉 상태에 있는 경우, ACM에서 해당 쌍에 대한 충돌 검출을 비활성화해야 합니다.
요약:
운동학 플러그인: MoveIt은 사용자가 자신의 역운동학 알고리즘을 작성할 수 있는 플러그인 구조를 가지고 있으며, 기본적으로 KDL 솔버를 사용합니다.
충돌 검사: MoveIt에서 충돌 검사는 주로 FCL 패키지를 사용하여 수행되며, 사용자가 직접 설정할 필요는 없습니다.
충돌 객체: 메쉬, 기본 형상, Octomap과 같은 다양한 객체에 대한 충돌 검사를 지원합니다.
허용 충돌 매트릭스 (ACM): ACM은 두 개체 간의 충돌 검사 필요 여부를 결정하여 불필요한 충돌 검사를 줄여줍니다.