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 de cinemática inversa

Las clases y le dan acceso a los algoritmos de cinemática inversa (IK).robotics.InverseKinematicsrobotics.GeneralizedInverseKinematics Puede utilizar estos algoritmos para generar una configuración de robot que logre las metas y restricciones especificadas 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 las restricciones que tiene el robot.

Elija un algoritmo

admite 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 de optimización iterativos basados en gradiente que comienzan desde una suposición inicial en la solución y buscan minimizar una función de costo específica. Si cualquiera de los algoritmos converge en una configuración donde el costo está cerca de cero dentro de una tolerancia especificada, ha encontrado una solución al problema de cinemática inversa. Sin embargo, para algunas combinaciones de conjeciones iniciales y poses de efector final deseadas, el algoritmo puede salir sin encontrar una configuración de robot ideal. Para controlar 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 aleatorio cada vez que la búsqueda no encuentra una configuración que logre la pose de efector final deseada. Estos reinicios aleatorios continúan hasta que se encuentra una solución IK calificada, el tiempo máximo ha transcurrido o se alcanza el límite de iteración.

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

La proyección de gradiente BFGS

El algoritmo de proyección de degradado Broyden-Fletcher-Goldfarb-Shanno (BFGS) es un método cuasi-Newton que utiliza los degradados de la función de coste de iteraciones pasadas para generar información aproximada de segunda derivada. El algoritmo utiliza esta información de segunda derivada para determinar el paso que se va a tomar en la iteración actual. Un método de proyección de degradado se utiliza para tratar los límites de límite en 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 sea siempre 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 las configuraciones cercanas a los límites de las articulaciones o cuando la suposición inicial no está cerca de la solución. Si su suposición 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 de algoritmo Levenberg-Marquardt (LM) utilizada en la clase es un método de mínimos cuadrados con un error de amortiguación.InverseKinematics El factor de amortiguamiento de errores 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 suposición inicial está cerca de la solución. Sin embargo, el algoritmo no maneja bien las conjeciones iniciales arbitrarias. Considere el uso de 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 suposición 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, use el en su lugar.La proyección de gradiente BFGS

Parámetros del Solver

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

La proyección de gradiente 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 se ejecuta antes de que se agote el tiempo de salida.MaxTime El valor predeterminado es 10.

  • — Umbral en el degradado 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 en la magnitud del error entre la pose del efector final generada a partir de la solución y la pose deseada.SolutionTolerance En este cálculo se incluyen las ponderaciones especificadas para cada componente de la pose en el objeto. Debe ser un escalar positivo.

  • — Indicador si se tienen en cuenta los límites de Unión para calcular la solución. es una propiedad del modelo de robot en.EnforceJointLimitsJointLimitsrobotics.RigidBodyTree De forma predeterminada, se aplican límites de Unión.

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

  • — Tamaño de paso mínimo permitido por el solucionador.StepTolerance Los tamaños de paso más pequeños suelen significar 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:La proyección de gradiente BFGS

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

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

  • — 1 (por defecto), indicador de si se utiliza la amortiguación.UseErrorDamping Establezca este parámetro para desactivar la amortiguación.false

Información de la solución

Durante el uso de los algoritmos de cinemática inversa, cada llamada en el 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 que ejecuta 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 pose del efector final deseado.PoseErrorNorm

  • : Código que proporciona más detalles sobre la ejecución del algoritmo y lo que ha provocado la devolución.ExitFlag Para las marcas de salida de cada tipo de algoritmo, vea.Las 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'

Las banderas de salida

En la información de la solución, las marcas de salida proporcionan más detalles sobre la ejecución del algoritmo específico. Mire la propiedad del objeto para averiguar si el algoritmo se ha realizado correctamente.Status Cada código de marca 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

  • — Algoritmo agotado 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

  • — Sin indicador de salida.5 Relevante sólo para el algoritmo.'LevenbergMarquardt'

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

  • — El Hessiano no es positivo semidefinido.7

indicadores de salida del algoritmo:'LevenbergMarquardt'

  • — Mínimo local encontrado.1

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

  • — Algoritmo agotado 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 del efector 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