Construir un robot manipulador mediante parámetros de cinemática DH
Utilice los parámetros de Denavit-Hartenberg (DH) del robot manipulador Puma560® para construir de forma incremental un modelo de robot de árbol de cuerpo rígido. Especifique los parámetros DH relativos para cada articulación a medida que los acopla. Visualice los marcos del robot e interactúe con el modelo final.
Los parámetros DH definen la geometría de cómo cada cuerpo rígido se acopla a su elemento principal por medio de una articulación. Los parámetros siguen una convención de cuatro transformaciones:
: longitud de la línea normal común entre los dos ejes z, que es perpendicular a ambos ejes
: ángulo de rotación de la normal común
: desplazamiento a lo largo del eje z en la dirección de la normal, de elemento principal a elemento secundario
: ángulo de rotación del eje x a lo largo del eje z anterior
Especifique los parámetros del robot Puma560 [1] como una matriz. Los valores proceden de:
dhparams = [0 pi/2 0 0; 0.4318 0 0 0 0.0203 -pi/2 0.15005 0; 0 pi/2 0.4318 0; 0 -pi/2 0 0; 0 0 0 0];
Cree un objeto de árbol de cuerpo rígido.
robot = rigidBodyTree;
Cree un arreglo de celdas para el objeto de cuerpo rígido y otro para los objetos de articulación. Itere por los parámetros DH llevando a cabo este proceso:
Cree un objeto
rigidBody
con un nombre único.Cree y asigne nombre a un objeto
rigidBodyJoint
giratorio.Utilice
setFixedTransform
para especificar la transformación de cuerpo a cuerpo de la articulación con parámetros DH. La función ignora el elemento final de los parámetros DH,theta
, porque el ángulo del cuerpo depende de la posición de la articulación.Utilice
addBody
para acoplar el cuerpo al árbol de cuerpo rígido.
bodies = cell(6,1); joints = cell(6,1); for i = 1:6 bodies{i} = rigidBody(['body' num2str(i)]); joints{i} = rigidBodyJoint(['jnt' num2str(i)],"revolute"); setFixedTransform(joints{i},dhparams(i,:),"dh"); bodies{i}.Joint = joints{i}; if i == 1 % Add first body to base addBody(robot,bodies{i},"base") else % Add current body to previous body by name addBody(robot,bodies{i},bodies{i-1}.Name) end end
Verifique que el robot se haya construido correctamente con la función showdetails
o show
. La función showdetails
enumera todos los cuerpos del robot en la ventana de comandos de MATLAB®. La función show
muestra el robot con una determinada configuración (de forma predeterminada, la inicial).
showdetails(robot)
-------------------- Robot: (6 bodies) Idx Body Name Joint Name Joint Type Parent Name(Idx) Children Name(s) --- --------- ---------- ---------- ---------------- ---------------- 1 body1 jnt1 revolute base(0) body2(2) 2 body2 jnt2 revolute body1(1) body3(3) 3 body3 jnt3 revolute body2(2) body4(4) 4 body4 jnt4 revolute body3(3) body5(5) 5 body5 jnt5 revolute body4(4) body6(6) 6 body6 jnt6 revolute body5(5) --------------------
figure(Name="PUMA Robot Model")
show(robot);
Interactuar con el modelo de robot
Visualice el modelo de robot para confirmar sus dimensiones mediante el objeto interactiveRigidBodyTree
.
figure(Name="Interactive GUI")
gui = interactiveRigidBodyTree(robot,MarkerScaleFactor=0.5);
Haga clic y arrastre el marcador en la interfaz gráfica interactiva para reposicionar el efector final. La interfaz gráfica utiliza la cinemática inversa para resolver las posiciones de las articulaciones que logran la mejor coincidencia posible con la posición del efector final especificada. Haga clic con el botón secundario en un determinado marco del cuerpo para establecerlo como cuerpo marcador de destino o para cambiar el método de control con el que se establecen las posiciones específicas de las articulaciones.
Siguientes pasos
Ahora que ha construido el modelo en MATLAB®, estos son algunos de los posibles pasos siguientes.
Calcule Cinemática inversa para obtener configuraciones de articulaciones basadas en las posiciones deseadas del efector final. Especifique las restricciones del robot además de las de los parámetros del modelo, como apuntamiento, límites cartesianos y poses objetivo.
Generación y seguimiento de trayectorias basado en waypoints y en otros parámetros con perfiles de velocidad trapezoidal, B-splines o trayectorias polinómicas.
Realice Planificación de trayectorias de manipuladores usando los modelos de robot y el planificador de rutas de árboles aleatorios de exploración rápida (RRT).
Utilice Detección de colisiones con obstáculos del entorno para garantizar que el robot se mueve de forma segura y eficaz.
Referencias
[1] Corke, P. I. y B. Armstrong-Helouvry. “A Search for Consensus Among Model Parameters Reported for the PUMA 560 Robot”. Proceedings of the 1994 IEEE International Conference on Robotics and Automation, 1608–13. San Diego, CA, EE. UU.: IEEE Computer Soc. Press, 1994. https://doi.org/10.1109/ROBOT.1994.351360.