0% encontró este documento útil (0 votos)
11 vistas26 páginas

Diseño de Brazo Robótico de 3 Grados

Cargado por

Bella Charlote
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
11 vistas26 páginas

Diseño de Brazo Robótico de 3 Grados

Cargado por

Bella Charlote
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD MAYOR DE SAN SIMON

FACULTAD DE CIENCIAS Y TECNOLOGIA

ROBOTICA

Brazo Robótico

ESTUDIANTES: Duran Meneses Sebastian Eduardo


Gonzales Camargo Pablo Andrés
Peñaranda Reyes Alejandro
DOCENTE: Arispe Santander Alberto
CARRERA: Ing. Electrónica
SEMESTRE: II/2019
FECHA: 09-01-20
Brazo Robótico de tres grados de libertad
Objetivo.
Este proyecto tiene como objetivo diseñar y construir un brazo Robótico de tres grados de
libertad, con dos movimientos rotacionales y uno prismático, haciendo uso de cinemática directa e
inversa para un mejor resultado.

Para realizar este proyecto se hará uso del software matemático Matlab y la plataforma Arduino
para el control Electrónico.

Introducción

El avance de la tecnología es imparable y trae a menudo diferentes tipos de máquinas e inventos


que facilitan los trabajos. Uno de ellos es el brazo robótico que hoy en día se emplea en grandes
fábricas. Se emplea para sustituir y ampliar funciones que realizaría un brazo humano. Sus
funciones, así como las aplicaciones que puede llegar a tener, se van desarrollando día a día.
Permite, de esta manera, que los trabajos mecánicos en las fábricas sean más sencillos para sus
trabajadores, además evita que se produzcan accidentes laborales relacionados con la carga de
peso, entre otras. No pierdas la oportunidad de estudiar robótica y formarte en este ámbito.

¿Qué es el brazo robótico?


Para comenzar, tienes que saber qué es el brazo robótico y cuál es su origen. Se trata de un brazo
mecánico que se puede programar y sus funciones principales son parecidas a las de un brazo
humano. Este mecanismo puede ser parte de un robot más complejo o ser independiente.
Sus diferentes partes se unen y conectan para hacer sus movimientos de rotación y traslación. Con
estos movimientos, los usos de estos brazos se amplían ya que permiten mayor rapidez y
desplazamiento de los objetos que transportan. Incluso se pueden realizar tareas más delicadas.
Entre ellas, el ajuste de piezas o de tornillos en diferentes estructuras.
El peso que pueden soportar estas máquinas supera al de los brazos humanos, ya que es posible
que levanten piezas de metal pesado. Dada su fabricación con metales diferentes y su anclaje a
una superficie, estas herramientas son una incorporación necesaria en las fábricas actualmente.
La mano robótica
Para finalizar la estructura de este brazo, hay que hablar de la mano robótica. Al final de la
estructura hay otra añadida, que simula la forma de una mano y cumple con las mismas funciones,
solo que mejoradas.

Esta mano se creó para una gran variedad de funciones. Dado que tiene una precisión mayor se
puede llegar a soldar, ajustar o girar.
Hay varios modelos también dependiendo de la industria en la que se necesite. Si las tareas son
más rudas o requieren una mayor perfección, es posible que esta mano cambie su forma.

Tipos de brazos robóticos

Una vez visto qué es esta herramienta, procedemos a hablar de los tipos de brazos robóticos que
puedes encontrar en las industrias y fábricas. Estos facilitan el trabajo de los empleados de las
industrias y aumentan el rendimiento de las mismas. Así, permiten realizar tareas complejas de
levantamiento o traslados de pesos que resultan costosos o peligrosos para los humanos.

Robot cartesiano
Este robot se caracteriza por sus ejes, que coinciden con los tres ejes cartesianos. Se emplea en
funciones de soldadura, en operaciones de ensamblado, manipulación de objetos e incluso
aplicación de impermeables.

Robot esférico o polar


Los ejes de este robot forman un sistema polar de coordenadas. Es decir en un círculo un eje que
va de arriba a abajo y otro de derecha a izquierda (como norte-sur este-oeste). Su origen se
encuentra en el primer robot Unimate instalado en una fábrica coches, la General Motors. Este
realizaba trabajos de soldadura, fundición y manipulación de máquinas y herramientas.
Este robot permitió que en la fábrica hubiesen menos accidentes al hacerse cargo de trabajos que
tienen un alto nivel de peligro. Tareas como la fundición (altas temperaturas) las realizaba este
robot. Esto permitía que los trabajadores pudiesen realizar otras funciones y acabar el trabajo con
mayor rapidez y eficacia.

Robot articulado
El robot articulado tiene, como mínimo, tres articulaciones que giran sobre sí mismas, lo que le
permite llevar a cabo tareas más complejas. La mayor rotación permite que pueda realizar desde
soldaduras hasta pintar con spray. Se emplea, con frecuencia, en la industria automovilística. Y sus
funciones, como hemos mencionado, pueden variar aunque se suelen destinar a las de mayor
precisión dada su capacidad de giro.

Robot cilíndrico
Sus ejes forman un sistema de coordenadas de círculos concéntricos que le permiten efectuar
tareas como la manipulación de máquinas. Pero, además, puede realizar funciones de soldadura
de punto. También manejan maquinaria de fundición a presión y operaciones de ensamblaje.
Robot SCARA
Es un robot con dos articulaciones rotatorias paralelas, que permiten que pueda hacer trabajos
de pick and place, que significa coger y dejar. Es decir, las principales funciones de este tipo de
brazo son las de recoger objetos y dejarlos en otros lugares. En este caso tienes que fijarte en la
fuerza que pueden tener estas máquinas. Pueden recoger metales pesados o estructuras
imposibles de mover por una sola persona y moverlas.

Robot paralelo
Por último, destacar el robot paralelo cuyos brazos tienen articulaciones en forma de prisma. Su
uso principal está en la plataforma móvil desde la que se trabajan las simulaciones de vuelo. Su
alto nivel de rotación permite una mayor variedad de movimientos para que la simulación sea más
compleja.

Industrias que emplean los brazos robóticos


Las fábricas de coches y las grandes industrias de ensamblado y creación de estructuras emplean
este tipo de brazo robótico.

En la automovilística, el ensamblaje o ajuste de piezas es un lugar recurrente para emplazar estas


máquinas. Sin embargo, también pueden servir para el pick and place. Es decir, para transportar
materiales pesados de un lugar a otro o colocarlos dentro de la estructura del automóvil.
Además, los brazos con rotaciones más perfeccionadas pueden realizar trabajos de pintado de los
coches una vez terminados.

Pero esta industria no es la única ya que el brazo robótico ha llegado hasta el espacio. En el
Transbordador Espacial se encuentra un Sistema de Manipulación Remota que es un conjunto
de brazos mecánicos. Estos permiten controlar el sistema por los humanos desde otro punto. Sus
funciones van desde la inspección de satélites hasta la carga y descarga de material.

El brazo robótico es una innovación tecnológica que está presente en multitud de industrias en la
actualidad. Te llevar a cabo variados tipos de trabajo. Bien sean meramente de carga de objetos
pesados o tareas de precisión. Esta herramienta es una forma de mejorar la eficiencia del trabajo
en las fábricas y mejorar la calidad de vida de los empleados.

Marco teórico
Morfologia del Robot

Un robot está formado por los siguientes elementos: estructura mecánica, transmisiones, sistema
de accionamiento, sistema sensorial, sistema de control y elementos terminales
Tipos de Articulaciones
Ejemplo de Robots según sus articulaciones
Ejemplos esquemáticos

Espacio Articular y Operacional


Matrices de rotación

Matrices de rotación

1 0 0
( , ) = 0 −
0

0
( , ) = 0 1 0
− 0

− 0
( , ) = 0
0 0 1

Matriz homogénea
La matriz homogénea es el producto de matrices de transformación de rotación y traslaciones (es
el producto entre la matriz identidad y el vector traslación) como se define a continuación:
En donde dos articulaciones se relacionan por un vínculo o eslabón por la matriz de rotación
alrededor del eje con ángulo , por el producto de la matriz de traslación (matriz unitaria o
identidad en producto por vector de traslación) a lo largo del con una distancia las otras
posiciones de los otros ejes son cero, luego por el producto de la matriz de traslación a lo largo de
con una distancia de y por ultimo un producto por la matriz de rotación alrededor del eje
con ángulo .


=
0
0 0 0 1

Algoritmo de Denavit-Hartenberg
Para el desarrollo de la cinemática directa se debe obtener los parámetros de Denavit-
Hartenberg, teniendo en cuenta que las articulaciones conectan a los eslabones − 1
a
para que la articulación mueva al eslabón . Los parámetros de Denavit-Hartenberg
se pueden determinar de dos maneras, con el método estándar o modificado. El
algoritmo de Denavit-Hartenberg tiene los siguientes pasos para su construcción
sistemática:

1. Identificar cuantas articulaciones tiene el robot, (es según los grados de libertad que
tiene el robot).
2. El número de articulaciones comienza en 1 hasta n comenzando por la base fija y
terminando con el efector final.
3. Establecer el sistema de coordenadas en la base según la regla de la mano derecha
(dextrógiro), en donde está situado a lo largo del eje de movimiento de la
articulación 1.
4. Enumerar los eslabones comenzando con 0 como el eslabón de la base fija hasta el
eslabón n.
5. Asignar el eje de rotación para cada articulación rotativa.

6. Asignar los ejes en la dirección perpendicular o normal común entre y ,


cuando están paralelos.
7. Asignar los ejes de tal manera que cumpla con la regla de la mano derecha.
8. Para el ultimo sistema − 1 no aplica la convención mencionada ya que no existe
un eslabón i por lo que puede elegirse el sistema de forma arbitraria.
9. Determinar los parámetros de Denavit-Hartenberg, en donde el eslabón están
definido por dos parámetros ( para la longitud y para la torsión) y la articulación
está definido por dos parámetros ( la distancia de un sistema de coordenadas del
eslabón hasta la articulación y el ángulo de rotación de la articulación). Se los
obtiene siguiendo los siguientes puntos:
a) es la distancia de a medida sobre el eje , longitud del eslabón.
b) es el ángulo formado entre a medido sobre el eje , ángulo de
torsión.
c) es la distancia de a o desde el origen del sistema − 1 a medido
a lo largo del eje , distancia de desplazamiento de la articulación.
d) es el ángulo formado entre a medido sobre el eje , ángulo de
la articulación.
Según como estén los ejes y , y no ejes son paralelos en donde y no son ejes
paralelos o cuando y son ejes paralelos, y son ejes paralelos, para determinar
los parámetros de Denavit - Hartenberg.
Cinemática inversa
El objetivo del problema cinemático inverso consiste en encontrar los valores que deben
adoptar las coordenadas articulares del robot q = [q1, q2, ..., qn] que su extremo se
posicione y oriente según una determinada localización espacial (p, [n, o, a]). Así cómo es
posible abordar el problema cinemático directo de una manera sistemática a partir de la
utilización de matrices de transformación homogéneas, e independientemente de la
configuración del robot, no ocurre lo mismo con el problema cinemático inverso, siendo el
procedimiento de obtención de las ecuaciones fuertemente dependiente de la
configuración del robot.

Proyecto
Materiales
-Servo Motor
Un servomotor (o servo) es un tipo especial de motor con características especiales de control de
posición. Al hablar de un servomotor se hace referencia a un sistema compuesto por componentes
electromecánicos y electrónicos.

El motor en el interior de un servomotor es un motor DC común y corriente. El eje del motor se


acopla a una caja de engranajes similar a una transmisión. Esto se hace para potenciar el torque del
motor y permitir mantener una posición fija cuando se requiera. De forma similar a un automóvil, a
menor mayor velocidad, menor torque. El circuito electrónico es el encargado de manejar el
movimiento y la posición del motor.
Motor paso a paso

Un motor paso a paso es un dispositivo electromecánico que convierte una serie de pulsos eléctricos
en desplazamientos angulares, lo que significa que es capaz de girar una cantidad de grados (paso
o medio paso) dependiendo de sus entradas de control.

Los motores paso a paso son ideales para la construcción de mecanismos en donde se requieren
movimientos muy precisos. La característica principal de estos motores es el hecho de poder
moverlos un paso a la vez por cada pulso que se le aplique. Este paso puede variar desde 90° hasta
pequeños movimientos de 1.8°, Es por eso que ese tipo de motores son muy utilizados, ya que
pueden moverse a deseo del usuario según la secuencia que se les indique a través de un
microcontrolador.

Estos motores poseen la habilidad de quedar enclavados en una posición si una o más de sus bobinas
está energizada o bien total mente libres de corriente.
Arduino

El Arduino es una placa basada en un microcontrolador ATMEL. Los microcontroladores


son circuitos integrados en los que se pueden grabar instrucciones, las cuales las escribes con el
lenguaje de programación que puedes utilizar en el entorno Arduino IDE. Estas instrucciones
permiten crear programas que interactúan con los circuitos de la placa.

El microcontrolador de Arduino posee lo que se llama una interfaz de entrada, que es una
conexión en la que podemos conectar en la placa diferentes tipos de periféricos. La información
de estos periféricos que conectes se trasladará al microcontrolador, el cual se encargará de
procesar los datos que le lleguen a través de ellos.

Software

Matlab

MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es un sistema de cómputo


numérico que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación
propio (lenguaje M). Está disponible para las plataformas Unix, Windows, Mac OS X y GNU/Linux

Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de datos y


funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la
comunicación con programas en otros lenguajes y con otros dispositivos hardware. El paquete
MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones, a saber, Simulink
(plataforma de simulación multidominio) y GUIDE (editor de interfaces de usuario - GUI). Además,
se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes); y las de
Simulink con los paquetes de bloques (blocksets).
Implementación
Matrices de transformación homogénea
Previo a la resolución de la cinemática inversa, son necesarios hallar las MTH. Para ello se
usó el algoritmo de Denavit Hartenberg que nos permite conocer los parámetros DH, a
partir de los cuales se logra conocer las MTH.
Para el modelo planteado mostrado en la figura, se encontraron los parámetros theta, d, a,
alpha haciendo uso del algoritmo de Denavit Hartenberg para la obtención del modelo
cinemático directo.

No. Articulación
1 L1 0 -90 º
2 0 0 90º
3 L2+L3 0

Haciendo uso de la matriz que relaciona a cada uno de los eslabones del manipulador, se
encontró las matrices , y .


=
0
0 0 0 1

1 0 − 1 0 0 0 0 0
=
1 0 1 0
= 0− 0 = 0 − 0
0−1 0 1 0 1 0 0 0 0 1 2
0 0 0 1 0 0 0 1 0 0 0 1
= ∗ ∗
C1 ∗ C2 ∗ C3 − S1 ∗ S3 −C3 ∗ S1 − C1 ∗ C2 ∗ S3 C1 ∗ S2 L2 ∗ C1 ∗ S2
C1 ∗ S3 + C2 ∗ C3 ∗ S1 C1 ∗ C3 − C2 ∗ S1 ∗ S3 S1 ∗ S2 L2 ∗ S1 ∗ S2
= −C3 ∗ S2 S2 ∗ S3 C2 l1 + L2 ∗ C2
0 0 0 1
Donde los parámetros de la cuarta columna de la matriz T nos indican la posición de
extremo final del manipulador a través de los valores de x, y, z.
= ∗ cos( ) ∗ sen( )
= ∗ sen( ) ∗ sen( )
= + ∗ cos( )
Siguiendo lo indicado arriba, se obtuvieron nuestras MTH:
A = [cos(q1),0,sin(q1) ,0;
sin(q1),0,-cos(q1),0;
0 ,1,0 ,L1;
0 ,0,0 ,0];

B = [-sin(q2),0,cos(q2),0;
cos(q2) ,0,sin(q2),0;
0 ,1,0 ,0;
0 ,0,0 ,1];

C = [1,0,0,0;
0,1,0,0;
0,0,1,L2+q3;
0,0,0,1];

Resolución del problema cinemático inverso a partir de la matriz de transformación


homogénea (METODO USADO EN ESTE PROYECTO)

Puesto que anteriormente contábamos con las matrices para la cinemática directa del
manipulador y estas son:

1 0 − 1 0 0 0 0 0
=
1 0 1 0
= 0− 0 = 0 − 0
0−1 0 1 0 1 0 0 0 0 1 2
0 0 0 1 0 0 0 1 0 0 0 1
= ∗ ∗
C1 ∗ C2 ∗ C3 − S1 ∗ S3 −C3 ∗ S1 − C1 ∗ C2 ∗ S3 C1 ∗ S2 L2 ∗ C1 ∗ S2
C1 ∗ S3 + C2 ∗ C3 ∗ S1 C1 ∗ C3 − C2 ∗ S1 ∗ S3 S1 ∗ S2 L2 ∗ S1 ∗ S2
= −C3 ∗ S2 S2 ∗ S3 C2 l1 + L2 ∗ C2
0 0 0 1

Para hallar ‘q1’ utilizaremos la siguiente expresión:


( ) = ∗
Donde:
2∗ 3 − 2∗ 3 2 2∗ 2
3∗ 2 − 2∗ 3 − 2 − 2∗ 2
∗ =
3 3 0 0
0 0 0 1
1 1 0 0
0 0 −1 1
( ) =
− 1 1 0 0
0 0 0 1

=
0 0 0 1
Entonces:
( ) ∗ = ∗

∗ 1+ ∗ 1 ∗ 1+ ∗ 1 ∗ 1+ ∗ 1 ∗ 1+ ∗ 1
− − 1−
=
∗ 1− ∗ 1 ∗ 1− ∗ 1 ∗ 1− ∗ 1 ∗ 1− ∗ 1
0 0 0 1
2∗ 3 − 2∗ 3 2 2∗ 2
3∗ 2 − 2∗ 3 − 2 − 2∗ 2
3 3 0 0
0 0 0 1
Tomando el elemento (3,4) de matriz de ambas partes de la igualdad se tiene:
− =0
tan( ) =
= 2( , )

Para hallar ‘q2’ utilizaremos la siguiente expresión:

( ) ∗( ) ∗ =
Donde:
0 0 2 2 0 0
= 0 − 0 ; ( ) = 0 0 1 0
0 0 1 2 2 − 2 0 0
0 0 0 1 0 0 0 1
Reutilizando y( ) del cálculo para de ‘q1’ tenemos para:
( ) ∗( ) ∗ =
∗ 1 2− ∗ 2+ ∗ 2 1 ∗ 1 2− ∗ 2+ ∗ 2 1 ∗ 1 2− ∗ 2+ ∗ 2 1 1∗ 2− ∗ 2+ ∗ 1 2+ ∗ 2 1
∗ 1− ∗ 1 ∗ 1− ∗ 1 ∗ 1− ∗ 1 ∗ 1− ∗ 1
∗ 2+ ∗ 1 2+ ∗ 1 2 ∗ 2+ ∗ 1 2+ ∗ 1 2 ∗ 2+ ∗ 1 2+ ∗ 1 2 ∗ 2− 1∗ 2+ ∗ 1 2+ ∗ 1 2
0 0 0 1
0 0
= 0 − 0
0 0 1 2
0 0 0 1

Tomando el elemento (1,4) de matriz de ambos lados de la igualdad, se tiene:


− + + =0

( − )+ + =0

1+ 1
tan =−
1−
2

considerando que por:


− =0

− = + −2 =0

1− + 1− =2

+ +2 = + ⟹

+ = +

Por lo tanto:

= 2 ( + , − )

Debido a que ‘q3’ no influye en el calculo de la cinematica inversa, q3 puede adquirir


cualquier valor, para nuestro caso se le asigna el valor de q1 a q3.
Como se explico en el video, a continuacion se tiene todo el procedimiento anterior
convertido en codigo para matlab:
function [q1,q2,q3] = fnc_cinv(P)
%Esta funcion realiza la cinematica inversa de nuestro robot apartir de los
%datos de las coordenadas HOMOGENEAS de un punto 'P' (Px,Py,Pz,1).
%Se hace la cinematica inversa a partir de las Matrices de Transformacion
Homogenea (MTH).
%Devuelve los q1,q2,q3 como funciones de Px,Py,Pz.
if nargin == 1
mensaje = 'SINGULARIDAD......PUNTO INALCANZABLE!!!!!';
L1 = 25; L2 = 18.5; %L1 y L2 son longitudes constantes
propias del robot.
syms q1 q2 q3
A=[cos(q1),0,sin(q1),0; sin(q1),0,-cos(q1),0; 0,1,0,L1; 0,0,0,0];
B=[-sin(q2),0,cos(q2),0; cos(q2),0,sin(q2),0; 0,1,0,0; 0,0,0,1];
C=[1,0,0,0; 0,1,0,0; 0,0,1,L2+q3; 0,0,0,1];
BC = B*C; %producto MTH B y C

Ai = tmatgral(A); %Ai es la inversa de A.


Bi = tmatgral(B); %Bi es la inversa de B.

BiAi = Bi*Ai; %Producto de MTH inversas de B y A.

ec1 = 0; ec2 = 0; ec3 = 0; %Las 3 ecuaciones inician vacias.


for k=1:4 %k marca la fila, la columna siempre
sera 4.
if(BC(k,4) == 0 && ec1 == 0)
ec1 = Ai(k,1:4) * P; %obtenemos la primera ecuacion.
end
if(C(k,4) == 0 && ec2 == 0)
ec2 = BiAi(k,1:4) * P; %obtenemos la segunda ecuacion.
end
if(C(k,4) == L2+q3 && ec3 == 0)
ec3 = (BiAi(k,1:4) * P) - L2 -q3; %obtenemos la tercera ecuacion.
end
end

[q1,q2,q3] = solve(ec1,ec2,ec3,q1,q2,q3); %Resolviendo el sistema se obtiene


q1,q2 en [rad] y q3.
q1 = round(vpa(real(vpa(q1*180/pi,4)),4)) %Se transforma de
radianes a grados.
q2 = round(vpa(real(vpa(q2*180/pi,4)),4)) %Se transforma de
radianes a grados.
q3 = round(vpa(real(vpa(q3,4)),4)) %No se transforma ya
que es distancia.
q1 = int16(q1(1,1))
q2 = int16(q2(1,1))
q3 = int16(q3(1,1))

if(q1<0)
q1=360+q1;
end
if((q2>0) && (q2<210) && (q3>=0) && (q3<6.5))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
EnviarAngArd(q1, q2, q3);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
else
disp(mensaje)
end
end
end
function res = tmatgral(m)
%Esta funcion obtiene la matriz traspuesta de la MTH 'm' (res).
%Tambien obtiene el vector posicion de la nueva matriz obtenida.
nt = [m(1,1) m(2,1) m(3,1)];
ot = [m(1,2) m(2,2) m(3,2)];
at = [m(1,3) m(2,3) m(3,3)];
p = [m(1,4); m(2,4); m(3,4)];
pt = [-nt*p; -ot*p; -at*p;];
res = [[nt;ot;at;[0 0 0]] [pt;1]];
end

Comunicación Matlab-Arduino
El código siguiente nos ayuda a la conexión de Matlab con Arduino, el cual esta conectado
al COM7 y se envia 3 caracteres que fueron previamente convertidos.
function EnviarAngArd(a,b,c)
%Seleccionamos y configuraoms la frecuencia de
%comunicaion con arduino
res=[a,b,c];
a=char(res)
s=serial('COM7','BaudRate',9600);
%Abrimos el puerto
fopen(s);
pause(2);
%Enviamos el angulo
fprintf(s,'%f\n',a);

% q1=fscanf(s,'%d')
% q2=fscanf(s,'%d')
% cq3=fscanf(s,'%d')
%Cerramos el puerto serial
fclose(s);
Código en Arduino
#include <Stepper.h> sSteps = sAng*0.56;

#include <Servo.h> [Link](-sSteps);

delay(3000);

const int stepsPerRevolution = 200; }

Stepper myStepper(stepsPerRevolution, }
8,9,10,11); // inicializa la libreria 'stepper' en los
pines 8 a 11
void rCodo(float cAng){
Servo cServo; // crea el objeto servo
if(cAng>90){
Servo pServo;
cSteps = 2.79*90;
float sAng, cAng, vel, cSteps, dPrism, grow, shrink,
shrinkI, sSteps, eAng, sStepsI, pSteps; for(int i=0;i<cSteps;i++){
//sAng(Angulo del steper); cAng(Angulo del
codo); dPrism(distancia del primastico) vel = 180;

[Link](vel);

delay(4);

void setup() { vel = 90;

[Link](7); // vincula el servo al pin digital [Link](vel);


9
delay(10);
[Link](6);
}
// establece la velocidad en 60rpm
eAng = cAng-90;
[Link](10);
cSteps = 1.46*eAng;
// inicializa el puerto serial
for(int i=0;i<cSteps;i++){
[Link](9600);
vel = 180;
}
[Link](vel);

delay(4);
void rSteper(float sAng){
vel = 90;
if(sAng>180){
[Link](vel);
sSteps = (360-sAng)*0.56;
delay(10);
[Link](sSteps);
}
delay(3000);
}
}
else{
else{
if(cAng == 90){
cSteps = 2.79*90; vel = 90;

for(int i=0;i<cSteps;i++){ [Link](vel);

vel = 180; delay(10);

[Link](vel); }

delay(4); }

vel = 90;

[Link](vel); void initialR1(float sAngI){

delay(10); if(sAng>180){

} sSteps = (360-sAng)*0.56;

} [Link](-sSteps);

else{ delay(3000);

cSteps = 2.79*cAng; }

for(int i=0;i<cSteps;i++){ else{

vel = 180; sSteps = sAng*0.56;

[Link](vel); [Link](sSteps);

delay(4); delay(3000);

vel = 90; }

[Link](vel); }

delay(10);

} void initialR2(float cAngI){

if(cAngI>90){

} eAng = cAngI-90;

//En subida para vel 0 (horario)

void mPrism(float dPrism){ cSteps = 2.28*eAng;

sSteps = 18*dPrism; for(int i=0;i<cSteps;i++){

for(int i; i<sSteps; i++){ vel = 0;

//servo 100% CCW (equivalente a angulo 0º) [Link](vel);


(crece)
delay(4);
vel = 0;
vel = 90;
[Link](vel);
[Link](vel);
delay(400);
delay(10);
} pSteps = 20*dPrism;

//En bajada para vel 0 (horario) for(int i; i<pSteps; i++){

if(cAng==90){ //servo 100% CCW (equivalente a angulo 0º)


(crece)
cSteps = 1.39*90;
vel = 180;
for(int i=0;i<cSteps;i++){
[Link](vel);
vel = 0;
delay(400);
[Link](vel);
vel = 90;
delay(4);
[Link](vel);
vel = 90;
delay(10);
[Link](vel);
}
delay(10);
delay(500);
}
}
}

}
void loop() {
else{
if ([Link]()>0){ //si hay datos
//En bajada para vel 0 (horario)
//esperemos a que se terminen de recibir
cSteps = 1.39*cAngI;
delay(50);
for(int i=0;i<cSteps;i++){
//leemos el primer datos –byte-
vel = 0;
sAng = int([Link]());
[Link](vel);
cAng = int([Link]());
delay(4);
dPrism =int([Link]());
vel = 90;
delay(5000);
[Link](vel);
//limpiamos el serial. [Link]
delay(10);
[Link]();
}
[Link](sAng);
}
delay(50);
}
[Link](cAng);

delay(50);

[Link](dPrism);
void initialP(float dPrismI){
}
//Si es mayor a 0 tiene q encogerse
if(sAng== 'c'&&cAng=='c'&&dPrism=='c'){ for(int i=0;i<pSteps;i++){

pSteps = 20*dPrism; vel = 0;

for(int i=0;i<pSteps;i++){ [Link](vel);

vel = 180; delay(400);

[Link](vel); vel = 90;

delay(400); [Link](vel);

vel = 90; delay(10);

[Link](vel); }

delay(10); delay(10000);

} pSteps = 25*dPrism;

delay(3000); for(int i=2;i<pSteps;i++){

initialR2(cAng); vel = 180;

delay(3000); [Link](vel);

initialR1(sAng); delay(400);

delay(3000); vel = 90;

} [Link](vel);

else{ delay(10);

if(sAng==0&&cAng==0&&dPrism==0){ }

} delay(3000);

else{ initialR2(cAng);

// Primer movimineto rotacional (Steper) delay(3000);

rSteper(sAng); initialR1(sAng);

delay(3000); delay(3000);

//Segundo movimiento rotacional }

rCodo(cAng); }

delay(3000); }

//Movimiento prismatico

pSteps = 25*dPrism;
Anexos
Conclusiones
El algoritmo de Denavit-Hartenberg demuestra ser el mas sencillo y mas usado para hallar las
matrices de transformación homogenea y por tanto la cinematica inversa (y hasta la directa).

La resolución de la cinemática inversa muestra que las soluciones para las articulaciones en varios
casos no siempre es una, puede ser hasta mas de 2 lo que nos lleva a la conclusión de la
minuciosidad con que deben encontrarse y configurarse las restricciones y que son muy
importantes.

La precisión del movimiento de las articulaciones depende mucho del tipo de motor que se use
para lograr su movimiento.

Bibliografía
Barrientos, Peñín et. al. “Fundamentos de Robótica”. Ed. McGrawHill
Lung-Wen Tsai. “Robot Analysis: the mechanics of serial and parallel manipulators”. Ed. Wiley
Interscience.
Murray, Li & Sastry. “A mathematical introduction to robotic manipulation”. Ed. CRC.
Corke Peter I., “Robotics Toolboox”.

También podría gustarte