Cinemática de Robots Un robot se puede modelar como una cadena cinemáticas compuesta de eslabones rígidos conectados por articulaciones. 3.‐ Cinemática de Manipuladores (directa) ii) cerradas i) abiertas iii) arborescentes Dr. Alejandro Aceves López Articulaciones Articulaciones actuadas Prismática Rotacional Universal Prismática Rotacional Esférica Cilíndrica Planar Helicoidal Mechanics of Machines Dr. Mohammad Kilani Class 2 Fundamental Concepts, http://slideplayer.com/slide/2502610/ Mathworks Simscape Multibody Blocks http://www.mathworks.com/help/physmod/sm/blocklist.html Movilidad Movilidad Se busca determinar el número mínimo de parámetros que definen la configuración (postura) de un objeto o un robot (objetos rígidos). Comencemos analizando el caso 2D. ¿Dónde está el objeto?: yˆU ŷ2 ŷ1 x̂1 x0 , y0 , 0 x̂0 x1 , y1 , 1 xˆU ¿Qué sucede con su movilidad si los conectamos con otros objetos? ŷ2 Articulación rotacional yˆU ŷ1 x̂2 9 parámetros (3 por objeto) 2 x̂2 x2 , y2 , 2 ŷ0 Extracto de: https://www.youtube.com/watch?v=UyWN811Y1b0 Extracto de: https://www.youtube.com/watch?v=qykxMDh‐rVk x̂1 x1 , y1 , 1 ŷ0 x̂0 xˆU 4 parámetros Movilidad Espacios Operacional‐Configuraciones Para todo robot, el Espacio de Trabajo (Operacional) es tal que: dim = m m Y el espacio de Configuraciones (Articular) es tal que: DoF = dim = n [ , ]n ¿Qué sucede con su movilidad si los conectamos con otros objetos? Espacio de Trabajo (Operacional) es: 2 dim = 2 ŷ0 Articulación rotacional 2 Articulación rotacional 1 4 x̂0 n=4 2 parámetros [1,2]T = 2 coordenadas [x, y]T = Cinemática de Robots Se imponen sistemas coordenados desde la base {0} hasta la muñeca {n}. Para cada eslabón se establece un sistema coordenado. • • P iT P Para el eslabón i: Por tanto la cadena cinemática: i 1 O 01T 21T n n1T n m=6 La cinemática trata del estudio analítico del movimiento (posición, velocidad, aceleración) del robot con respecto a un sistema coordenado fijo como una función del tiempo sin considerar las fuerzas/momentos que lo originaron. i 0 n=3 m=3 Cinemática Directa e Inversa • • i 1 Ejemplo 2: 3 2 [ , ] DoF = dim = 2 x̂1 1 Ejemplo 1: Espacio de Configuraciones (Articular) 2 es: x̂2 ŷ1 Entonces, un robot es redundante si: n>m un robot es diestro si: n=m un robot es sub‐actuado si: n<m Solo son necesarios 2 parámetros (1,2) para conocer la postura (configuración) del robot. ¿Qué configuración toma el robot si 1=2=½? ŷ2 O Parámetros dimensionales Valores articulares (q1,q2,q3…qn) Posición y orientación del efector final Cinemática directa (FK) Parámetros dimensionales Posición y orientación del efector final Ejemplo 1 Ejemplo 2 x̂4 Analicemos este robot: 0 ŷ4 1.‐ Definir cuantos DoF tiene. 2.‐ Determinar las dimensiones de los eslabones. 3.‐ Dibujar el robot en su postura CERO (o HOME) 4.‐ Fijar sistemas coordenados (varias opciones). 5.‐ Escribir las expresiones de transformación. ŷ1 ŷ0 Valores articulares (q1,q2,q3…qn) Cinemática inversa (IK) x̂1 x̂0 El robot está dibujado en la configuración: =0°; =45° 1 ẑ2 0 x̂2 x̂3 ŷ3 ẑ1 1 2 ŷ1 L=1 ŷ2 ẑ3 1 2 L=1 1 x̂2 ŷ2 2 2 2 3 x̂3 x̂1 L=1 ẑ0 3 4 x̂0 ŷ0 ŷ3 2 3 Ejemplo 3 Cinemática Denavit‐Hartenberg El robot está dibujado en la configuración CERO (HOME). 3 2 1 L3 x̂1 L1 0 ẑ2 x̂2 ẑ1 ẑ3 d4 ŷ3 ŷ2 1 2 En la literatura existen reportadas dos metodologías: 1.‐ El método de DH estándar (Análisis por eslabones). 2.‐ El método de DH modificado (Análisis por articulaciones). x̂3 ŷ1 L5 ẑ4 ẑ0 L2 2 3 ŷ4 x̂4 ŷ0 x̂0 En 1955, Denavit y Hartenberg propusieron un enfoque sistemático y generalizado que utiliza matrices de transformación homogénea para describir la relación espacial (traslación/rotación) entre dos eslabones adyacentes. 3 4 L4 a) DH estándar Metodología de DH‐modificado Para relacionar los vínculos i1 e i se establece con 4 parámetros. Parámetros de DH‐m Eje i Eje i1 Parámetros de DH‐m Eje i1 b) DH modificado Parámetros de DH‐m Eje i Eje i1 Eje i Parámetros de DH‐m Parámetros de DH‐m Eje i Eje i1 Eje i Eje i1 ai 1 Distancia del vínculo Parámetros de DH‐m Parámetros de DH‐m Eje i Eje i1 Eje i Eje i1 ai ai ai 1 ai 1 di Desplazamiento entre vínculos Parámetros de DH‐m Parámetros de DH‐m Eje i Eje i1 Eje i Eje i1 ai ai 1 ai ai 1 di i1 Torsión del vínculo di Parámetros de DH‐m Parámetros de DH‐m Eje i Eje i1 Eje i Eje i1 ai ai 1 ai ai 1 di i1 i Ángulo articular i1 Parámetros de DH‐m Eje i1 di Cálculo de parámetros de DH‐m Se definen dos sistemas coordenados Para medir los parámetros de Denavit‐Hartenberg utilizamos la siguiente convención: Eje i Parámetros relacionados con las articulaciones: zˆi 1 yˆi yˆi 1 xˆi 1 0i1 0i di Distancia del vínculo ai xˆi Desplazamiento entre vínculos ai1 Torsión del vínculo zˆi xˆi 1 xˆi • i es el ángulo (sobre ) desde hasta . • di es la distancia (sobre ) desde hasta . 0i xˆi 1 zˆi zˆi zˆi xˆi 1 zˆi Parámetros relacionados con los eslabones: i Ángulo articular • i 1 es el ángulo (sobre ) desde hasta . zˆi 1 xˆi 1 zˆi • ai 1 es la distancia(sobre ) desde hasta . xˆi 1 zˆi 0i1 xˆi 1 i1 Definición de tramas para DH‐m Todo robot se debe analizar desde su posición de HOME, es decir, cuando todos los valores articulares son nulos. Sea n el número de grados de libertad: 1. Para la i-ésima trama, empezando en {1} y hasta {n1}: A. Identificar los ejes articulares {i} e {i+1}, y la dirección del sentido positivo de dichos ejes. Ejemplo 1 Obtenga los parámetros de Denavit‐Hartenberg del siguiente manipulador: x̂3 ˆi debe ser normal al plano formado por (eje i) × (eje i+1) (o al revés). B. El eje x ˆi apunta del (eje i) al (eje i+1). Cuando (eje i ) y (eje i+1) son || entonces x ˆi en la misma dirección de xˆi 1 . Como último recurso, se elige x ˆi debe cruzar por (eje i) y (eje i+1) en algún punto. VITAL: El eje x C. El eje zˆi se define sobre el eje articular {i}. Usualmente se prefiere la dirección en el sentido positivo del movimiento articular. ˆi con el eje D. El origen 0i de la trama {i} se ubica en la intersección de x articular {i}. 2. Elegir las tramas {0} y {n} de manera que la mayor cantidad de parámetros de DH sean 0. Por conveniencia, hacer {0} parecida a {1} y {n} parecida a {n1}, o lo que resulte en a a 0 . 0 n 0 n ẑ3 x̂2 Solución: . . . . . . . . . x̂1 ẑ2 x̂0 ẑ1 , zˆ0 Ejemplo 2 Transformación total: i1iT Obtenga los parámetros de Denavit‐Hartenberg del siguiente manipulador. Considérese que los valores articulares {1, 2, 3} son cero. L3 x̂3 ẑ3 ẑ1 1 Offset x̂1 3 x̂2 Solución: i di i 1 ai 1 1 1 0 0 0 2 2 2 L1. . . 2 L3 0 3 3 0 i 2 ẑ2 L2 Transformación total: i1iT Transformación total: i1iT Transformación total: i1iT Transformación total: i1iT Transformación total: i1iT Obtener la matriz de transformación homogénea total que relaciona todo punto en el sistema {i} al sistema {i1}: Ejemplo 3 Obtenga los parámetros de Denavit‐Hartenberg del siguiente manipulador. Considere que el robot está dibujado en HOME. Solución: T TRx i 1 TDx ai 1 TRz i TDz di Eje 1 i 1 i zˆ0 , ẑ1 i 1 Rx i 1 Rz i iT [0, 0, 0] . . . x̂1 , xˆ2 , xˆ0 ai 1 d s i i 1 di c i 1 1 x̂3 ẑ3 Ejes 2,3 ẑ2 Ejemplo 3 Ejemplo 3 Sustituyendo los parámetros de DH, escribir las expresiones de las transformaciones homogéneas para cada vínculo 01T , 21T , 23T . 0 P 0 Si entonces 0 3 0 P? Ejemplo 3 function T=MaTran(qi,di,alfai_1,ai_1) % La función regresa en T la expresión simbólica de la matriz. T=[cos(qi) ,-sin(qi) ,0 , ai_1; sin(qi)*cos(alfai_1),cos(qi)*cos(alfai_1),-sin(alfai_1),-di*sin(alfai_1); sin(qi)*sin(alfai_1),cos(qi)*sin(alfai_1), cos(alfai_1), di*cos(alfai_1); 0 ,0 ,0 , 1]; if ~isnumeric([qi,di,alfai_1,ai_1]) T=simplify(T); end; Se puede bajar de: http://homepage.cem.itesm.mx/aaceves/MaTran.m Ejemplo 3 >> syms q1 d2 q3 L2 pi >> T01=MaTran(q1,0,0,0) T01 = [ cos(q1), -sin(q1), 0, [ sin(q1), cos(q1), 0, [ 0, 0, 1, [ 0, 0, 0, 0] 0] 0] 1] >> T12=MaTran(0,d2,pi/2,0) T12 = [ 1, 0, 0, 0] [ 0, 0, -1, -d2] [ 0, 1, 0, 0] [ 0, 0, 0, 1] >> T23=MaTran(q3,L2,0,0) T23 = [ cos(q3), -sin(q3), 0, 0] [ sin(q3), cos(q3), 0, 0] [ 0, 0, 1, L2] [ 0, 0, 0, 1] ẑ0 Ejemplo 3 x̂0 ŷ3 Tarea 4 (Ejercicio 1) x̂3 Escribir los parámetros de DH. ẑ3 ŷ0 0 3 P 0 Si entonces 0 0 P? >> P0=T01*T12*T23*[0;0;0;1] P0 = L2*sin(q1) + d2*sin(q1) - L2*cos(q1) - d2*cos(q1) 0 1 Tarea 4 (Ejercicio 2) Escribir los parámetros de DH. Tarea 4 (Ejercicio 3) Calcular la DK del Robot 3R, es decir, escribir la expresión simplificada de: 03T c123 s123 0 L1c1 L2c12 s c123 0 L1s1 L2 s12 123 0 Calcular T 3 0 0 1 0 0 0 1 0 El PUMA 560 0 3 El PUMA 560 a3 2 Robot en HOME a3 3 1 d4 d3 a2 4 d4 5 6 Eje 1 ẑ1 Participación en clase 6 Eje 2 2 ẑ2 Eje 3 3 1 ẑ3 x̂1 x̂2 x̂3 Eje 5 4 . . . ẑ5 5 x̂4 x̂5 x̂6 6 ẑ4 ẑ6 Ejes 4,6 % El nombre de este programa es: % % CinematicaPUMA560.m % clear all syms q1 q2 q3 q4 q5 q6 a2 a3 d3 d4 pi % El nombre de este programa es: % % CinematicaPUMA560.m % clear all syms q1 q2 q3 q4 q5 q6 a2 a3 d3 d4 pi T01=MaTran(q1, 0, 0, 0); T12=MaTran(q2, 0,-pi/2, 0); T23=MaTran(q3,d3, 0,a2); T34=MaTran(q4,d4,-pi/2,a3); T45=MaTran(q5, 0, pi/2, 0); T56=MaTran(q6, 0,-pi/2, 0); T01=MaTran(q1, 0, 0, 0); T12=MaTran(q2, 0,-pi/2, 0); T23=MaTran(q3,d3, 0,a2); T34=MaTran(q4,d4,-pi/2,a3); T45=MaTran(q5, 0, pi/2, 0); T56=MaTran(q6, 0,-pi/2, 0); T06=T01*T12*T23*T34*T45*T56 T06=simplify(T01*T12*T23*T34*T45*T56) T06=simplify(T01*simplify(T12*simplify(T23*simplify(... T34*simplify(T45*T56)))) % El nombre de este programa es: % % CinematicaPUMA560.m % clear all syms q1 q2 q3 q4 q5 q6 a2 a3 d3 d4 pi T01=MaTran(q1, 0, 0, 0); T12=MaTran(q2, 0,-pi/2, 0); T23=MaTran(q3,d3, 0,a2); T34=MaTran(q4,d4,-pi/2,a3); T45=MaTran(q5, 0, pi/2, 0); T56=MaTran(q6, 0,-pi/2, 0); T36=simplify(T34*T45*T56); syms s1 c1 s2 c2 s3 c3 s4 c4 s5 c5 s6 c6 s23 c23 T16=simplify(T12*T23)*T36; T06=T01*T16; T06r=subs(T06 ,{sin(q1),cos(q1)},{s1,c1}); T06r=subs(T06r,{sin(q2),cos(q2)},{s2,c2}); T06=collect(T06,[sin(q1),cos(q1)]) T06r=subs(T06r,{sin(q3),cos(q3)},{s3,c3}); T06r=subs(T06r,{sin(q4),cos(q4)},{s4,c4}); T06r=subs(T06r,{sin(q5),cos(q5)},{s5,c5}); T06r=subs(T06r,{sin(q6),cos(q6)},{s6,c6}); T06r=subs(T06r,{sin(q2+q3),cos(q2+q3)},{s23,c23}) La solución de la Cinemática Directa del Robot PUMA es: r11 r 0 21 T 6 r31 0 0 0 r12 r22 r13 r23 r32 r33 0 0 Px Py 60 R Pz [0, 0, 0] 1 P 06T 6 P 0R P 6 [0, 0, 0] P6 6 P 1 0 P6 1 0 r11 c1 c23 c4 c5c6 s4 s6 s23 s5c6 s1 s4 c5c6 c4 s6 El Yasukawa Motoman L‐3 r21 s1 c23 c4 c5c6 s4 s6 s23 s5c6 c1 s4 c5c6 c4 s6 r31 s23 c4 c5c6 s4 s6 c23 s5c6 r12 c1 c23 c4 c5 s6 s4 c6 s23 s5 s6 s1 c4 c6 s4 c5 s6 r22 s1 c23 c4 c5 s6 s4 c6 s23 s5 s6 c1 c4 c6 s4 c5 s6 r32 s23 c4 c5 sCalcular con MATLAB 6 s4 c6 c23 s5 s6 r13 c1 c23c4 s5 s23c5 s1s4 s5 r23 s1 c23c4 s5 s23c5 c1s4 s5 r33 s23c4 s5 c23c5 Px c1 a2 c2 a3c23 d 4 s23 d3 s1 Py s1 a2 c2 a3c23 d 4 s23 d3c1 Pz a3 s23 a2 s2 d 4 c23 Solución: Participación en Clase 7 Pasar el robot a posición de HOME: ẑ0 ẑ1 ẑ2 ẑ4 ẑ3 x̂0 x̂1 x̂2 x̂3 x̂4 x̂5 ẑ5 Calcular los parámetros de DH. El robot se muestra en la posición (0,‐90°,90°,‐90°,0). . . . Mediante la fórmula de transformación de DH calcularemos: r11 r 0 0 1 2 3 4 21 5T 1T 2T 3T 4T 5T r31 0 r12 r22 r32 r13 r23 r33 0 0 Px Py 50 R Pz [0, 0, 0] 1 0 PO 5 1 Gracias a ella, todo punto definido en el sistema coordenado {5} se pueden escribir a {0}: P 0 P 5T 1 1 0 5 0 P 50 R 1 [0, 0, 0] 0 P 50 R 5 P 0 PO 5 0 PO 5 5 P 1 1 % Este programa muestra las matrices de transformación para el % Yasukawa Motoman L-3 que están reportadas en la notas. % % El nombre de este programa es: % % CinematicaYasukawaMotomanL3.m clear all syms q1 q2 q3 q4 q5 L2 L3 pi T01=MaTran(q1,0, 0, 0); T12=MaTran(q2,0,-pi/2, 0); T23=MaTran(q3,0, 0,L2); T34=MaTran(q4,0, 0,L3); T45=MaTran(q5,0,-pi/2, 0); T05=T01*simplify(T12*T23*T34)*T45 Robotic Toolbox c1c234c5 s1s5 c1c234 s5 s1c5 c1s234 c1 L2c2 L3c23 s1s234 s1 L2c2 L3c23 0 1c234 s5 c1c5 s1c234c5 c1s5 sCalcular con MATLAB T 5 s234c5 s234s5 c234 L2 s2 L3s23 0 0 0 1 Donde: c234 cos 2 3 4 s234 sin 2 3 4 NOTA: Utilizar lo aprendido hasta ahora y determinar la Cinemática Directa del robot del Proyecto Final. Es VITAL que empiecen YA!!!. %EL ROBOT PUMA clear all %EL ROBOT YASUKAWA MOTOMAN clear all a2=0.431; a3=0.020; d3=0.149; d4=0.433; L(1)=Link([0,0 ,0 , 0,0],'modified');%[theta,d,a,alfa,0=R/1=P] L(2)=Link([0,0 ,0 ,-pi/2,0],'modified'); L(3)=Link([0,d3,a2, 0,0],'modified'); L(4)=Link([0,d4,a3,-pi/2,0],'modified'); L(5)=Link([0,0 ,0 , pi/2,0],'modified'); L(6)=Link([0,0 ,0 ,-pi/2,0],'modified'); L2=0.500; L3=0.500; L(1)=Link([0,0,0 , 0,0],'modified');%[theta,d,a,alfa,0=R/1=P] L(2)=Link([0,0,0 ,-pi/2,0],'modified'); L(3)=Link([0,0,L2, 0,0],'modified'); L(4)=Link([0,0,L3, 0,0],'modified'); L(5)=Link([0,0,0 ,-pi/2,0],'modified'); qlimit=pi*[-1 1; -1 1; -1 1; -1 1; -1 1]; q0=[0 0 0 0 0]; qlimit=pi*[-1 1; -1 1; -1 1; -1 1; -1 1; -1 1]; q0=[0 0 0 0 0 0]; MyRobot1=SerialLink(L,'name','El PUMA','qlim',qlimit); MyRobot1.teach(q0) MyRobot1=SerialLink(L,'name','El YASUKAWA','qlim',qlimit); MyRobot1.teach(q0) hold on trplot(eye(4),'frame','0','color','k') hold off hold on trplot(eye(4),'frame','0','color','k') hold off >>elpuma Robotic Toolbox Transformación homogénea total Base‐Tool: T B0T 06T W6T B W W 6 T W=Tool Frame 0 6 T 0 B T B=Base Frame Robotic Toolbox %EL ROBOT YASUKAWA MOTOMAN clear all Robotic Toolbox %EL ROBOT PUMA clear all L2=0.500; L3=0.500; L4=0.2; L(1)=Link([0,0,0 , 0,0],'modified'); L(2)=Link([0,0,0 ,-pi/2,0],'modified'); L(3)=Link([0,0,L2, 0,0],'modified'); L(4)=Link([0,0,L3, 0,0],'modified'); L(5)=Link([0,0,0 ,-pi/2,0],'modified'); %[theta,d,a,alfa,0=R/1=P] a2=0.431; a3=0.020; d3=0.149; d4=0.433; L(1)=Link([0,0 ,0 , 0,0],'modified'); % [theta,d,a,alfa,0=R/1=P,offset] L(2)=Link([0,0 ,0 ,-pi/2,0],'modified'); L(3)=Link([0,d3,a2, 0,0],'modified'); L(4)=Link([0,d4,a3,-pi/2,0],'modified'); L(5)=Link([0,0 ,0 , pi/2,0],'modified'); L(6)=Link([0,0 ,0 ,-pi/2,0],'modified'); qlimit=pi*[-1 1; -1 1; -1 1; -1 1; -1 1]; q0=[0 0 0 0 0]; MyRobot1=SerialLink(L,'name','El YASUKAWA','qlim',qlimit); MyRobot1.tool=[eye(3),[0;0;L4];0 0 0 1]; MyRobot1.base=[eye(3),[0;0;1 ];0 0 0 1]; MyRobot1.plot(q0,'workspace', [-2 2 -2 2 0 2]); MyRobot1.plot(q0,'floorlevel', 0); MyRobot1.teach(q0) % Robot interactivo con Teach %MyRobot1.plot(q0) % Dibuja el robot en 3D %MyRobot1.fkine(q0) % Entrega la Cinemática Directa qlimit=pi*[-1 1; -1 1; -1 1; -1 1; -1 1; -1 1]; q0=[0 0 0 0 0 0]; MyRobot1=SerialLink(L,'name','El PUMA','qlim',qlimit); MyRobot1.tool=[eye(3),[0;0;0.2];0 0 0 1]; MyRobot1.base=[eye(3),[0;0;1];0 0 0 1]; MyRobot1.plot(q0,'workspace', [-1.5 1.5 -1.5 1.5 0 2]); MyRobot1.plot(q0,'floorlevel', 0); MyRobot1.teach(q0) hold on; trplot(eye(4),'frame','0','color','k'); hold off hold on trplot(eye(4),'frame','0','color','k') hold off >>elyasu >>elpuma Relación de espacios Espacio de actuador Normalmente un robot de n GDL tiene n variables articulares formando un vector columna definido en el espacio articular. Los motores y servomotores se utilizan en ROBOTICA para producir movimiento de piezas y articulaciones mecánicas. En general cada articulación es accionada por un actuador, sin embargo, no siempre es el caso. Por ejemplo, dos motores accionan una flecha, un actuador lineal acciona una articulación rotacional. Es útil entonces conocer la relación entre la posición del actuador y la posición de la articulación. IK f -1 Espacio articular Espacio de actuador f Espacio cartesiano DK Servomotores SSC‐32 Servo Controller http://www.lynxmotion.com/p‐395‐ssc‐32‐servo‐controller.aspx http://www.robodacta.mx/index.php?dispatch=products.view&product_id=29885 Servomotores PWM=0.3ms q=170grados PWM=1.2ms q=85grados PWM=2.1ms q=0grados PWM=0.3ms q=‐10grados PWM=1.2ms q=‐100grados PWM=2.1ms q=‐180grados Servomotores Servomotores En el caso más sencillo, la relación Espacio de actuador vs. Espacio articular es una función lineal que se puede conocer si se realizar una tabla y usar ajuste de curva (Ej. Mínimos cuadrados). Valor actuador (x) q1 [°] q2 [°] … qn [°] 0x000 0x001 … 0xFFF qi fi x mi x bi Actuadores Dynamixel http://learn.trossenrobotics.com/arbotix.html http://www.trossenrobotics.com/p/arbotix‐robot‐controller.aspx Actuadores Dynamixel Goal Position (dirección #30): Es un valor entre 0 a 1024 correspondiente a la posición angular deseada. Cada unidad equivale a 0.29 grados. Ejemplo: dxl_write_word(id,address,value) 150grados 0grados 512 1024 300grados +150grados Para el Proyecto 1) Calcular la DK del robot del Proyecto y comprobarla en MATLAB. 2) Hacer los experimentos necesarios con el robot (del proyecto final) para caracterizar cada uno de los servomotores y conocer sus respectivos mapeo: Espacio actuador Espacio articular 3) Investigar como se usan (conectan y programan) las tarjetas controladoras de servomotores del robot del proyecto: a) Hexápodos de Lynxmotion: http://www.lynxmotion.com/p‐395‐ssc‐32‐servo‐controller.aspx http://www.lynxmotion.com/c‐153‐botboarduino.aspx http://www.lynxmotion.com/c‐101‐ch3‐r.aspx b) Humanoides Bogobots: http://support.robotis.com/en/product/auxdevice/controller/opencm9.04.htm http://www.trossenrobotics.com/open‐cm‐904c http://support.robotis.com/en/product/auxdevice/controller/opencm_485_exp.htm c) Widow Robotic Arm II: https://www.trossenrobotics.com/p/arbotix‐robot‐controller.aspx http://learn.trossenrobotics.com/ 0 0grados ‐150grados
© Copyright 2024