Main Content

Inverse Kinematics

엔드 이펙터 자세를 구현하기 위한 조인트 컨피규레이션 계산

  • Inverse Kinematics block

라이브러리:
Robotics System Toolbox / Manipulator Algorithms

설명

Inverse Kinematics 블록은 역기구학(IK) 솔버를 사용하여 지정된 강체 트리 모델을 기반으로 원하는 엔드 이펙터 자세에 대한 조인트 컨피규레이션을 계산합니다. rigidBodyTree 클래스를 사용하여 로봇의 강체 트리 모델을 만듭니다. 이 강체 트리 모델은 솔버가 적용하는 모든 조인트 제약 조건을 정의합니다.

블록 마스크 내부에서 RigidBodyTree 파라미터와 원하는 엔드 이펙터를 지정합니다. 또한 솔버 파라미터 탭에서 알고리즘 파라미터를 조정할 수 있습니다.

원하는 엔드 이펙터 Pose, 자세 허용오차에 대한 Weights, 조인트 컨피규레이션의 InitialGuess을 입력합니다. 솔버는 솔버 파라미터 탭에서 지정한 허용오차 내에서 엔드 이펙터 자세를 충족하는 로봇 컨피규레이션 Config를 출력합니다.

예제

포트

입력

모두 확장

엔드 이펙터 자세로, 4×4 동차 변환으로 지정됩니다. 이 변환은 엔드 이펙터 파라미터에 지정된 강체의 원하는 위치와 방향을 정의합니다.

데이터형: single | double

자세 허용오차의 가중치로, 요소를 6개 가진 벡터로 지정됩니다. 벡터의 처음 세 요소는 원하는 자세의 방향 오차에 대한 가중치에 해당합니다. 벡터의 마지막 세 요소는 원하는 자세의 xyz 위치 오차에 대한 가중치에 해당합니다.

데이터형: single | double

로봇 컨피규레이션의 초기 추측값으로, 조인트 위치로 구성된 벡터로 지정됩니다. 위치의 개수는 강체 트리 파라미터의 비고정 조인트 개수와 같습니다. 이 초기 추측값을 사용해서 솔버가 원하는 로봇 컨피규레이션에 도달하도록 합니다. 그러나 해가 이 초기 추측값에 가까울 것이라는 보장은 없습니다.

데이터형: single | double

출력

모두 확장

원하는 엔드 이펙터 자세의 해를 구하는 로봇 컨피규레이션으로, 벡터로 지정됩니다. 로봇 컨피규레이션은 강체 트리 모델에 대한 조인트 위치로 구성된 벡터입니다. 위치의 개수는 강체 트리 파라미터의 비고정 조인트 개수와 같습니다.

데이터형: single | double

해 정보로, 버스로 반환됩니다. 해 정보 버스에는 다음과 같은 요소가 포함되어 있습니다.

  • Iterations — 알고리즘에 의해 실행되는 반복 횟수입니다.

  • PoseErrorNorm — 해의 엔드 이펙터 자세와 원하는 엔드 이펙터 자세 간의 오차 크기입니다.

  • ExitFlag — 알고리즘 실행과 그 반환 원인의 세부 정보를 알려주는 코드입니다. 각 알고리즘 유형의 종료 플래그는 종료 플래그 항목을 참조하십시오.

  • Status — 해가 허용오차 내에 있는지(1) 아니면 알고리즘이 구할 수 있는 최선해인지(2) 설명하는 문자형 벡터입니다.

파라미터

모두 확장

블록 파라미터

강체 트리 모델로, rigidBodyTree 객체로 지정됩니다. 블록 마스크에서 지정하기 전에 MATLAB® 작업 공간에서 로봇 모델을 생성합니다.

원하는 자세의 엔드 이펙터 이름입니다. rigidBodyTree 객체의 바디 목록을 확인하려면 강체 트리 파라미터를 지정한 다음 바디 선택을 클릭합니다.

Info 포트를 활성화하고 솔버 해에 대한 진단 정보를 가져오려면 선택합니다.

솔버 파라미터

역기구학의 해를 구하기 위한 알고리즘으로, 'BFGSGradientProjection' 또는 'LevenbergMarquardt'로 지정됩니다. 각 알고리즘에 대한 세부 정보는 역기구학 알고리즘 항목을 참조하십시오.

강체 트리 모델에 지정된 조인트 제한을 적용하려면 선택합니다.

해를 최적화하기 위한 최대 반복 횟수로, 양의 정수로 지정됩니다. 반복 횟수를 늘리면 실행 시간은 늘어나지만 해를 개선할 수 있습니다.

제한 시간이 초과되기 전 알고리즘이 실행되는 최대 시간(초)으로, 양의 스칼라로 지정됩니다. 최대 시간을 늘리면 실행 시간은 늘어나지만 해를 개선할 수 있습니다.

비용 함수의 기울기에 대한 임계값으로, 양의 스칼라로 지정됩니다. 기울기의 크기가 해당 임계값 아래로 떨어지면 알고리즘이 중지됩니다. 낮은 기울기 크기는 일반적으로 솔버가 해에 수렴했음을 나타냅니다.

해로부터 생성된 엔드 이펙터 자세와 원하는 자세 간의 오차 크기에 대한 임계값으로, 양의 스칼라로 지정됩니다. 자세의 각 성분에 지정된 Weights가 이 계산에 포함됩니다.

솔버에서 허용하는 최소 스텝 크기로, 양의 스칼라로 지정됩니다. 일반적으로 스텝 크기가 작을수록 해가 수렴에 가깝다는 것을 의미합니다.

반복 간에 발생하는 엔드 이펙터 자세 오차의 변화에 대한 임계값으로, 양의 스칼라로 지정됩니다. 자세 오차의 모든 요소의 변화가 이 임계값보다 작은 경우 알고리즘이 반환됩니다.

종속성

이 파라미터는 솔버Levenberg-Marquadt일 때 활성화됩니다.

체크박스를 선택하여 오차 감쇠를 활성화한 다음 Damping bias 파라미터를 지정합니다.

종속성

이 파라미터는 솔버Levenberg-Marquadt일 때 활성화됩니다.

비용 함수에 대한 감쇠로, 양의 스칼라로 지정됩니다. Levenberg-Marquadt 알고리즘에는 이 스칼라에 의해 제어되는 감쇠 기능이 있으며, 이 기능은 비용 함수와 함께 작동하여 수렴 속도를 제어합니다.

종속성

이 파라미터는 솔버Levenberg-Marquadt이고 오류 감쇠 사용on일 때 활성화됩니다.

  • 인터프리터형 실행 — MATLAB 인터프리터를 사용하여 모델을 시뮬레이션합니다. 이 옵션은 시작 시간을 줄일 수 있지만 코드 생성보다 시뮬레이션 속도가 느립니다. 이 모드에서는 블록의 소스 코드를 디버그할 수 있습니다.

  • 코드 생성 — 생성된 C 코드를 사용하여 모델을 시뮬레이션합니다. 시뮬레이션을 처음 실행하면 Simulink는 블록에 대한 C 코드를 생성합니다. 이 C 코드는 모델이 바뀌지 않는 한 후속 시뮬레이션에 재사용됩니다. 이 옵션은 시작 시간이 조금 더 걸리지만 이후 시뮬레이션 속도는 인터프리터형 실행과 대등합니다.

조정 가능: No

참고 문헌

[1] Badreddine, Hassan, Stefan Vandewalle, and Johan Meyers. "Sequential Quadratic Programming (SQP) for Optimal Control in Direct Numerical Simulation of Turbulent Flow." Journal of Computational Physics. 256 (2014): 1–16. doi:10.1016/j.jcp.2013.08.044.

[2] Bertsekas, Dimitri P. Nonlinear Programming. Belmont, MA: Athena Scientific, 1999.

[3] Goldfarb, Donald. "Extension of Davidon’s Variable Metric Method to Maximization Under Linear Inequality and Equality Constraints." SIAM Journal on Applied Mathematics. Vol. 17, No. 4 (1969): 739–64. doi:10.1137/0117067.

[4] Nocedal, Jorge, and Stephen Wright. Numerical Optimization. New York, NY: Springer, 2006.

[5] Sugihara, Tomomichi. "Solvability-Unconcerned Inverse Kinematics by the Levenberg–Marquardt Method." IEEE Transactions on Robotics. Vol. 27, No. 5 (2011): 984–91. doi:10.1109/tro.2011.2148230.

[6] Zhao, Jianmin, and Norman I. Badler. "Inverse Kinematics Positioning Using Nonlinear Programming for Highly Articulated Figures." ACM Transactions on Graphics. Vol. 13, No. 4 (1994): 313–36. doi:10.1145/195826.195827.

확장 기능

버전 내역

R2018b에 개발됨