Академический Документы
Профессиональный Документы
Культура Документы
REGIONAL MENDOZA
LARMA
1 de Octubre
ROBOT
MANIPULADOR
MENTOR 2011
El presente proyecto se enfoca al control de un robot manipulador por
medio de una computadora. Sin disponer de la información de software
Educational Robots
ni de hardware del fabricante se procederá a diseñar y elaborar los
circuitos, interfaz y programas que conformaran el sistema de control Cybernetic Applications
del robot manipulador, así como la integración del mismo.
PROYECTO FINAL
CATEDRA: SISTEMA DE CONTROL
PROYECTO: MODELADO CINEMATICO Y SISTEMA DE CONTROL DE POSICION BRAZO ROBOTICO
INDICE
OBJETIVOS
Objetivo General Pág. 3
Objetivo de Cátedra Pág. 5
OBJETIVO GENERAL
MODELADO MATEMATICO
Los modelos cinemáticos directo e inverso; estarán basados en las convenciones referidas
en Denavit-Hartenberg y en el método geométrico respectivamente.
Para el control de posición de cada articulación del robot manipulador, se recurre al diseño
y construcción de un controlador PID discreto.
Ref 1 MOTOR
PID DSCRETO POTENCIA POTE
CINTURA
ADC
MICROCONTROLADOR 1
Ref 2 MOTOR
PID DSCRETO POTENCIA POTE
HOMBRO
ADC
MICROCONTROLADOR 2
ADC
MICROCONTROLADOR 3
Ref 4 MOTOR
PID DSCRETO POTENCIA POTE
MUÑECA
(Giro y elevación)
ADC
MICROCONTROLADOR 4
Ref 5 MOTOR
PID DSCRETO POTENCIA POTE
MUÑECA
(Giro y elevación)
ADC
PC MICROCONTROLADOR 5
OBJETIVO DE CATEDRA
Se evaluaran las distintas contribucones proporcional, derivatica e integral para luego hacer un
refinamiento del mismo.
Robot Manipulador: Mentor (Nº de Serie: 803132), fabricado por Cybernetic Applications, bajo
fines educativos.
El mismo presenta una configuración de tipo manipulador articulado y cuenta con una
arquitectura poliarticulada.
Es un robot de 5 GDL (grados de libertad) los cuales están denotados por sus similares al ser
humano, estos son: cintura, hombro, codo, muñeca-elevación y muñeca-giro.
Cada articulación realiza movimientos rotatorios desarrollados por actuadotes que son motores
de 12 voltios de corriente continua (CC) acoplados a una caja reductora y su posicionamiento se
registra a través de encoders analógicos (potenciómetros rotativos resistivos).
Los elementos que lo integran están construidos de acero, plástico y aluminio siendo este
último el que constituye la mayor parte de su estructura.
Estructura Mecánica
Elementos Terminales
Sistema Sensorial
SISTEMA DE CONTROL
Términos Básicos
- Conversor digital/análogo: es un dispositivo que convierte una señal digital en una señal
analógica (corriente o voltaje).
- Planta: es el elemento físico que se desea controlar. Planta puede ser: un motor, un
horno, un sistema de disparo, un sistema de navegación, un tanque de combustible, etc.
- Perturbación: es una señal que tiende a afectar la salida del sistema, desviándola del
valor deseado.
- Sensor: es un dispositivo que convierte el valor de una magnitud física (presión, flujo,
temperatura, etc.) en una señal eléctrica codificada ya sea en forma analógica o digital.
También es llamado transductor. Los sensores, o transductores, analógicos envían, por
lo regular, señales normalizadas de 0 a 5 voltios, 0 a 10 voltios o 4 a 20 mA.
La señal de salida, y, corresponde a la salida del terminal móvil del potenciómetro. Si éste se
alimenta con 5 voltios en sus terminales fijos (a y b), producirá un voltaje en su terminal móvil
(c) equivalente a su posición. Podemos decir entonces que cuando produce 0 voltios esta en la
posición equivalente a 0 grados, 1.25 voltios corresponderá a 90 grados, 2.5 voltios a 180
grados, etc.
Elementos
- Motor de CC de imán permanente de 12V, 500mA y 500 r.p.m. Los motores de CC de imán
permanente comerciales normalmente no giran a la misma velocidad en sentido dextrógiro
que en sentido levógiro por lo que el controlador no tendrá la misma respuesta en ambos
sentidos.
- Potenciómetro lineal de 5 KΩ , de una sola vuelta.
- Acople mecánico entre el eje del motor y el eje del potenciómetro.
- Fuente de 5 voltios de corriente continúa para alimentar los terminales fijos del
potenciómetro.
+5 V (Terminal a)
0 a +5 V (Terminal c)
GND (Terminal b))
+5 V
GND
Controlador PID
Los controladores PID son ampliamente usados en los sistemas de control industrial , cuyas
siglas corresponden; P: proporcional, I: integral, D: derivativo, se refieren a los tres términos
que operan sobre la señal de error para producir la señal a la salida del controlador.
Se aplican a la mayoría de los sistemas de control, pero se aprecia más su utilidad cuando el
modelo de la planta a controlar no se conoce y los métodos analíticos no pueden ser
empleados. En este caso se debe recurrir a procedimientos experimentales para la sintonía de
los controladores PID.
Donde e(t) es el error de la señal, u(t) es la entrada de control del proceso, es la ganancia
proporcional, es la constante de tiempo integral y es la constante de tiempo derivativa.
) Planta
El proceso de seleccionar los parámetros del controlador que cumplan con las especificaciones
de comportamiento dadas se conoce sintonía del controlador.
Ziegler y Nichols sugirieron reglas para sintonizar los controladores PID (es decir, dar valores
para , y ) basándose en las respuestas escalón experimentales (1er método) o en el valor
de (2do método) que produce estabilidad marginal cuando solo se usa la acción de control
proporcional.
Hay que tener presente que las reglas de sintonía de Ziegler y Nichols dan una estimación
razonable de los parámetros del controlador proporcionando un punto de partida para la
sintonización fina.
1
Planta
u(t c(t)
)
Figura 5. Respuesta a un escalón unitario de una planta
Ziegler y Nichols sugirieron establecer los valores de de acuerdo con la formula que
aparece en la tabla 1.
Tipo de Controlador
P 0
PI 0
PID
Tabla 1. Regla de sintonía de Ziegler Nichols basada en la respuesta escalón de la planta (primer método).
Por lo tanto:
El controlador PID sintonizado mediante el primer método de las reglas de Ziegler y Nichols
presentara un polo en el origen y un cero doble en .
Desarrollo Práctico:
Aplicamos una señal escalón de 5V de amplitud a una de las articulaciones del manipulador,
más precisamente a la articulación del hombro.
Por medio de una placa de adquisición de datos, obtenemos la señal de respuesta al escalón.
Esta señal es proveída por el cursor móvil del potenciómetro a medida que la articulación se
desplaza rotacionalmente.
Las intersecciones de la recta tangente con el eje de tiempo y con la línea C(t)=5V obtenemos el
tiempo de retardo L y la constante de tiempo T.
Se adjunta el código utilizado en Matlab para graficar la recta tangente sobre la respuesta al
escalón (en la) y los correspondientes cálculos de L y de T.
H; % Planta
pp=pole(H); % Polos de lazo abierto
dt=0.05;
t=0:dt:8;
y=step(H,t)'; % Respuesta al escalón
dy=diff(y)/dt; % Derivada
[m,p]=max(dy); % Punto de inflexión
d2y=diff(dy)/dt; % Segunda derivada
yi=y(p);
ti=t(p);
L=ti-yi/m; % Retardo
Tau=(y(end)-yi)/m+ti-L; % Constante de tiempo
figure(1)
plot(t,y,'b',[0 L L+Tau t(end)],[0 0 y(end) y(end)],'k')
title('Respuesta al escalón')
ylabel('Amplitud')
xlabel('tiempo (s)')
legend('Exacta','Aproximacion Lineal')
Figura 9. Respuesta al escalón
; ;
Ki=Kp/Ti;
Kd=Kp*Td;
% Lazo cerrado
HLC=feedback(G*H,1)
figure(2)
step(HLC)
figure(3)
pzmap(HLC)
grid
Resultados:
; ;
Función de
Transferencia en
lazo abierto
El controlador PID sintonizado mediante el primer método de las reglas de Ziegler y Nichols
presentara un polo en el origen y un cero doble en .
Polos en LC:
De la grafica 12, podemos observar que existe un sobre paso del 24% y un tiempo de
establecimiento de 1.16 seg.
Como se menciono anteriormente la sintonización de Ziegler Nichols es un procedimiento de
punto de partida al momento de sintonizar un PID. Ahora en más, solo basta con realizar un
ajuste fino para disminuir el tiempo de establecimiento, el sobre paso, y otros aspectos de
interés.
Sintonización Fina
A continuación se grafica (figura 13) la variación de la respuesta al escalón del PID (en LC) por
medio de un refinamiento de los parámetros calculados.
Código:
% Refinamiento Opción 1
Kp1=1.5*Kp;
Kd1=3*Kd;
Ki1=1.0*Ki;
G1=tf([Kd1 Kp1 Ki1],[1 0]);
HLC1=feedback(G1*H,1);
% Refinamiento Opción 2
Kp2=1.5*Kp;
Kd2=5*Kd;
Ki2=1.0*Ki;
G2=tf([Kd2 Kp2 Ki2],[1 0]);
HLC3=feedback(G2*H,1);
figure(4)
step(HLC,HLC1,HLC3)
Cuando en el sistema se emplea un controlador proporcional, la señal a la salida del controlador es múltiplo
P
R
(ganancia KP) del porcentaje de cambio en la señal medida.
O
P
Existe un valor límite de la ganancia del controlador proporcional. Más allá de este límite el sistema alcanza valores
O superiores a los deseados, fenómeno conocido como sobreoscilación. Por razones de seguridad, la sobreoscilación
R
C no debe superar el 30%.
I
O El controlador proporcional no considera el tiempo. Por esta razón, para solucionar el error permanente y lograr
N
A que el sistema contenga alguna componente que considere la variación respecto al tiempo, se incluyen las acciones
L integral y derivativa.
El modo de control integral tiene como propósito disminuir y eliminar el error en estado estacionario, provocado
por el modo proporcional.
I
N
El control integral actúa cuando hay una desviación entre la variable y el punto de consigna, integrando esta
T desviación en el tiempo y sumándola a la acción proporcional.
E
G El error es integrado, es decir es promediado o sumado por un período determinado, para posteriormente ser
R
A multiplicado por una constante KI.
L
Cuando la respuesta integral es adicionada al modo proporcional para formar el control P + I, se obtiene una
respuesta estable del sistema sin error estacionario.
La acción derivativa se manifiesta cuando hay un cambio en el valor absoluto del error.
La función de la acción derivativa es mantener el error al mínimo corrigiéndolo proporcionalmente con la misma
D
E velocidad que se produce; de esta manera evita que el error se incremente, y reducirá el sobrepico.
R
I El error se deriva con respecto al tiempo y se multiplica por una constante KD.
V
A
El control derivativo se caracteriza por el tiempo de acción derivada. Cuando el tiempo de acción derivada es
T
I
grande, hay inestabilidad en el proceso. Cuando el tiempo de acción derivada es pequeño, la variable oscila
V demasiado con relación al punto de consigna. El tiempo óptimo de acción derivativa es el que retorna la variable al
O
punto de consigna con las mínimas oscilaciones
Suele ser poco utilizada debido a la sensibilidad al ruido que manifiesta y a las complicaciones que ello conlleva.
LARMA – Laboratorio de Robots Móviles Autónomos
Gonzalo Berardo
18 ROBOT MANIPULADOR MENTOR
El PID será programado en un microcontrolador PIC, por lo que la realización del mismo en
tiempo discreto estará dado por la transformada z:
Siendo:
Donde:
para T=300
+ integral
Ki
+
T
proporcional +
e(kT) Kp u(kT)
+
derivativa +
Kd
-
T
Fi gura 14. Diseño pa ralelo del controlador PID
El muestreo debe ser mucho menor que el tiempo de establecimiento del sistema en lazo
abierto. En el modelo de Ziegler Nichols se toma un valor (también puede utilizarse
Sintonización
Kp=900; // Constante Proporcional
Ki=0; // Constante Integral
Kd=400; // Constante Derivativa Cálculo del término
T=300; // Tiempo de Muestreo derivativo
pwm_min=0.0; // Valor PWM Mínimo dT=Kd*(eT-eT0);
pwm_max=950.0; // Valor PWM Máximo
REFINAMIENTO
Kp=1.5*Kp;
Ki=1.0*Ki;
Kd=3.0*Kd;
Bloquea motor
ADC output_low(pin_B4);
valor=read_adc(); output_low(pin_B5);
Transferencia de salida
PID a señal PWM
control=(int16)uT;
Conversión ADC
1023 a 5V valor=read_adc();
yT=(float)valor*5.0/1023.0;
Cargamos PWM
set_pwm1_duty(control);
Conversión
Cálculo error 1023 a 5V
eT=rT-yT; yT=(float)valor*5.0/1023.0;
Guardar variables
iT0=iT;
eT0=eT;
¿Error es negativo? NO
Pone bandera en 0
If(eT<0) sentido=0;
¿Bandera = 1? NO
if(sentido==1)
Calcula modulo
Pone bandera en 1
eT=eT*(-1); Motor giro a derecha Motor giro a izquierda
output_low(pin_B5); output_high(pin_B5);
sentido=1;
output_high(pin_B4); output_low(pin_B4);
Reinicio de variables
eT=0; Tiempo de muestreo
iT0=0; delay_ms(T);
eT0=0;
La señal de salida del PID (señal actuante) es convertida en una señal PWM (de Modulación de
Ancho de Pulso) para comandar la etapa de potencia del motor por medio de un puente H
(Figura 16).
Salida Digital
ADC
PC MICROCONTRO LADOR
Figura 16
Términos Básicos
Cinemática
Se pueden plantear dos problemas:
Conocer la posición del extremo del robot basándose en la posición de las articulaciones
(Problema CinemáticoDirecto)
Conocer la posición de las articulaciones del robot bas ándose en la posición del extremo
del robot (Problema CinemáticoInverso)
Dinámica
De igual manera, se pueden plantear dos problemas:
Dinámico directo: Calculo del movimiento del extremo del robot a partir de los pares y
fuerzas de los accionadores de las articulaciones.
Dinámico inverso: Calculo de los valores de los pares y fuerzas de los accionadores de las
articulaciones a partir de las posiciones, velocidades y aceleraciones requeridas para el
extremo del robot.
Dinámica Inversa
El modelo dinámico inverso expresa las fuerzas y pares que intervienen, en función de la
evolución temporal de las coordenadas articulares y sus derivadas. Resolver las ecuaciones
dinámicas de movimiento para un robot no es una tarea sencilla debido a la cantidad de
números de grados de libertad y sistemas no lineales que lo componen; para poder definir
dichas ecuaciones, se empleó la formulación de movimiento de Lagrange.
Consideraciones
Para el desarrollo del modelo se omitieron los dos últimos grados de libertad, ya que
pertenecen a la orientación del efector final y sus efectos no son significativos para el
comportamiento dinámico del robot. En general se consideró al manipulador como un sistema
rígido, concentrando las masas en el centro de cada eslabón tal y como lo muestra la figura 2;
además fueron considerados los efectos de fricción provocados por las transmisiones
mecánicas que en este caso se da por engranajes (esta consideración es importante ya que
estos efectos pueden alcanzar un orden de un 25% del par requerido para mover al
manipulador en situaciones típicas [1]). Esto hace que el sistema sea no conservativo, sin
embargo, el sistema puede ser resuelto por medio de la formulación de Lagrange y
finalmente aplicando la función de disipación de Rayleigh se permite adicionar los efectos de
fricción al modelo dinámico.
En el análisis de cada eslabón, los efectos de las Energías Cinética y Potencial de los eslabones
anteriores (si existen) repercuten en el análisis del eslabón en cuestión. Las pérdidas debidas a
los huelgos y excentricidades en los engranajes, así como la eficiencia del motor fueron
despreciadas dentro del análisis de la ecuación de movimiento de Lagrange.
Definición de Parámetros
La figura 12 muestra las condiciones dinámicas del manipulador; donde cada variable está
definida de la siguiente manera:
W = Carga aplicada
mi = Masa del i-ésimo eslabón
g = Constante de gravedad
l = Radio de giro para la masa de la base
a = Longitud del primer eslabón
b = Longitud del segundo eslabón
Ii = Inercia i-ésima del eslabón
Vi = Velocidad lineal del i-ésimo eslabón
Ki = Energía cinética del i-ésimo eslabón
Pi = Energía potencial del i-ésimo eslabón
Modelo Dinámico
A continuación se muestra el desarrollo del modelo dinámico inverso [1] [2] [3] [4] [5].
La energía potencial es cero debido a que un posible cambio en el ángulo θ1 no altera la altura
de la masa mb sobre la vertical.
Derivando y elevando al cuadrado las ecuaciones (9) y (10) para sustituir en (8) y aplicando
identidades trigonométricas tenemos:
Derivando y elevando al cuadrado las ecuaciones (18) y (19 ) para sustituir en (17 ) y aplicando
identidades trigonométricas tenemos:
Ecuación de Lagrange
Fricción
Por lo que la ecuación 40 representa el modelo dinámico inverso del robot manipulador
articulado.
Dinámica Directa
El modelo dinámico directo expresa la evolución temporal de las coordenadas articulares y sus
derivadas, en función de las fuerzas y pares que interviene.
Para la obtención del modelo dinámico directo; se emplea el modelo dinámico inverso,
partiendo de la ecuación 40; y aplicando la regla de Cramer para resolver las siguientes
ecuaciones.
Sustituyendo los pares en las ecuaciones 47, 48 y 49, sufren la siguiente modificación:
Resultando:
Por lo que las ecuaciones 53, 54 y 55 representan el modelo dinámico directo del robot
manipulador articulado.
Simulación en Matlab
Cinemática Directa:
nye= -cos(rad1)*sin(rad5);
ny= (nya+nyb+nyc+nyd+nye)*fen;
nza= -sin(rad2)*cos(rad3)*cos(rad4)*cos(rad5);
nzb= -cos(rad2)*sin(rad3)*cos(rad4)*cos(rad5);
nzc= sin(rad2)*sin(rad3)*sin(rad4)*cos(rad5);
nzd= -cos(rad2)*cos(rad3)*sin(rad4)*cos(rad5);
nz= (nza+nzb+nzc+nzd)*-fen;
%negra
line ([x4,x4+nx],[y4,y4+ny],[z4,z4+nz],'LineWidth',2.5,'Color',[0 0 0])
%Vector S
fes=1.5;%Factor de escalamiento
sxa= -cos(rad1)*cos(rad2)*cos(rad3)*cos(rad4)*sin(rad5);
sxb= cos(rad1)*sin(rad2)*sin(rad3)*cos(rad4)*sin(rad5);
sxc= cos(rad1)*cos(rad2)*sin(rad3)*sin(rad4)*sin(rad5);
sxd= cos(rad1)*sin(rad2)*cos(rad3)*sin(rad4)*sin(rad5);
sxe= -sin(rad1)*cos(rad5);
sx= (sxa+sxb+sxc+sxd+sxe)*fes;
sya= -sin(rad1)*cos(rad2)*cos(rad3)*cos(rad4)*sin(rad5);
syb= sin(rad1)*sin(rad2)*sin(rad3)*cos(rad4)*sin(rad5);
syc= sin(rad1)*cos(rad2)*sin(rad3)*sin(rad4)*sin(rad5);
syd= sin(rad1)*sin(rad2)*cos(rad3)*sin(rad4)*sin(rad5);
sye= cos(rad1)*cos(rad5);
sy= (sya+syb+syc+syd+sye)*fes;
sza= sin(rad2)*cos(rad3)*cos(rad4)*sin(rad5);
szb= cos(rad2)*sin(rad3)*cos(rad4)*sin(rad5);
szc= -sin(rad2)*sin(rad3)*sin(rad4)*sin(rad5);
szd= cos(rad2)*cos(rad3)*sin(rad4)*sin(rad5);
sz= (sza+szb+szc+szd)*-fes;
%verde
line ([x4,x4-sx*2],[y4,y4-sy*2],[z4,z4-sz*2],'LineWidth',2.5,'Color',[0 1
0])
%gris
line ([x4,x4+sx],[y4,y4+sy],[z4,z4+sz],'LineWidth',6,'Color',[0.5 0.5 0.5])
%gris
line ([x4,x4-sx],[y4,y4-sy],[z4,z4-sz],'LineWidth',6,'Color',[0.5 0.5 0.5])
%Vector A
fea=3.5;%Factor de escalamiento
axa= cos(rad1)*cos(rad2)*cos(rad3)*sin(rad4);
axb= -cos(rad1)*sin(rad2)*sin(rad3)*sin(rad4);
axc= cos(rad1)*cos(rad2)*sin(rad3)*cos(rad4);
axd= cos(rad1)*sin(rad2)*cos(rad3)*cos(rad4);
ax= (axa+axb+axc+axd)*fea;
aya= sin(rad1)*cos(rad2)*cos(rad3)*sin(rad4);
ayb= -sin(rad1)*sin(rad2)*sin(rad3)*sin(rad4);
ayc= sin(rad1)*cos(rad2)*sin(rad3)*cos(rad4);
ayd= sin(rad1)*sin(rad2)*cos(rad3)*cos(rad4);
ay= (aya+ayb+ayc+ayd)*fea;
aza= -sin(rad2)*cos(rad3)*sin(rad4);
azb= -cos(rad2)*sin(rad3)*sin(rad4);
azc= -sin(rad2)*sin(rad3)*cos(rad4);
azd= cos(rad2)*cos(rad3)*cos(rad4);
az= (aza+azb+azc+azd)*-fea;
%amarrilo
line([x4,x4+ax*1.2],[y4,y4+ay*1.2],[z4,z4+az*1.2],'LineWidth',2.5,'Color',[
1 1 0])
Resultado:
%La cinemática inversa obtiene como resultado los ángulos necesarios para
llegar a una
%posición deseada en donde se encuentra el efector final, por lo que es
necesario
%introducir como valores iniciales las coordenadas cartesianas (xyz).
rad5=teta5;
x4=x;
y4=y;
z4=z;
%Vector N
fen=2;%Factor de escalamiento
nxa= cos(rad1)*cos(rad2)*cos(rad3)*cos(rad4)*cos(rad5);
nxb= -cos(rad1)*sin(rad2)*sin(rad3)*cos(rad4)*cos(rad5);
nxc= -cos(rad1)*cos(rad2)*sin(rad3)*sin(rad4)*cos(rad5);
nxd= -cos(rad1)*sin(rad2)*cos(rad3)*sin(rad4)*cos(rad5);
nxe= -sin(rad1)*sin(rad5);
nx= (nxa+nxb+nxc+nxd+nxe)*fen;
nya= sin(rad1)*cos(rad2)*cos(rad3)*cos(rad4)*cos(rad5);
nyb= -sin(rad1)*sin(rad2)*sin(rad3)*cos(rad4)*cos(rad5);
nyc= -sin(rad1)*cos(rad2)*sin(rad3)*sin(rad4)*cos(rad5);
nyd= -sin(rad1)*sin(rad2)*cos(rad3)*sin(rad4)*cos(rad5);
nye= -cos(rad1)*sin(rad5);
ny= (nya+nyb+nyc+nyd+nye)*fen;
nza= -sin(rad2)*cos(rad3)*cos(rad4)*cos(rad5);
nzb= -cos(rad2)*sin(rad3)*cos(rad4)*cos(rad5);
nzc= sin(rad2)*sin(rad3)*sin(rad4)*cos(rad5);
nzd= -cos(rad2)*cos(rad3)*sin(rad4)*cos(rad5);
nz= (nza+nzb+nzc+nzd)*-fen;
%negra
line ([x4,x4+nx],[y4,y4+ny],[z4,z4+nz],'LineWidth',2.5,'Color',[0 0 0])
%Vector S
fes=1.5;%Factor de escalamiento
sxa= -cos(rad1)*cos(rad2)*cos(rad3)*cos(rad4)*sin(rad5);
sxb= cos(rad1)*sin(rad2)*sin(rad3)*cos(rad4)*sin(rad5);
sxc= cos(rad1)*cos(rad2)*sin(rad3)*sin(rad4)*sin(rad5);
sxd= cos(rad1)*sin(rad2)*cos(rad3)*sin(rad4)*sin(rad5);
sxe= -sin(rad1)*cos(rad5);
sx= (sxa+sxb+sxc+sxd+sxe)*fes;
sya= -sin(rad1)*cos(rad2)*cos(rad3)*cos(rad4)*sin(rad5);
syb= sin(rad1)*sin(rad2)*sin(rad3)*cos(rad4)*sin(rad5);
syc= sin(rad1)*cos(rad2)*sin(rad3)*sin(rad4)*sin(rad5);
syd= sin(rad1)*sin(rad2)*cos(rad3)*sin(rad4)*sin(rad5);
sye= cos(rad1)*cos(rad5);
sy= (sya+syb+syc+syd+sye)*fes;
sza= sin(rad2)*cos(rad3)*cos(rad4)*sin(rad5);
szb= cos(rad2)*sin(rad3)*cos(rad4)*sin(rad5);
szc= -sin(rad2)*sin(rad3)*sin(rad4)*sin(rad5);
szd= cos(rad2)*cos(rad3)*sin(rad4)*sin(rad5);
sz= (sza+szb+szc+szd)*-fes;
%verde
line ([x4,x4-sx*2],[y4,y4-sy*2],[z4,z4-sz*2],'LineWidth',2.5,'Color',[0 1
0])
%gris
line ([x4,x4+sx],[y4,y4+sy],[z4,z4+sz],'LineWidth',6,'Color',[0.5 0.5
0.5])
%gris
line ([x4,x4-sx],[y4,y4-sy],[z4,z4-sz],'LineWidth',6,'Color',[0.5 0.5
0.5])
%Vector A
fea=3.5;%Factor de escalamiento
axa= cos(rad1)*cos(rad2)*cos(rad3)*sin(rad4);
axb= -cos(rad1)*sin(rad2)*sin(rad3)*sin(rad4);
axc= cos(rad1)*cos(rad2)*sin(rad3)*cos(rad4);
axd= cos(rad1)*sin(rad2)*cos(rad3)*cos(rad4);
LARMA – Laboratorio de Robots Móviles Autónomos
ax= (axa+axb+axc+axd)*fea; Gonzalo Berardo
aya= sin(rad1)*cos(rad2)*cos(rad3)*sin(rad4);
37 ROBOT MANIPULADOR MENTOR
axc= cos(rad1)*cos(rad2)*sin(rad3)*cos(rad4);
axd= cos(rad1)*sin(rad2)*cos(rad3)*cos(rad4);
ax= (axa+axb+axc+axd)*fea;
aya= sin(rad1)*cos(rad2)*cos(rad3)*sin(rad4);
ayb= -sin(rad1)*sin(rad2)*sin(rad3)*sin(rad4);
ayc= sin(rad1)*cos(rad2)*sin(rad3)*cos(rad4);
ayd= sin(rad1)*sin(rad2)*cos(rad3)*cos(rad4);
ay= (aya+ayb+ayc+ayd)*fea;
aza= -sin(rad2)*cos(rad3)*sin(rad4);
azb= -cos(rad2)*sin(rad3)*sin(rad4);
azc= -sin(rad2)*sin(rad3)*cos(rad4);
azd= cos(rad2)*cos(rad3)*cos(rad4);
az= (aza+azb+azc+azd)*-fea;
%amarillo
line([x4,x4+ax*1.2],[y4,y4+ay*1.2],[z4,z4+az*1.2],'LineWidth',2.5,'Color',
[1 1 0])
%tomando de origen el vector S verde
%línea gris (Dedo 1)
line ([x4-sx,x4+ax-sx],[y4-sy,y4+ay-sy],[z4-
sz,z4+az+sz],'LineWidth',6,'Color',[0.5 0.5 0.5])
%tomando de origen el vector S verde
%línea gris (Dedo 2)
line([x4+sx,x4+ax+sx],[y4+sy,y4+ay+sy],[z4+sz,z4+az+sz],'LineWidth',6,'Col
or',[0.5 0.5 0.5])
%Conversiones de radianes a grados
tetac1=(teta1*180)/pi;
tetah1=(teta2*180)/pi;
tetaco1=(teta3*180)/pi;
%Cuando los ángulos son mayores a 360
while tetac1>360
tetac1=tetac1-360;
end
while tetah1>360
tetah1=tetah1-360;
end
while tetaco1>360
tetaco1=tetaco1-360;
end
%Cuando los ángulos son mayores a -360
while tetac1<-360
tetac1=tetac1+360;
end
while tetah1<-360
tetah1=tetah1+360;
end
while tetaco1<-360
tetaco1=tetaco1+360;
end
fprintf('\n Cuando los ángulos calculados se encuentran en el segundo ');
fprintf('\n cuadrante, el ángulo mostrado es el complementario\n');
fprintf('\n Los valores de los ángulos en codo arriba son:\n');
fprintf('\tCintura =%12.2f\n',tetac1);
fprintf('\tHombro =%12.2f\n',tetah1);
fprintf('\tCodo =%12.2f\n',tetaco1);
fprintf('\n Recuerde que los límites físicos (en grados) en el robot
son:');
fprintf('\n\t Cintura de 0 a 310');
fprintf('\n\t Hombro de -35 a 130'); LARMA – Laboratorio de Robots Móviles Autónomos
fprintf('\n\t Codo de -130 a 130'); Gonzalo Berardo
hold off %Desactiva gráficos
38 ROBOT MANIPULADOR MENTOR
%negra
line ([x4,x4+nx],[y4,y4+ny],[z4,z4+nz],'LineWidth',2.5,'Color',[0 0 0])
%Vector S
fes=1.5;%Factor de escalamiento
sxa= -cos(rad1)*cos(rad2)*cos(rad3)*cos(rad4)*sin(rad5);
sxb= cos(rad1)*sin(rad2)*sin(rad3)*cos(rad4)*sin(rad5);
sxc= cos(rad1)*cos(rad2)*sin(rad3)*sin(rad4)*sin(rad5);
sxd= cos(rad1)*sin(rad2)*cos(rad3)*sin(rad4)*sin(rad5);
sxe= -sin(rad1)*cos(rad5);
sx= (sxa+sxb+sxc+sxd+sxe)*fes;
sya= -sin(rad1)*cos(rad2)*cos(rad3)*cos(rad4)*sin(rad5);
syb= sin(rad1)*sin(rad2)*sin(rad3)*cos(rad4)*sin(rad5);
syc= sin(rad1)*cos(rad2)*sin(rad3)*sin(rad4)*sin(rad5);
syd= sin(rad1)*sin(rad2)*cos(rad3)*sin(rad4)*sin(rad5);
sye= cos(rad1)*cos(rad5);
sy= (sya+syb+syc+syd+sye)*fes;
sza= sin(rad2)*cos(rad3)*cos(rad4)*sin(rad5);
szb= cos(rad2)*sin(rad3)*cos(rad4)*sin(rad5);
szc= -sin(rad2)*sin(rad3)*sin(rad4)*sin(rad5);
szd= cos(rad2)*cos(rad3)*sin(rad4)*sin(rad5);
sz= (sza+szb+szc+szd)*-fes;
%verde
line ([x4,x4-sx*2],[y4,y4-sy*2],[z4,z4-sz*2],'LineWidth',2.5,'Color',[0 1
0])
%gris
line ([x4,x4+sx],[y4,y4+sy],[z4,z4+sz],'LineWidth',6,'Color',[0.5 0.5
0.5])
%gris
line ([x4,x4-sx],[y4,y4-sy],[z4,z4-sz],'LineWidth',6,'Color',[0.5 0.5
0.5])
%Vector A
fea=3.5;%Factor de escalamiento
axa= cos(rad1)*cos(rad2)*cos(rad3)*sin(rad4);
axb= -cos(rad1)*sin(rad2)*sin(rad3)*sin(rad4);
axc= cos(rad1)*cos(rad2)*sin(rad3)*cos(rad4);
axd= cos(rad1)*sin(rad2)*cos(rad3)*cos(rad4);
ax= (axa+axb+axc+axd)*fea;
aya= sin(rad1)*cos(rad2)*cos(rad3)*sin(rad4);
ayb= -sin(rad1)*sin(rad2)*sin(rad3)*sin(rad4);
ayc= sin(rad1)*cos(rad2)*sin(rad3)*cos(rad4);
ayd= sin(rad1)*sin(rad2)*cos(rad3)*cos(rad4);
ay= (aya+ayb+ayc+ayd)*fea;
aza= -sin(rad2)*cos(rad3)*sin(rad4);
azb= -cos(rad2)*sin(rad3)*sin(rad4);
azc= -sin(rad2)*sin(rad3)*cos(rad4);
azd= cos(rad2)*cos(rad3)*cos(rad4);
az= (aza+azb+azc+azd)*-fea;
%amarillo
line([x4,x4+ax*1.2],[y4,y4+ay*1.2],[z4,z4+az*1.2],'LineWidth',2.5,'Color',
[1 1 0])
%tomando de origen el vector S verde
%línea gris (Dedo 1)
line ([x4-sx,x4+ax-sx],[y4-sy,y4+ay-sy],[z4-
sz,z4+az+sz],'LineWidth',6,'Color',[0.5 0.5 0.5])
%tomando de origen el vector S verde
%línea gris (Dedo 2)
line([x4+sx,x4+ax+sx],[y4+sy,y4+ay+sy],[z4+sz,z4+az+sz],'LineWidth',6,'Col
or',[0.5 0.5 0.5])
%Conversiones de radianes a grados
tetac=(teta1*180)/pi;
tetah=(teta2*180)/pi; LARMA – Laboratorio de Robots Móviles Autónomos
tetaco=(teta3*180)/pi; Gonzalo Berardo
40 ROBOT MANIPULADOR MENTOR
Resultado:
DOCUMENTOS DE REFERENCIA
- http://www.automatas.org/hardware/teoria_pid.htm
- Caracterización de un Robot – CENIDET
- Introducción a la Robótica - Humberto A. Secchi - Instituto de Automática - Universidad
Nacional de San Juan
- Ingenieria de Control Moderna - K. Ogata
- Sistemas de control moderno 10a Ed. - Dorf y Bishop