Sei sulla pagina 1di 18

UNIVERSIDAD PRIVADA DEL NORTE

Lauréate International Universities

FACULTAD DE INGENIERÍA
ESCUELA PROFESIONAL DE INGENIERÍA MECATRÒNICA

INTELIGENCIA ARTIFICIAL Y SISTEMAS EXPERTOS

“Laboratorio 1I”

Autores: .
SAENZ RICRA RAUL ABILIO.
ARI AGUILAR ALEXANDER

Docente:
CARLOS PEREA FABIÁN.

Lima – Perú

2019
Introducción

La inteligencia artificial por concepto, trata de que una máquina realice las funciones propias de un ser
inteligente en cuanto a razonamiento y toma de decisiones. De la misma manera; Un Sistema Experto
es un sistema informático que procesa conocimientos e indica decisiones a tomar en la resolución de
determinados problemas, razonando sus propios procesos.
Hoy en día, los robots manipuladores están diseñados para realizar una amplia variedad de
aplicaciones industriales, científicas, domésticas y comerciales. Sin embargo, es un sector de la robótica
considerado joven y en constante crecimiento
El presente laboratorio involucra distintas programaciones enfocadas a dicho crecimiento industrial tales
como un brazo robótico 2GDL que e puede controlar según nuestras necesidades considerando la
posición inicial la trayectoria a recoger y la posición final según el diseño matemático o programa
aplicado. De otro lado se vera también un CNC
Laboratorio 2 de: Inteligencia Artificial y Sistemas Expertos

Problema 1 (6ptos)

Entregar a manera de informe la simulación de la máquina CNC, para lo cual utilizar el programa CNC
colgada en el Aula Virtual. Desarrollar la estrategia requerida para que cumpla la trayectoria lo más preciso
posible, mostrar las diferentes simulaciones en el informe cambiando pesos, velocidad, y el tiempo previo
para obtener la mejor respuesta admisible. La trayectoria a seguir se brindará a cada alumno por separado.

Los parámetros para el modelado según cada motor se definen a continuación:

El motor X presenta las siguientes características:


Resistencia interna: 1.8 ohm
Inductancia interna: 0.000159 H
Coeficiente de fuerza contra-electromotriz: 0.05871 volt-sec/rad
Coeficiente de torque/corriente: 0.05567 N-m/Amp
Diámetro tornillo sinfín: 0.022 m
Paso tornillo sinfín: 0.0028 m
Angulo de rosca de tornillo sinfín: 60 grados
Masa X: 0.130 Kg
Masa motor X y tornillo sin fin: 0.218 Kg
Inercia total de eje de motor X y tornillo sin fin: 0.00004534 Kg-m2
Máxima potencia desarrollada: 180 W
Máximo voltaje aplicable: 40 V
Coeficiente de fuerza de fricción viscosa equivalente sobre la masa X: 95 N-seg/m

El motor Y presenta las siguientes características:


Resistencia interna:1. 1.92 ohm
Inductancia interna: 0.0001801 H
Coeficiente de fuerza contra-electromotriz: 0.08925 volt-sec/rad
Coeficiente de torque/corriente: 0.09156 N-m/Amp
Diámetro tornillo sinfín: 0.04 m
Paso tornillo sinfín: 0.0042 m
Angulo de rosca de tornillo sinfín: 60 grados
Masa Y: 0.375 Kg
Masa motor Y y tornillo sin fin: 0.572 Kg
Inercia total de eje de motor Y y tornillo sin fin: 0.000098342 Kg-m2 Máxima
potencia desarrollada: 350 W
Máximo voltaje aplicable: 50 V
Coeficiente de fuerza de fricción viscosa equivalente sobre la masa Y: 95 N-seg/m
Se quiere tornear una pieza cuya forma geométrica es:

SOLUCION: Forma geométrica 14

Con el programa determinada se puede realizar diferentes diseños para el cual elegiremos el diseño número 14,
para lo consiguiente modificaremos los códigos de programación para obtener dicho diseño de la misma manera
especificaremos las filas donde se modifican los códigos para obtener distintos diseños.

El motor X presenta las siguientes El motor Y presenta las siguientes


características: características:

R = 1.8;
L = 0.000159; Ry = 1.92;
Kt = 0.05871; Ly = 0.0001801;
Kb = 0.05567; Kty = 0.08925;
I = 4.534e-5; Kby = 0.09156;
p = 0.0028; Iy = 9.8342e-5;
m = 0.218; py = 0.0042;
c = 95; my = 0.79;%masa total de (masax) +
r = 0.011; (tornillox) + (masay)
alfa = 60*pi/180; cy = 95;
voltmax = 40; ry = 0.02;
alfay = 60*pi/180;
voltmaxy = 50;
Peso masax q1 [1.2e5] : 5
Peso masax q2 [0] : 0
Peso masax q3 [0] : 0
Peso masax q4 [1e6] : 6
Peso masay q1 [1.2e5] : 5
Peso masay q2 [0] : 0
Peso masay q3 [0] : 0
Peso masay q4 [1e6] : 6
velocidad de la herramienta [0 - 0.025] m/s
:0.010

t12 =

60

Introducir tiempo preview masax seg [0 -


0.025]: 0.015
Introducir tiempo preview masay seg [0 - 0.02]:
0.01
Introducir frecuencia masax Hz [0.25 Hz] : 0.25
Introducir frecuencia masay Hz [0.25 Hz] : 0.25

Tiempo de Preview x: 0.015


El valor de J x es: 156650.075
El valor máximo del voltaje x es: 0.88119

Tiempo de Preview y: 0.01


El valor de J y es: 223459.2423
El valor máximo del voltaje y es: 1.1803
Peso masax q1 [1.2e5] : 5
Peso masax q2 [0] : 0
Peso masax q3 [0] : 0
Peso masax q4 [1e6] : 6
Peso masay q1 [1.2e5] : 5
Peso masay q2 [0] : 0
Peso masay q3 [0] : 0
Peso masay q4 [1e6] : 6
velocidad de la herramienta [0 - 0.025] m/s
:0.016

Introducir tiempo preview masax seg [0 -


0.025]: 0.019
Introducir tiempo preview masay seg [0 - 0.02]:
0.01
Introducir frecuencia masax Hz [0.25 Hz] : 0.25
Introducir frecuencia masay Hz [0.25 Hz] : 0.25

Tiempo de Preview x: 0.019


El valor de J x es: 89593.2153
El valor máximo del voltaje x es: 1.0684

Tiempo de Preview y: 0.01


El valor de J y es: 119921.8516
El valor máximo del voltaje y es: 1.2848
Peso masax q1 [1.2e5] : 5
Peso masax q2 [0] : 0
Peso masax q3 [0] : 0
Peso masax q4 [1e6] : 6
Peso masay q1 [1.2e5] : 5
Peso masay q2 [0] : 0
Peso masay q3 [0] : 0
Peso masay q4 [1e6] : 6
velocidad de la herramienta [0 - 0.025]
m/s :0.001

Introducir tiempo preview masax seg [0 -


0.025]: 0.002
Introducir tiempo preview masay seg [0 -
0.02]: 0.01
Introducir frecuencia masax Hz [0.25 Hz]
: 0.25
Introducir frecuencia masay Hz [0.25 Hz]
: 0.25

Tiempo de Preview x: 0.002


El valor de J x es: 1613205.3235
El valor máximo del voltaje x es: 0.15554

Tiempo de Preview y: 0.01


El valor de J y es: 2198063.1939
El valor máximo del voltaje y es: 0.16737
Cambios que se realizaron en algunos puntos de la programación
t1 = 0.05/v;t2 = 0.05/v+t1;t3 = t1 = 0.05/v;t2 = 0.05/v+t1;t3 =
0.05/v+t2;t4 = 0.05/v+t3; 0.05/v+t2;t4 = 0.05/v+t3;
t5 = 0.05/v+t4;t6 = 0.05/v+t5;t7 = t5 = 0.05/v+t4;t6 = 0.05/v+t5;t7 =
0.05/v+t6;t8 = 0.05/v+t7; 0.05/v+t6;t8 = 0.05/v+t7;
t9 = 0.05/v+t8;t10 = 0.05/v+t9;t11 = t9 = 0.05/v+t8;t10 = 0.05/v+t9;t11 =
0.05/v+t10; 0.05/v+t10;t12 = 0.05/v+t11

%%%%%%%%% %%%%%%%%%
tt1 = ti:dt:t1;tt1 = tt1'; tt2 = tt1 = ti:dt:t1;tt1 = tt1'; tt2 =
(t1+dt):dt:t2; tt2 = tt2'; (t1+dt):dt:t2; tt2 = tt2';
tt3 = (t2+dt):dt:t3; tt3 = tt3'; tt4 = tt3 = (t2+dt):dt:t3; tt3 = tt3'; tt4 =
(t3+dt):dt:t4; tt4 = tt4'; (t3+dt):dt:t4; tt4 = tt4';
tt5 = (t4+dt):dt:t5; tt5 = tt5'; tt6 = tt5 = (t4+dt):dt:t5; tt5 = tt5'; tt6 =
(t5+dt):dt:t6; tt6 = tt6'; (t5+dt):dt:t6; tt6 = tt6';
tt7 = (t6+dt):dt:t7; tt7 = tt7'; tt8 = tt7 = (t6+dt):dt:t7; tt7 = tt7'; tt8 =
(t7+dt):dt:t8; tt8 = tt8'; (t7+dt):dt:t8; tt8 = tt8';
tt9 = (t8+dt):dt:t9; tt9 = tt9'; tt10 = tt9 = (t8+dt):dt:t9; tt9 = tt9'; tt10 =
(t9+dt):dt:t10; tt10 = tt10'; (t9+dt):dt:t10; tt10 = tt10';
tt11 = (t10+dt):dt:t11; tt11 = tt11'; tt11 = (t10+dt):dt:t11; tt11 = tt11';tt12 =
(t11+dt):dt:t12; tt12 = tt12';
tf = t11;
t=[tt1;tt2;tt3;tt4;tt5;tt6;tt7;tt8;tt9;tt10 tf = t12;
;tt11]; t=[tt1;tt2;tt3;tt4;tt5;tt6;tt7;tt8;tt9;tt10
;tt11;tt12];

r1 = v*1*ttx; %matriz de posiciones r1 = v*1*ttx; %matriz de posiciones


r2 = r2 =
v*1*ttx+r1(length(r1),1)*ones(length(r1),1 v*1*ttx+r1(length(r1),1)*ones(length(r1),1)
); ;
r3 = r3 =
v*1*ttx+r2(length(r2),1)*ones(length(r2),1 v*1/3*ttx+r2(length(r2),1)*ones(length(r2),
); 1);
r4 = v*- r4 =
1*ttx+r3(length(r3),1)*ones(length(r3),1); v*1/3*ttx+r3(length(r3),1)*ones(length(r3),
r5 = 1);
v*0*ttx+r4(length(r4),1)*ones(length(r4),1 r5 =
); v*1/3*ttx+r4(length(r4),1)*ones(length(r4),
r6 = 1);
v*0*ttx+r5(length(r5),1)*ones(length(r5),1 r6 = v*-
); 1*ttx+r5(length(r5),1)*ones(length(r5),1);
r7 = v*- r7 = v*-
1*ttx+r6(length(r6),1)*ones(length(r6),1); 1*ttx+r6(length(r6),1)*ones(length(r6),1);
r8 = v*- r8 = v*-
1*ttx+r7(length(r7),1)*ones(length(r7),1); 1*ttx+r7(length(r7),1)*ones(length(r7),1);
r9 = r9 =
v*1*ttx+r8(length(r8),1)*ones(length(r8),1 v*1*ttx+r8(length(r8),1)*ones(length(r8),1)
); ;
r10 = r10 =
v*0*ttx+r9(length(r9),1)*ones(length(r9),1 v*1*ttx+r9(length(r9),1)*ones(length(r9),1)
); ;
r11= v*- r11 = v*-
(1+error*(1.2))*ttx+r10(length(r10),1)*one 1*ttx+r10(length(r10),1)*ones(length(r10),1
s(length(r10),1); );
r12= v*-
r=[r1;r2;r3;r4;r5;r6;r7;r8;r9;r10;r11]; (1+error*(1.2))*ttx+r11(length(r11),1)*ones
(length(r11),1);

r=[r1;r2;r3;r4;r5;r6;r7;r8;r9;r10;r11;r12];
r1y = v*0*tty; %matriz de posiciones r1y = v*0*tty; %matriz de posiciones
r2y = r2y =
v*0*tty+r1y(length(r1y),1)*ones(length(r1y v*0*tty+r1y(length(r1y),1)*ones(length(r1y)
),1); ,1);
r3y = r3y =
v*1*tty+r2y(length(r2y),1)*ones(length(r2y v*1*tty+r2y(length(r2y),1)*ones(length(r2y)
),1); ,1);
r4y = r4y =
v*0*tty+r3y(length(r3y),1)*ones(length(r3y v*1*tty+r3y(length(r3y),1)*ones(length(r3y)
),1); ,1);
r5y = r5y =
v*1*tty+r4y(length(r4y),1)*ones(length(r4y v*1*tty+r4y(length(r4y),1)*ones(length(r4y)
),1); ,1);
r6y = r6y =
v*1*tty+r5y(length(r5y),1)*ones(length(r5y v*0*tty+r5y(length(r5y),1)*ones(length(r5y)
),1); ,1);
r7y = r7y =
v*0*tty+r6y(length(r6y),1)*ones(length(r6y v*0*tty+r6y(length(r6y),1)*ones(length(r6y)
),1); ,1);
r8y = r8y = v*-
v*0*tty+r7y(length(r7y),1)*ones(length(r7y 1*tty+r7y(length(r7y),1)*ones(length(r7y),1
),1); );
r9y= v*- r9y=
1*tty+r8y(length(r8y),1)*ones(length(r8y), v*0*tty+r8y(length(r8y),1)*ones(length(r8y)
1); ,1);
r10y = v*- r10y =
1*tty+r9y(length(r9y),1)*ones(length(r9y), v*0*tty+r9y(length(r9y),1)*ones(length(r9y)
1); ,1);
r11y= v*- r11y = v*-
(1+error*(1.2))*tty+r10y(length(r10y),1)*o 1*tty+r10y(length(r10y),1)*ones(length(r10y
nes(length(r10y),1); ),1);
r12y= v*-
ry=[r1y;r2y;r3y;r4y;r5y;r6y;r7y;r8y;r9y;r1 (1+error*(1.2))*tty+r11y(length(r11y),1)*on
0y;r11y]; es(length(r11y),1);

ry=[r1y;r2y;r3y;r4y;r5y;r6y;r7y;r8y;r9y;r10
y;r11y;r12y];
Problema 2. (6 ptos)

Para el caso del Brazo Robot generar un programa que realice la siguiente trayectoria:
- Definir las coordenadas en forma grupal, asumir las consideraciones que considere
necesario.

SOLUCION:

Para el desarrollo del problema 2 se tuvieron que estudiar los programas desarrollados en clases los
que conforman el accionar de un brazo robótico 2GDL el cual sigue genera movientes el primer
programa genera un circulo y el segundo un triangulo
Esto dos programas serán esenciales para el desarrollo del problema que contiene medio circulo y un
triángulo invertido.
Diferencias entre
TRAYECTORIA EN FORMA DE TRIANGULO TRAYECTORIA EN FORMA DE CIRCULO REALIZADA
REALIZADA POR EL BRAZO ROBOT POR EL BRAZO ROBOT

Se detalla parte del código del programa Se detalla parte del código del programa
para hacer una diferencia entre el otro para hacer una diferencia entre el otro
código código
Donde las masas son iguales y los datos Donde las masas son iguales y los datos del
del brazo son el mismo porque el mismo brazo son el mismo porque el mismo programa
programa determinado al brazo ejecuta determinado al brazo ejecuta ambos diseños
ambos diseños El cual resaltara en la diferencia donde
El cual resaltara en la diferencia donde las ecuaciones para el moviente hacen la
las ecuaciones para el moviente hacen la diferencia.
diferencia.
m1 = 0.15;
m1 = 0.15; L1 = 0.35;
L1 = 0.35; l1 = 0.16; % Longitud
l1 = 0.16; % Longitud I1 = 4.1e-3; % Inercia
I1 = 4.1e-3; % Inercia m2 = 0.12;
m2 = 0.12; L2 = 0.30;
L2 = 0.30; l2 = 0.12; % Longitud
l2 = 0.12; % Longitud I2 = 3.2e-3; % Inercia
I2 = 3.2e-3; % Inercia M11 = I1 + m1*l1*l1 + m2*L1*L1 + m2*L1*l2;
M11 = I1 + m1*l1*l1 + m2*L1*L1 + M12 = m2*L1*l2;
m2*L1*l2; M21 = I2 + m2*l2*l2 + m2*L1*l2;
M12 = m2*L1*l2; M22 = I2 + m2*l2*l2;
M21 = I2 + m2*l2*l2 + m2*L1*l2;
M22 = I2 + m2*l2*l2; C = [ 1 0 0 0];
Ss = are(A',C'*C,Q);
% Trayectoria triangular. Inicio (0.65,0) L = Ss*C';
% Triangulo vertices: dt = 0.002;
(0.40,0.00)(0.525,0.10)(0.65,0) [Ak,Bk] = c2d(A,B,dt);
v = 0.5*0.01; % Velocidad de %[Ak,Wk] = c2d(A,Wf,dt);
desplazamiento en X [Aok,Bok] = c2d(A-L*C,B,dt);
ti = 0; dt = 0.001; [Aok,Lok] = c2d(A-L*C,L,dt);
t1 = 0.125/v;
t2 = 0.25625/v;
tt1 = ti:dt:t1; tt1 = tt1'; w = 10*0.01; % Velocidad de angular w
tt2 = (t1+dt):dt:t2; tt2 = tt2'; ti = 0; dt = 0.001;
tf = t2; ro=0.15;
x1 = -0.125/t1*tt1 + 0.65; % % t son tiempo
x2 = 0.13125/(t1-t2)*(tt2-t2) + 0.39375; t1 = 1*(pi)/w;
xr = [ x1; x2 ]; tt1 = ti:dt:t1; tt1 = tt1';
y1 = 0.10/t1*tt1+0.005; t2 = 2*(pi)/w;
y2 = 0.105/(t1-t2)*(tt2-t2); tt2 = (t1+dt):dt:t2; tt2 = tt2';
yr = [ y1; y2]; tf = t2;
x2y2 = xr.*xr + yr.*yr;
j=sqrt(x2y2);
figure(1); plot(t,ang1*180/pi,t,r1*180/pi);
grid on;
figure(1); figure(2); plot(t,ang2*180/pi,t,r2*180/pi);
plot(t,ang1*180/pi,t,r1*180/pi); grid on;
grid on; figure(3);
figure(2); plot(xra,yra,xx,yy);
plot(t,ang2*180/pi,t,r2*180/pi); grid on;
grid on; disp('Pause');
figure(3); pause;
plot(xra,yra,xx,yy); figure(4);
grid on; grid;
disp('Pause'); axis([ 0 0.8 -0.4 0.4]);
pause; hold on;
figure(4); nk = length(ang1);
grid;
axis([ -0.4 0.8 -0.4 0.4]); dk = 15; % Saltos para la animación
hold on; xra = [ xra
nk = length(ang1); xra(nr12,1)*ones(dk,1) ];
dk = 15; % Saltos para la animación yra = [ yra
xra = [ xra yra(nr12,1)*ones(dk,1) ];
xra(nr12,1)*ones(dk,1) ]; % xra(nr12+1:nr12+dk-1,1) =
yra = [ yra xra(nr12,1)*ones(dk,1);
yra(nr12,1)*ones(dk,1) ]; % yra(nr12+1:nr12+dk-1,1) =
% xra(nr12+1:nr12+dk-1,1) = yra(nr12,1)*ones(dk,1);
xra(nr12,1)*ones(dk,1);
% yra(nr12+1:nr12+dk-1,1) =
yra(nr12,1)*ones(dk,1);

Ejecutando el programa con pesos máximos nos


Ejecutando el programa con pesos máximos
da como resultado con el diseño finalizado y en
nos da como resultado con el diseño finalizado
proceso.
y en proceso.

Pesos que se requieren para


Pesos que se requieren para
poder ejecutar la trayectoria
poder ejecutar la trayectoria
Peso q1 [100] : 100
Peso q2 [100]: 100
Peso q1 [100] : 100
Peso q3 [5]: 5
Peso q2 [100]: 100
Peso q4 [5]: 5
Peso q3 [5]: 5
Peso Obs q1 [1-100] : 100
Peso q4 [5]: 5
Peso Obs q2 [1-100] : 100
Peso Obs q3 [1-100] : 100
Peso Obs q4 [1-100] : 100
TRACYECTORIA REALIZADA POR EL BRAZO ROBOT

Para el desarrollo del problema se configuro el código para obtener el resultado para el
diseño.
El código usado es similar al del circulo Las figuras muestran el recorrido que
y triangulo la diferencia es que ahora realiza el brazo robótico 2GDL para diseñar
esos códigos serán empleados en uno mismo el diseño determinado.
para realizar un medio circulo y un
triángulo invertido. Los distintos diseños primero serán
determinados por ecuaciones y en el matlab
m1 = 0.15; nos ayuda el comando ARE de la ecuación de
L1 = 0.35; riccati lo cual implica tener un software
l1 = 0.16; % Longitud actualizado para este propósito se dio el
I1 = 4.1e-3; % Inercia uso de Matlab 2015.
m2 = 0.12;
L2 = 0.30;
l2 = 0.12; % Longitud
I2 = 3.2e-3; % Inercia
M11 = I1 + m1*l1*l1 + m2*L1*L1 + m2*L1*l2;
M12 = m2*L1*l2;
M21 = I2 + m2*l2*l2 + m2*L1*l2;
M22 = I2 + m2*l2*l2;

w = 10*0.01; % Velocidad de angular w


ti = 0; dt = 0.001;
ro=0.15;
% % t son tiempo
t1 = 0.5*(pi)/w;
tt1 = ti:dt:t1; tt1 = tt1';
t2 = 1*(pi)/w;
% t1 = 1*(pi)/w;
% tt1 = ti:dt:t1; tt1 = tt1';
% t2 = 2*(pi)/w;
tt2 = (t1+dt):dt:t2; tt2 = tt2';
tf = t2;
t=[tt1;tt2];
xr1=ro*cos(w*tt1)+0.5;
xr2=ro*cos(w*tt2)+0.5;
yr1=ro*sin(w*tt1);
yr2=ro*sin(w*tt2);%____
xrr=[xr1;xr2]; yrr=[yr1;yr2];
%__
x1 = -0.15/t1*tt1 + 0.65;
x2 = 0.15/(t1-t2)*(tt2-t2) + 0.35;
xr = [ x1; x2 ];
y1 = -0.10/t1*tt1-0.005;
y2 = -0.105/(t1-t2)*(tt2-t2);
yr = [ y1; y2];
x2y2 = xr.*xr + yr.*yr;
j=sqrt(x2y2);

% % Trayectoria triangular. Inicio


(0.65,0)
% % Triangulo vertices:
(0.40,0.00)(0.525,0.10)(0.65,0)
vt = 0.25*0.01; % Velocidad de
desplazamiento en X
tit = 0; dt = 0.001;
t1t = 0.125/vt;
t2t = 0.25625/vt;
tt1 = tit:dt:t1t; tt1 = tt1';
tt2 = (t1t+dt):dt:t2t; tt2 = tt2';
tft = t2t;

x1 = -0.15/t1t*tt1 + 0.65;
x2 = 0.15/(t1t-t2t)*(tt2-t2t) + 0.35;
xr = [ x1; x2 ];
y1 = -0.2/t1t*tt1-0.0005;
y2 = -0.2/(t1t-t2t)*(tt2-t2t);
yr = [ y1; y2];

%r1 = atan2(yr,xr) + acos(BB); % Calculo


de r1 - Posicion simetrica
%r2 = -r2;
% Calculo de r2 - Posicion simetrica
r1t = real(r1t);
r2t = real(r2t);
nr12t = length(r1t);
%r1 = 4*pi/4*ones(nr12,1);
%r2 = pi/6*ones(nr12,1);

xxt = L1*cos(r1t) + L2*cos(r1t+r2t);


yyt= -L1*sin(r1t) - L2*sin(r1t+r2t);%-----
me QUEDE

fi1t = 0; fi2t = 0;
fi1pt = 0; fi2pt = 0;
angt = [ fi1t fi2t ]';
velt = [ fi1pt fi2pt ]';
kt = 1;
Problema 3 (8 Ptos)

Utilizando el programa Neuro_Fuzzy1 (unidad 5) cambiar la programación por una


trayectoria de un cuarto de circunferencia (centro en 100,100) y radio de 50, notar que la
convergencia está en la variable x

SOLUCION:

Para el desarrollo del problema se usó el programa Neuro-uzzy empleado en clase el cual
será necesario estudiarlo y para posteriormente configurarlo par a obtener la solución al
ejercicio.

Este trabajo resuelve el problema del desplazamiento de un móvil (CARRITO) desde una
ubicación inicial hasta una ubicación final de estacionamiento.

La meta de la simulación es la de ubicar nuestro vehículo en un estacionamiento específico,


en medio de otros vehículos y en forma paralela. Nuestro vehículo puede empezar de
cualquier posición y orientación en el parque de estacionamiento siguiendo una trayectoria
de un cuarto de circunferencia (centro en 100,100) y radio de 50, notar que la convergencia
está en la variable x

Dodne:

X : Espacio horizontal donde en móvil podrá desplazarse.

El código será ejecutado para El código agregado es resaltado es una


distintas ubicaciones dependiendo de ecuación que determina la trayectoria
la posición inicial y final y el tipo que seguirá el carro donde las
de trayecto que se desea realizar posiciones inicial y final serán
determinados según requerimiento
% xdeseado = (100 + x - y)/2;
% Pdeseado = 135; % xdeseado = (100 + x - y)/2;
% xdeseado = (x + y)/2; % Pdeseado = 135;
% Pdeseado = 45; % xdeseado = (x + y)/2;
% Pdeseado = 90; % Pdeseado = 45;
% xdeseado = (3*x+sqrt(3)*y)/4; % Pdeseado = 90;
% Pdeseado = 30; % xdeseado = (3*x+sqrt(3)*y)/4;
% xdeseado = 100 + 50*(x-100)/sqrt((x- % Pdeseado = 30;
100)*(x-100) + y*y); % xdeseado = 100 + 50*(x-100)/sqrt((x-
% Pdeseado = atan((100-x)/y); 100)*(x-100) + y*y);
% Pdeseado = Pdeseado*180/pi; % Pdeseado = atan((100-x)/y);
% Pdeseado = 180/pi*atan((100-x)/y); % Pdeseado = Pdeseado*180/pi;
% xdeseado = 50*(x-100)/sqrt((100-x)^2 % Pdeseado = 180/pi*atan((100-x)/y);
+ y^2) + 100; % xdeseado = 50*(x-100)/sqrt((100-x)^2
Pdeseado = 90; + y^2) + 100;
xnuevo = x + 50 - xdeseado; xdeseado = 100 - sqrt(2500 - (y-
Pnuevo = P + 90 - Pdeseado; 100).*(y-100)); % Trayectoria 1/4
circunferencia
Pdeseado = 90;
xnuevo = x + 50 - xdeseado;
Pnuevo = P + 90 - Pdeseado;
Introduce coordenada inicial x : 0 Introduce coordenada inicial x : 100
Introduce coordenada inicial y : 40 Introduce coordenada inicial y : 50
Introduce inclinación inicial P : 180 Introduce inclinación inicial P : 180
Introducir coordenada final de x : 70 Introducir coordenada final de x : 70

SIMULACIONES CON DISTINTOS PUNTOS DE INICIO PARA CADA TRAYECTORIA.

Esta simulación ha sido implementada en programa MATLAB y podemos apreciar con


sorprendente precisión como el móvil llega a su destino desde cualquier ubicación.

Introduce coordenada inicial x : 100 Introduce coordenada inicial x : 100


Introduce coordenada inicial y : 40 Introduce coordenada inicial y : 60
Introduce inclinación inicial P : 180 Introduce inclinación inicial P : 180
Introducir coordenada final de x : 20 Introducir coordenada final de x : 70

Referencias
M., s. (2012). NEURO FUZZY. Obtenido de https://arxiv.org/ftp/arxiv/papers/1212/1212.0318.pdf
MATHWORKS. (2019). MATLAB APR AINTELIGENCIA ARTIFICIAL. Obtenido de
https://es.mathworks.com/help/matlab/learn_matlab/help.html
NAVARRA, M. A. (2000). Obtenido de file:///C:/Users/Dell/Downloads/Dialnet-
IntroduccionALosSistemasExpertos-257148.pdf
VEGA, H. (2004). Obtenido de
http://sisbib.unmsm.edu.pe/bibvirtualdata/publicaciones/risi/N1_2004/a11.pdf

Potrebbero piacerti anche