Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Algoritmos cinemáticos inversos

Las clases y le dan acceso a algoritmos de cinemática inversa (IK).inverseKinematicsgeneralizedInverseKinematics Puede utilizar estos algoritmos para generar una configuración de robot que alcance los objetivos y restricciones especificados para el robot. Esta configuración de robot es una lista de posiciones conjuntas que están dentro de los límites de posición del modelo de robot y no violan ninguna restricción que el robot tiene.

Elija un algoritmo

soporta dos algoritmos para lograr una solución IK: el algoritmo de proyección BFGS y el algoritmo Levenberg-Marquardt.MATLAB® Ambos algoritmos son métodos iterativos de optimización basados en gradiente que parten de una conjetura inicial en la solución y buscan minimizar una función de costo específica. Si cualquiera de los algoritmos converge a una configuración en la que el coste es cercano a cero dentro de una tolerancia especificada, ha encontrado una solución al problema de la cinemática inversa. Sin embargo, para algunas combinaciones de conjeturas iniciales y poses de efector final deseadas, el algoritmo puede salir sin encontrar una configuración de robot ideal. Para manejar esto, el algoritmo utiliza un mecanismo de reinicio aleatorio. Si está habilitado, el mecanismo de reinicio aleatorio reinicia la búsqueda iterativa desde una configuración de robot aleatoria cada vez que esa búsqueda no encuentra una configuración que logre la pose del efector final deseada. Estos reinicios aleatorios continúan hasta que se encuentra una solución IK que califica, ha transcurrido el tiempo máximo o se alcanza el límite de iteración.

Para establecer el algoritmo, especifique la propiedad como .SolverAlgorithm'BFGSGradientProjection''LevenbergMarquardt'

Proyección de degradado bFGS

El algoritmo de proyección de degradado Broyden-Fletcher-Goldfarb-Shanno (BFGS) es un método cuasi-Newton que utiliza los gradientes de la función de costo de iteraciones anteriores para generar información aproximada de segunda derivada. El algoritmo utiliza esta información de segunda derivada para determinar el paso a seguir en la iteración actual. Un método de proyección de degradado se utiliza para tratar los límites de la función de coste que crean los límites de unión del modelo de robot. La dirección calculada se modifica para que la dirección de búsqueda siempre sea válida.

Este método es el algoritmo predeterminado y es más robusto en la búsqueda de soluciones que el método Levenberg-Marquardt. Es más eficaz para configuraciones cerca de los límites de la unión o cuando la conjetura inicial no está cerca de la solución. Si su conjetura inicial está cerca de la solución y se necesita una solución más rápida, considere el método.Levenberg-Marquardt

Levenberg-Marquardt

La variante del algoritmo Levenberg-Marquardt (LM) utilizada en la clase es un método de mínimos cuadrados amortiguado por error.InverseKinematics El factor de error amortiguado ayuda a evitar que el algoritmo escape de un mínimo local. El algoritmo LM está optimizado para converger mucho más rápido si la conjetura inicial está cerca de la solución. Sin embargo, el algoritmo no maneja bien las conjeturas iniciales arbitrarias. Considere la posibilidad de utilizar este algoritmo para encontrar soluciones IK para una serie de poses a lo largo de una trayectoria deseada del efector final. Una vez que se encuentra una configuración de robot para una pose, esa configuración es a menudo una buena conjetura inicial en una solución IK para la siguiente pose en la trayectoria. En esta situación, el algoritmo LM puede producir resultados más rápidos. De lo contrario, utilice el en su lugar.Proyección de degradado bFGS

Parámetros del solucionador

Cada algoritmo tiene parámetros ajustables específicos para mejorar las soluciones. Estos parámetros se especifican en la propiedad del objeto.SolverParameters

Proyección de degradado bFGS

Los parámetros del solucionador para el algoritmo BFGS tienen los siguientes campos:

  • — Número máximo de iteraciones permitidas.MaxIterations El valor predeterminado es 1500.

  • — Número máximo de segundos que el algoritmo ejecuta antes de agotar el tiempo de espera.MaxTime El valor predeterminado es 10.

  • — Umbral en el gradiente de la función de coste.GradientTolerance El algoritmo se detiene si la magnitud del degradado cae por debajo de este umbral. Debe ser un escalar positivo.

  • — Umbral de la magnitud del error entre la postura del efector final generada a partir de la solución y la pose deseada.SolutionTolerance Las ponderaciones especificadas para cada componente de la pose en el objeto se incluyen en este cálculo. Debe ser un escalar positivo.

  • — Indicador si se tienen en cuenta los límites conjuntos al calcular la solución. es una propiedad del modelo robot en .EnforceJointLimitsJointLimitsrigidBodyTree De forma predeterminada, se aplican los límites de unión.

  • — Indicador si se permiten reinicios aleatorios.AllowRandomRestarts Los reinicios aleatorios se desencadenan cuando el algoritmo se aproxima a una solución que no satisface las restricciones. Se utiliza una conjetura inicial generada aleatoriamente. y todavía se obedecen.MaxIterationMaxTime De forma predeterminada, los reinicios aleatorios están habilitados.

  • — Tamaño mínimo de paso permitido por el solucionador.StepTolerance Los tamaños de paso más pequeños generalmente significan que la solución está cerca de la convergencia. El valor predeterminado es 10–14.

Levenberg-Marquardt

Los parámetros del solucionador para el algoritmo LM tienen los siguientes campos adicionales además de lo que requiere el método:Proyección de degradado bFGS

  • — Umbral del cambio en el efector final plantea el error entre iteraciones.ErrorChangeTolerance El algoritmo devuelve si los cambios en todos los elementos del error de pose son menores que este umbral. Debe ser un escalar positivo.

  • — Un término constante para amortiguación.DampingBias El algoritmo LM tiene una característica de amortiguación controlada por esta constante que funciona con la función de costo para controlar la velocidad de convergencia. Para desactivar la amortiguación, utilice el parámetro.UseErrorDamping

  • — 1 (predeterminado), Indicador de si se utiliza amortiguación.UseErrorDamping Establezca este parámetro en para deshabilitar la amortiguación.false

Información de la solución

Al usar los algoritmos de cinemática inversa, cada llamada al objeto devuelve información de la solución sobre cómo se realizó el algoritmo. La información de la solución se proporciona como una estructura con los siguientes campos:

  • — Número de iteraciones ejecutados por el algoritmo.Iterations

  • — Número de reinicios aleatorios porque el algoritmo se atascó en un mínimo local.NumRandomRestarts

  • — La magnitud del error de pose para la solución en comparación con la postura del efector final deseada.PoseErrorNorm

  • — Código que proporciona más detalles sobre la ejecución del algoritmo y qué hizo que se devolviera.ExitFlag Para los indicadores de salida de cada tipo de algoritmo, consulte .Banderas de salida

  • — Vector de caracteres que describe si la solución está dentro de la tolerancia ( ) o la mejor solución posible que el algoritmo podría encontrar ( ).Status'success''best available'

Banderas de salida

En la información de la solución, los indicadores de salida proporcionan más detalles sobre la ejecución del algoritmo específico. Observe la propiedad del objeto para averiguar si el algoritmo se realizó correctamente.Status Cada código de indicador de salida tiene una descripción definida.

indicadores de salida del algoritmo:'BFGSGradientProjection'

  • — Mínimo local encontrado.1

  • — Número máximo de iteraciones alcanzadas.2

  • — Se aperó el tiempo de espera del algoritmo durante el funcionamiento.3

  • — Tamaño mínimo del paso.4 El tamaño del paso está por debajo del campo de la propiedad.StepToleranceSizeSolverParameters

  • — No hay indicador de salida.5 Relevante sólo para algoritmos.'LevenbergMarquardt'

  • — Dirección de búsqueda no válida.6

  • — Hessian no es positivo semidefinido.7

indicadores de salida del algoritmo:'LevenbergMarquardt'

  • — Mínimo local encontrado.1

  • — Número máximo de iteraciones alcanzadas.2

  • — Se aperó el tiempo de espera del algoritmo durante el funcionamiento.3

  • — Tamaño mínimo del paso.4 El tamaño del paso está por debajo del campo de la propiedad.StepToleranceSizeSolverParameters

  • — El cambio en el error de pose de efecto final está por debajo del campo de la propiedad.5ErrorChangeToleranceSolverParameters

Referencias

[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.

Consulte también

| |

Temas relacionados