역기구학 알고리즘
inverseKinematics
클래스와 generalizedInverseKinematics
클래스는 역기구학(IK) 알고리즘에 대한 액세스를 제공합니다. 이러한 알고리즘을 사용하여 로봇에 대해 지정된 목표와 제약 조건을 구현하는 로봇 컨피규레이션을 생성할 수 있습니다. 이 로봇 컨피규레이션은 로봇 모델의 위치 제한 범위 내에 있고 로봇이 가진 어떠한 제약 조건도 위반하지 않는 조인트 위치의 목록입니다.
알고리즘 선택
MATLAB®은 IK 해를 얻기 위해 세 개 알고리즘, 즉 BFGS 투영 알고리즘, Levenberg-Marquardt 알고리즘, fmincon
순차적 2차 계획법(SQP) 알고리즘을 지원합니다. 세 알고리즘 모두 해에 대한 초기 추측값에서 시작하여 특정 비용 함수를 최소화하려고 시도하는, 반복적인 기울기 기반 최적화 방법입니다. 두 알고리즘 중 하나가 지정된 허용오차 내에서 비용이 0에 가까운 컨피규레이션으로 수렴되면 역기구학 문제에 대한 해를 구한 것입니다. 그러나 초기 추측값과 목표 엔드 이펙터 자세의 조합 중 일부에서는 이상적인 로봇 컨피규레이션을 구하지 못한 채 알고리즘이 종료될 수 있습니다. 이를 처리하기 위해 알고리즘은 무작위 재시작 메커니즘을 사용합니다. 무작위 재시작 메커니즘이 활성화된 경우 탐색에서 목표 엔드 이펙터 자세를 구현하는 컨피규레이션을 찾지 못할 때마다 무작위 로봇 컨피규레이션에서 반복 탐색을 재시작합니다. 이러한 무작위 재시작은 적합한 IK 해를 구하거나 최대 시간이 경과하거나 반복 한도에 도달할 때가지 계속됩니다.
fmincon
SQP 알고리즘은 최적화 문제의 제약 조건을 처리하는 데 매우 적합하므로, 여러 제약 조건이 있는 복잡한 IK 시나리오에 적합한 선택입니다.
알고리즘을 설정하려면 SolverAlgorithm
속성을 "BFGSGradientProjection"
, "LevenbergMarquardt"
또는 "fminconsqp"
로 지정하십시오.
BFGS 기울기 투영
BFGS(Broyden-Fletcher-Goldfarb-Shanno) 기울기 투영 알고리즘은 이전 반복에서 비용 함수의 기울기를 사용하여 대략적인 2계 도함수 정보를 생성하는 준뉴턴 방법입니다. 알고리즘은 이 2계 도함수 정보를 사용하여 현재 반복에서 수행할 단계를 결정합니다. 로봇 모델의 조인트 제한이 생성하는 비용 함수의 경계 제한을 처리하기 위해 기울기 투영 방법이 사용됩니다. 계산된 방향은 탐색 방향이 항상 유효하도록 수정됩니다.
이 방법은 디폴트 알고리즘이며 해를 구하는 데 있어 Levenberg-Marquardt 방법보다 더 견고합니다. 조인트 제한에 가까운 컨피규레이션인 경우나 초기 추측값이 해에 가깝지 않은 경우에 더 효과적입니다. 초기 추측값이 해에 가깝고 더 빨리 해를 구할 필요가 있을 경우 fmincon SQP 방법이나 Levenberg-Marquardt 방법을 사용해 보십시오.
Levenberg-Marquardt
InverseKinematics
클래스에서 사용되는 LM(Levenberg-Marquardt) 알고리즘 변형은 오차 감쇠 최소제곱 방법입니다. 오차 감쇠 인자는 알고리즘이 국소 최솟값을 벗어나는 것을 방지하는 데 도움이 됩니다. LM 알고리즘은 초기 추측값이 해에 가까운 경우 훨씬 빠르게 수렴하도록 최적화되어 있습니다. 그러나 이 알고리즘은 임의의 초기 추측값을 잘 처리하지 못합니다. 엔드 이펙터의 목표 궤적을 따르는 일련의 자세에 대한 IK 해를 구하는 경우라면 이 알고리즘을 사용해 볼 수 있습니다. 일단 한 자세에 대한 로봇 컨피규레이션이 구해지면, 이 컨피규레이션이 궤적에서 다음 자세의 IK 해를 구하기 위한 양호한 초기 추측값인 경우가 많습니다. 이런 상황에서 LM 알고리즘 또는 fmincon
SQP 알고리즘은 더 빠른 결과를 만들어 낼 수 있습니다. 그렇지 않은 경우 BFGS 기울기 투영을 대신 사용하십시오.
fmincon
SQP
역기구학 솔버에 사용되는 fmincon
알고리즘 변형은 순차적 2차 계획법(SQP) 방법으로, 비선형 목적 함수의 해를 구하는 데 탁월합니다. 이 방법은 해에 수렴하는 데 BFGS 투영이나 Levenberg-Marquardt 알고리즘보다 더 적은 반복이 필요하며 무작위 재시작을 수행할 필요가 없습니다. fmincon
SQP 솔버에 대한 자세한 내용은 fmincon
(Optimization Toolbox) 함수를 참조하십시오.
이 알고리즘에는 Optimization Toolbox™가 필요합니다.
솔버 파라미터
각 알고리즘에는 해를 개선하기 위한 특정 조정 가능형 파라미터가 있습니다. 이러한 파라미터는 객체의 SolverParameters
속성에 지정됩니다.
BFGS 기울기 투영
BFGS 알고리즘의 솔버 파라미터 구조체에는 다음 필드가 있습니다.
MaxIterations
— 허용되는 최대 반복 횟수입니다. 디폴트 값은 1500입니다.GradientTolerance
— 비용 함수의 기울기에 대한 임계값입니다. 기울기의 크기가 해당 임계값 아래로 떨어지면 알고리즘이 중지됩니다. 값은 양의 스칼라여야 합니다.SolutionTolerance
— 해로부터 생성된 엔드 이펙터 자세와 목표 자세 간의 오차 크기에 대한 임계값입니다. 객체 내 자세의 각 성분에 지정된 가중치가 이 계산에 포함됩니다. 값은 양의 스칼라여야 합니다.EnforceJointLimits
— 해를 계산할 때 조인트 제한을 고려하는지를 나타내는 표시자입니다.JointLimits
는rigidBodyTree
내 로봇 모델의 속성입니다. 기본적으로 조인트 제한이 적용됩니다.AllowRandomRestarts
— 무작위 재시작이 허용되는지를 나타내는 표시자입니다. 무작위 재시작은 알고리즘이 제약 조건을 충족하지 않는 해에 근접할 경우 트리거됩니다. 무작위로 생성된 초기 추측값이 사용됩니다.MaxIteration
과MaxTime
은 여전히 준수됩니다. 무작위 재시작은 기본적으로 활성화되어 있습니다.StepTolerance
— 솔버에서 허용하는 최소 스텝 크기입니다. 일반적으로 스텝 크기가 작을수록 해가 수렴에 가깝다는 것을 의미합니다. 디폴트 값은 1e–14입니다.MaxTime
— 제한 시간이 초과되기 전 알고리즘이 실행된 최대 시간(초)입니다. 디폴트 값은 10입니다.
Levenberg-Marquardt
LM 알고리즘의 솔버 파라미터 구조체에는 BFGS 기울기 투영 방법에서 필요한 필드 외에도 다음과 같은 추가 필드가 있습니다.
ErrorChangeTolerance
— 반복 간에 발생하는 엔드 이펙터 자세 오차의 변화에 대한 임계값입니다. 자세 오차의 모든 요소의 변화가 이 임계값보다 작은 경우 알고리즘이 반환됩니다. 값은 양의 스칼라여야 합니다.DampingBias
— 감쇠에 대한 상수항입니다. LM 알고리즘에는 이 상수에 의해 제어되는 감쇠 기능이 있으며, 이 기능은 비용 함수와 함께 작동하여 수렴 속도를 제어합니다. 감쇠를 비활성화하려면UseErrorDamping
파라미터를 사용합니다.UseErrorDamping
— 감쇠의 사용 여부를 나타내는 표시자로, 디폴트 값은 1입니다. 감쇠를 비활성화하려면 이 파라미터를false
로 설정합니다.
fmincon
SQP
fmincon
SQP 알고리즘의 솔버 파라미터 구조체에는 다음 필드가 있습니다.
MaxIterations
— 허용되는 최대 반복 횟수입니다. 디폴트 값은 1500입니다. 이 필드는fmincon
함수의MaxIterations
옵션에 매핑됩니다.SolutionTolerance
— 해로부터 생성된 엔드 이펙터 자세와 목표 자세 간의 오차 크기에 대한 임계값입니다. 이 계산에는 객체 내 자세의 각 성분에 지정된 가중치가 포함됩니다. 이 필드를 양의 스칼라로 지정하십시오. 이 필드는fmincon
함수의ObjectiveLimit
옵션에 매핑됩니다.StepTolerance
— 솔버에서 허용하는 최소 스텝 크기입니다. 일반적으로 스텝 크기가 작을수록 해가 수렴에 가까워집니다. 디폴트 값은 1e–6입니다. 이 필드는fmincon
함수의StepTolerance
옵션에 매핑됩니다.GradientTolerance
— 비용 함수의 기울기에 대한 임계값입니다. 기울기의 크기가 해당 임계값 아래로 떨어지면 알고리즘이 중지됩니다. 이 필드를 양의 스칼라로 지정하십시오. 이 필드는fmincon
함수의OptimalityTolerance
옵션에 매핑됩니다.EnforceJointLimits
— 해를 계산할 때 조인트 제한을 고려하는지를 나타냅니다.JointLimits
는rigidBodyTree
로봇 모델의 속성입니다. 기본적으로 알고리즘은 조인트 제한을 적용합니다. 이 필드는fmincon
함수의lb
(Optimization Toolbox) 인수와ub
(Optimization Toolbox) 인수에 매핑됩니다.ConstraintTolerance
— 제약 조건 위반 시 임계값입니다. 이는 솔버가 허용하는 조인트 위치 제한 위반의 정도를 나타냅니다. 디폴트 값은 1e-6이며 음이 아닌 숫자형 스칼라여야 합니다. 이 필드는fmincon
함수의ConstraintTolerance
옵션에 매핑됩니다.
이러한 파라미터가 매핑되는 fmincon
옵션에 대한 자세한 내용은 fmincon
함수의 options
(Optimization Toolbox) 인수를 참조하십시오.
해 정보
역기구학 알고리즘을 사용하는 동안 객체에 대한 각 호출은 알고리즘이 수행된 방법에 대한 해 정보를 반환합니다. 해 정보는 다음 필드가 있는 구조체로 제공됩니다.
Iterations
— 알고리즘에 의해 실행되는 반복 횟수입니다.NumRandomRestarts
— 알고리즘이 국소 최솟값에 고착되었을 때 무작위로 재시작하는 횟수입니다.PoseErrorNorm
— 해의 자세를 목표 엔드 이펙터 자세와 비교했을 때의 자세 오차의 크기입니다.ExitFlag
— 알고리즘 실행과 그 반환 원인의 세부 정보를 알려주는 코드입니다. 각 알고리즘 유형의 종료 플래그는 종료 플래그 항목을 참조하십시오.Status
— 해가 허용오차 내에 있는지('success'
) 아니면 알고리즘이 구할 수 있는 최선해인지('best available'
) 설명하는 문자형 벡터입니다.
종료 플래그
해 정보에서 종료 플래그는 특정 알고리즘의 실행에 대한 자세한 정보를 제공합니다. 알고리즘이 성공했는지 알아보려면 객체의 Status
속성을 살펴보십시오. 각 종료 플래그 코드는 정의된 설명이 있습니다.
"BFGSGradientProjection"
알고리즘 종료 플래그:
1
— 국소 최솟값을 찾았습니다.2
— 최대 반복 횟수에 도달했습니다.3
— 연산 중 알고리즘 시간이 초과되었습니다.4
— 최소 스텝 크기입니다. 스텝 크기가SolverParameters
속성의StepToleranceSize
필드 값보다 작습니다.5
— 종료 플래그가 없습니다."LevenbergMarquardt"
알고리즘에만 해당합니다.6
— 탐색 방향이 유효하지 않습니다.7
— 헤세 행렬이 양의 준정부호가 아닙니다.
"LevenbergMarquardt"
알고리즘 종료 플래그:
1
— 국소 최솟값을 찾았습니다.2
— 최대 반복 횟수에 도달했습니다.3
— 연산 중 알고리즘 시간이 초과되었습니다.4
— 최소 스텝 크기입니다. 스텝 크기가SolverParameters
속성의StepToleranceSize
필드 값보다 작습니다.5
— 엔드 이펙터 자세 오차의 변화가SolverParameters
속성의ErrorChangeTolerance
필드 값보다 작습니다.
"fminconsqp"
알고리즘 종료 플래그:
1
— 1차 최적성 측정값이GradientTolerance
보다 작고 최대 제약 조건 위반이ConstraintTolerance
보다 작습니다.0
— 반복 횟수가MaxIterations
를 초과했거나, 함수 평가 횟수가 MaxFunctionEvaluations (Optimization Toolbox)의 최대 디폴트 값을 초과했습니다.-1
— 출력 함수 또는 플롯 함수에 의해 중지되었습니다.-2
— 실현 가능한 해를 구할 수 없습니다.-3
— 현재 반복에서 목적 함수가SolutionTolerance
아래로 떨어졌고, 최대 제약 조건 위반이ConstraintTolerance
보다 작습니다.
자세한 내용은 fmincon
함수의 exitflag
(Optimization Toolbox) 인수를 참조하십시오.
참고 문헌
[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.
참고 항목
rigidBodyTree
| generalizedInverseKinematics
| inverseKinematics