Main Content

generalizedInverseKinematics

de cinemat Crear联合国解决者ica inversa multirestricciones

Descripción

El objetogeneralizedInverseKinematicsSystem object™ utiliza un conjunto de restricciones cinemáticas para calcular una configuración de articulación para el modelo de árbol de cuerpo rígido especificado por un objetorigidBodyTree. El objetogeneralizedInverseKinematicsutiliza un solver no lineal para cumplir las restricciones o alcanzar la mejor aproximación.

Especifique los tipos de restricción,ConstraintInputs, antes de llamar al objeto. Para cambiar las entradas de las restricciones después de llamar al objeto, llame arelease(gik).

Especifique las entradas de las restricciones como objetos de restricción y llame ageneralizedInverseKinematicscon dichos objetos pasados a él. Para crear objetos de restricción, utilice los siguientes objetos:

Si la única restricción es la posición y la orientación del efector final, considere utilizarinverseKinematicscomo solver en su lugar.

Para obtener soluciones de cinemática inversa analíticas de forma cerrada, consulteanalyticalInverseKinematics.

Para resolver las restricciones de cinemática inversa generalizada:

  1. Cree el objetogeneralizedInverseKinematicsy configure sus propiedades.

  2. Llame al objeto con argumentos, como si fuera una función.

Para más información sobre el funcionamiento de los System objects, consulte¿Qué son los System Objects?

Creación

Descripción

ejemplo

gik= generalizedInverseKinematicsdevuelve un solver de cinemática inversa generalizada sin especificar el modelo de árbol de cuerpo rígido. Especifique un modelo derigidBodyTreey la propiedadConstraintInputsantes de utilizar este solver.

gik= generalizedInverseKinematics('RigidBodyTree',rigidbodytree,'ConstraintInputs',inputTypes)devuelve un solver de cinemática inversa generalizada con el modelo de árbol de cuerpo rígido y las entradas de restricción previstas especificadas.

gik= generalizedInverseKinematics(Name,Value)devuelve un solver de cinemática inversa generalizada con cada nombre de propiedad especificado establecido en el valor indicado por uno o más argumentos de parName,Value.Namedebe aparecer entre comillas simples (''). Puede especificar varios argumentos de par nombre-valor en cualquier orden comoName1,Value1,...,NameN,ValueN.

Propiedades

expandir todo

A menos que se indique lo contrario, las propiedades sonno ajustables, lo que significa que no puede modificar sus valores después de llamar al objeto. Los objetos se bloquean cuando llama a ellos, y la funciónreleaselos desbloquea.

Si una propiedad esajustable, puede modificar su valor en cualquier momento.

Para obtener más información sobre cómo modificar los valores de las propiedades, consulteDiseñar sistemas en MATLAB utilizando System objects.

Esta propiedad es de solo lectura.

Número de entradas de restricción, especificado como un escalar. El valor de esta propiedad es el número de tipos de restricción especificados en la propiedadConstraintInputs.

Tipos de entradas de restricción, especificados como un arreglo de celdas de vectores de caracteres. Los posibles tipos de entradas de restricción con sus objetos de restricción asociados son:

También existen restricciones de articulación de bucle cerrado que restringen dos cuerpos rígidos de manera que el movimiento restringido es similar al de una articulación adicional entre los dos cuerpos. Sus tipos de entradas de restricción con los objetos de restricción asociados son:

Utilice los objetos de restricción para especificar los parámetros necesarios y pase esos tipos de objetos al objeto cuando lo llame. Por ejemplo:

Cree el objeto solver de cinemática inversa generalizada. Especifique las propiedadesRigidBodyTreeyConstraintInputs.

gik = generalizedInverseKinematics(...'RigidBodyTree',rigidbodytree,'ConstraintInputs',{'position','aiming'});

Cree los objetos de restricción correspondientes.

positionTgt = constraintPositionTarget('left_palm'); aimConst = constraintAiming('right_palm');

Pase los objetos de restricción al objeto solver con una conjetura inicial.

configSol = gik(initialGuess,positionTgt,aimConst);

Modelo de árbol de cuerpo rígido, especificado como un objetorigidBodyTree. Defina esta propiedad antes de utilizar el solver. Si modifica el modelo de árbol de cuerpo rígido, reasigne el árbol de cuerpo rígido a esta propiedad. Por ejemplo:

克里族联合国解决德翼y especifique el arbol de线索rpo rígido.

gik = generalizedInverseKinematics(...'RigidBodyTree',rigidbodytree,'ConstraintInputs',{'position','aiming'});

Modifique el国防部elo de árbol de cuerpo rígido.

addBody(rigidbodytree,rigidBody('body1'),'base')

Reasigne el árbol de cuerpo rígido al solver de IK. Si llama al solver o a la funciónstepantes de modificar el modelo de árbol de cuerpo rígido, deberá usarreleasepara modificar la propiedad.

gik.RigidBodyTree = rigidbodytree;

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

Parámetros asociados al algoritmo especificado, especificados como una estructura. Los campos de la estructura son específicos del algoritmo. ConsulteParámetros del solver.

Uso

Descripción

[configSol,solInfo] = gik(initialguess,constraintObj,...,constraintObjN)encuentra una configuración de articulación,configSol, basada en la conjetura inicial y una lista separada por comas de objetos de descripción de restricciones. El número de descripciones de restricciones depende de la propiedadConstraintInputs.

Argumentos de entrada

expandir todo

Conjetura inicial de la configuración del robot, especificada como arreglo de estructuras o vector. El valor deinitialguessdepende de la propiedadDataFormatdel objeto especificado en la propiedadRigidBodyTreeindicada engik.

Utilice esta conjetura调整对位收效溶剂er a encontrar la configuración de robot de destino. Sin embargo, no existe ninguna garantía de que la solución se aproxime a la conjetura inicial.

Descripciones de restricciones definidas por la propiedadConstraintInputsdegik, especificadas como uno o más de los siguientes objetos de restricción:

Argumentos de salida

expandir todo

Solución de configuración de robot, devuelta como un arreglo de estructuras o vector; depende de la propiedadDataFormatdel objeto especificado en la propiedadRigidBodyTreeindicada engik.

El arreglo de estructuras contiene los siguientes campos:

  • JointName: el vector de caracteres para el nombre de articulación especificado en el modelo de robotRigidBodyTree

  • JointPosition: posición de la articulación correspondiente

La salida del vector es un arreglo de las posiciones de articulación que se darían enJointPositionpara una salida de estructura.

La configuración de articulación es la solución calculada que alcanza la pose del efector final de destino dentro de la tolerancia de la solución.

Nota

En el caso de las articulaciones giratorias, si los límites de la articulación superan un rango de2*pi, en el cual se produce el reajuste de la posición de la articulación, entonces la posición de articulación devuelta es la más próxima al límite inferior de la articulación.

La información de la solución, devuelta como una estructura, contiene estos campos:

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

  • NumRandomRestarts: número de reinicios aleatorios debidos a que el solver se ha atascado en un mínimo local.

  • ConstraintViolation: información sobre la restricción, devuelta como un arreglo de estructuras. Cada estructura del arreglo tiene estos campos:

    • Type: tipo de la entrada de restricción correspondiente, como se especifica en la propiedadConstraintInputs.

    • Violation: vector de infracciones de las restricciones para el tipo de restricción correspondiente.0indica que la restricción se cumple.

  • ExitFlag: código que proporciona más detalles sobre la ejecución del solver y la causa de que se haya devuelto. Para ver los indicadores de salida de los diferentes tipos de solver, consulteBanderas de salida.

  • Status: vector de caracteres que describe si la solución se encuentra dentro de las tolerancias definidas por cada restricción ('success'). Si la solución está fuera de la tolerancia, se da la mejor solución posible que haya podido encontrar el solver ('best available').

Funciones del objeto

Para usar una función de objeto, especifique el System object como el primer argumento de entrada. Por ejemplo, para liberar recursos de sistema de un System object llamadoobj, utilice la siguiente sintaxis:

release(obj)

expandir todo

step Ejecutar el algoritmoSystem object
release Release resources and allow changes toSystem objectproperty values and input characteristics
reset Reset internal states ofSystem object

Ejemplos

contraer todo

Cree un solver de cinemática inversa generalizada que sostenga un brazo robótico en una ubicación específica y apunte hacia la base del robot. Cree los objetos de restricción para pasar los parámetros de restricción necesarios al solver.

Cargue un modelo de robot predefinido KUKA LBR, que se especifica como un objetorigidBodyTree.

loadexampleRobots.matlbr

Cree el objeto System object™ para resolver la cinemática inversa generalizada.

gik = generalizedInverseKinematics;

Configure el objeto System object para utilizar el robot KUKA LBR.

gik.RigidBodyTree = lbr;

Indique al solver que espere un objetoPositionTargety un objetoconstraintAimingyconstraintPositionTargetcomo entradas de restricción.

gik.ConstraintInputs = {'position','aiming'};

Cree los dos objetos de restricción.

  1. El origen del cuerpo denominadotool0está situado en[0.0 0.5 0.5]respecto al marco base del robot.

  2. El ejezdel cuerpo denominadotool0apunta hacia el origen del marco base del robot.

posTgt = constraintPositionTarget('tool0'); posTgt.TargetPosition = [0.0 0.5 0.5]; aimCon = constraintAiming('tool0'); aimCon.TargetPoint = [0.0 0.0 0.0];

Encuentre una configuración que cumpla las restricciones. Debe pasar los objetos de restricción al objeto System object en el orden en que se especificaron en la propiedadConstraintInputs. Especifique una conjetura inicial sobre la configuración del robot.

q0 = homeConfiguration(lbr);% Initial guess for solver[q,solutionInfo] = gik(q0,posTgt,aimCon);

Visualice la configuración devuelta por el solver.

show(lbr,q); title(['Solver status: 'solutionInfo.Status]) axis([-0.75 0.75 -0.75 0.75 -0.5 1])

{

Represente un segmento de rectas desde la posición de destino hasta el origen de la base. El origen del marcotool0coincide con un extremo del segmento y su ejezestá alineado con el segmento.

holdonplot3([0.0 0.0],[0.5 0.0],[0.5 0.0],'--o') holdoff

{

Capacidades ampliadas

Historial de versiones

Introducido en R2017a

expandir todo

Baidu
map