Main Content

Inverse Kinematics

Calcular configuraciones de articulación para lograr una pose del efector final

  • Biblioteca:
  • Robotics System Toolbox / Manipulator Algorithms

  • Inverse Kinematics block

Descripción

El bloque Inverse Kinematics utiliza un solver de cinemática inversa (IK) para calcular las configuraciones de articulación de la pose del efector final deseada a partir de un modelo de árbol de cuerpo rígido especificado. Cree un modelo de árbol de cuerpo rígido para el robot mediante la clase rigidBodyTree. El modelo de árbol de cuerpo rígido define todas las restricciones de articulación que aplica el solver.

Especifique el parámetro RigidBodyTree y el efector final deseado dentro de la máscara de bloque. También puede ajustar los parámetros del algoritmo en la pestaña Solver Parameters.

Introduzca la pose Pose del efector final, las ponderaciones Weights de la tolerancia de la pose y la conjetura inicial InitialGuess deseadas para la configuración de la articulación. El solver emite una configuración del robot, Config, que cumple la pose del efector final dentro de las tolerancias especificadas en la pestaña Solver Parameters.

Puertos

Entrada

expandir todo

Pose del efector final, especificada como una transformación homogénea de 4 por 4. Esta transformada define la posición y la orientación deseadas del cuerpo rígido especificado en el parámetro End effector.

Tipos de datos: single | double

Ponderaciones para tolerancias de la pose, especificadas como un vector de seis elementos. Los primeros tres elementos del vector corresponden a las ponderaciones de error en la orientación para la pose deseada. Los primeros tres elementos del vector corresponden a las ponderaciones de error en la posición xyz para la pose deseada.

Tipos de datos: single | double

Conjetura inicial de la configuración del robot, especificada como un vector de las posiciones de articulación. El número de posiciones es igual al número de articulaciones no fijas en el parámetro Rigid body tree. Utilice esta conjetura inicial para ayudar al solver a encontrar la configuración de robot deseada. Sin embargo, no existe ninguna garantía de que la solución se aproxime a la conjetura inicial.

Tipos de datos: single | double

Salida

expandir todo

Configuración del robot que resuelve la pose deseada del efector final, especificada como un vector. Una configuración de robot es un vector de posiciones de articulación para el modelo de árbol de cuerpo rígido. El número de posiciones es igual al número de articulaciones no fijas en el parámetro Rigid body tree.

Tipos de datos: single | double

Información de la solución, devuelta como un bus. El bus de información de la solución contiene los siguientes elementos:

  • Iterations: el número de iteraciones ejecutadas por el algoritmo.

  • PoseErrorNorm: la magnitud del error entre la pose del efector final en la solución y la pose deseada del efector final.

  • ExitFlag: el código que proporciona más detalles sobre la ejecución del algoritmo y la causa de que sea devuelta. Para ver los indicadores de salida de los diferentes tipos de algoritmo, consulte Banderas de salida.

  • Status: el vector de caracteres que describe si la solución se encuentra dentro de la tolerancia (1) o es la mejor solución posible que ha encontrado el algoritmo (2).

Parámetros

expandir todo

Parámetros del bloque

Modelo de árbol de cuerpo rígido, especificado como un objeto rigidBodyTree. Cree el modelo de robot en el área de trabajo de MATLAB® antes de especificarlo en la máscara de bloque.

Nombre del efector final para la pose deseada. Para ver una lista de cuerpos del objeto rigidBodyTree, especifique el parámetro Rigid body tree y, a continuación, haga clic en Select body.

Seleccione esta opción para activar el puerto Info y obtener información de diagnóstico para la solución del solver.

Parámetros del solver

Algoritmo para resolver una cinemática inversa, especificado como 'BFGSGradientProjection' o 'LevenbergMarquardt'. Para ver los detalles de los diferentes algoritmos, consulte Algoritmos de cinemática inversa.

Seleccione esta opción para aplicar los límites de articulación especificados en el modelo Rigid body tree.

Número máximo de iteraciones para optimizar la solución, especificado como un número entero positivo. Aumentar el número de iteraciones puede mejorar la solución a costa del tiempo de ejecución.

Número máximo de segundos durante los cuales se ejecuta el algoritmo antes de que se agote el tiempo, especificado como un escalar positivo. Aumentar el máximo de tiempo puede mejorar la solución a costa del tiempo de ejecución.

Umbral del gradiente de la función de coste, especificado como un escalar positivo. El algoritmo se detiene si la magnitud del gradiente cae por debajo de ese umbral. Una magnitud de gradiente baja suele indicar que el solver ha convergido en una solución.

Umbral de la magnitud del error entre la pose del efector final generada desde la solución y la pose deseada, especificado como un escalar positivo. Las ponderaciones Weights especificadas para cada componente de la pose se incluyen en este cálculo.

Tamaño de paso mínimo permitido por el solver, especificado como un escalar positivo. Los tamaños de paso más pequeños suelen significar que la solución está cerca de la convergencia.

Umbral del cambio de error de pose del efector final entre iteraciones, especificado como un escalar positivo. El algoritmo devuelve si los cambios en todos los elementos del error de pose son menores que este umbral.

Dependencias

Este parámetro se activa cuando el Solver es Levenberg-Marquadt.

Marque la casilla para activar el amortiguamiento de errores y, a continuación, especifique el parámetro Damping bias.

Dependencias

Este parámetro se activa cuando el Solver es Levenberg-Marquadt.

Amortiguamiento de la función de coste, especificada como un escalar positivo. El algoritmo de Levenberg-Marquadt tiene una característica de amortiguamiento controlada por este escalar que opera con la función de coste para controlar la tasa de convergencia.

Dependencias

Este parámetro se activa cuando el Solver es Levenberg-Marquadt y Use error damping es on.

  • Interpreted execution: simula el modelo utilizando el intérprete MATLAB. Esta opción reduce el tiempo de inicio, pero ofrece una velocidad de simulación inferior a la obtenida mediante Code generation. Este modo permite depurar el código fuente del bloque.

  • Code generation: simula el modelo utilizando el código C generado. La primera vez que ejecuta una simulación, Simulink® genera código C para el bloque. El código C se reutiliza en simulaciones posteriores, siempre que el modelo no cambie. Esta opción requiere tiempo de inicio adicional, pero la velocidad de las simulaciones posteriores es comparable a la obtenida mediante Interpreted execution.

Ajustable: No

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.

Capacidades ampliadas

Historial de versiones

Introducido en R2018b