Informe3 Unity
Informe3 Unity
Informe3 Unity
SEDE LATACUNGA
Departamento de Eléctrica y Electrónica
Carrera de Electrónica y Automatización
Docente:
PhD. Víctor Hugo Andaluz
Estudiantes:
Bucheli José
Ruiz David
Tercero Jhonatan
Objetivo general................................................................................................ 2
Marco Teórico....................................................................................................... 3
Desarrollo.............................................................................................................. 4
Conclusiones. ...................................................................................................... 22
Bibliografía ......................................................................................................... 22
Anexos. ............................................................................................................... 24
Objetivo.
Objetivo general.
• Desarrollar un entorno virtual que represente un proceso industrial, a fin de
analizar las características dinámicas de comportamiento del proceso.
Objetivo específico.
• Investigar los entornos virtuales que se puede utilizar en un proceso industrial.
• Comprender el funcionamiento de un entorno virtual.
• Desarrollar un entorno virtual que represente un proceso industrial.
Marco Teórico.
Entornos virtuales
En los últimos años se han realizado varios progresos en cuanto a la investigación
y desarrollo de Realidad Virtual y Realidad Aumentada y sus distintas aplicaciones hacia
varios sectores como el ocio, simulación, enseñanza, arqueología o medicina. En el
ámbito industrial no ha quedado atrás en este estudio, dando como resultado una probada
utilidad ya sea en etapa de desarrollo de un producto, como para su comprobación en
fases finales para determinar su ciclo de vida. (Martín, Espinosa, & Domínguez, 2014).
Una definición de entorno virtual oficial no existe en la actualidad, pero se puede
distinguir una explicación obtenida de (Roehl, 1996) que dice: “La Realidad Virtual es
una simulación de un ambiente tridimensional generada por computadoras, en el que el
usuario es capaz tanto de ver como de manipular los contenidos de ese ambiente”. De esta
cita se puede deducir que los ambientes virtuales proveen diferente tipo de información
sensorial dando a conocer que el sujeto se encuentra en “otro lugar”, usando una
computadora con un software adicional especificado para ingresar, obtener, visualizar,
modificar e interactuar datos del ambiente virtual (Escartín, S/F).
Software de diseño del entorno virtual
• Unity
Es una multiplataforma creada por la empresa Unity Technologies diseñada para
el desarrollo de videojuegos en 2D y 3D a nivel profesional o a su vez entornos virtuales
a nivel industrial. Este software aparte de tener motores de renderizado de imágenes,
físicas y audio en 2D y 3D, tiene varias herramientas dedicadas para navegación y
networking que aporta de gran manera para Inteligencia Artificial por ende brinda soporte
para la Realidad Virtual.
• Blender
Blender es un software de código libre que sirve para trabajar con objetos en 3d y
se podría decir que internamente incluye varias herramientas para trabajar. Contiene
herramientas para modelado, texturizado, pintado de texturas, editor de partículas,
animación, rigging, esculpido.
Características principales de Blender.
• Es gratuito.
• Tiene soporte y actualizaciones gratuitas
• Integra todo tipo de herramientas y compite con los demás programas del
mismo tipo.
• Está preparado para diferentes tipos de formatos
• Es multiplataforma, lo encontramos para diferentes sistemas operativos.
• Permite importar y exportar formatos a otros programas.
• Es muy ligero.
• Es muy sencillo de manipular y hay mucha documentación.
Modelado
• El modelado es una de las principales herramientas en lo que es Blender.
• Principalmente se basa en crear objetos del mundo real además de
manipular una malla compuesta por polígonos, así como mover vértices y
aristas.
• Muchos de estos objetos se pueden hacer a escala, es decir, se puede
establecer una medida exacta.
• Blender tiene herramientas para trabajar con modelos arquitectónicos.
• Blender permite poner imágenes de referencia para poder obtener muy
buenos resultados.
Desarrollo.
Diseñar e implementar un esquema de control en lazo cerrado orientado al área de
automatización y procesos industriales. El diseño del esquema de control deberá
incluir el análisis de estabilidad y robustez ante perturbaciones en la planta y errores
en medición de los sensores.
Creación del entorno en la herramienta Blender.
• Se desarrollo un entorno donde se muestra una parte de lo que
complementa a una industria azucarera correspondiente a evaporizador de
quíntuple efecto, basado en el diseño 2D del trabajo propuesto.
• El entorno de la planta se desarrolla en Blender un software gratuito para
diseño en 3D, la selección de este herramienta fue que ayuda a exportar el
diseño con la extensión .fbx que es la que necesita Unity, además que en
internet se encuentra la página https://free3d.com/es/modelos-3d/blender
como ayuda para exportar entornos, como árboles, carros, galpones etc.,
por lo que es una gran ayuda a que el entorno tenga una mejor
ambientación.
• El diseño de la planta se empieza estructurando en una sola pieza los
tanques evaporadores, mediante los comandos del software se da forma al
cilindro inicial.
Considerar que este diseño 3D en Blender debe ser colocado en Unity y este miso
debe ser exportado en .fbx tal como se muestra en la ilustración 4.
Para exportar en ese formato tenemos la siguiente ilustración, de toda la planta finalizada,
tanto texturas y acondicionamiento del espacio que rodea son hechas por las texturas en
Unity.
Ilustración 9. Página web GitHub, lugar de descarga de los archivos para la implantación.
Como se puede observar en la Ilustración 10 una vez ingresado a la página web del
link indicado, se pude descargar fácilmente todos los archivos necesarios, comprimidos
en un ZIP. Una vez descomprimida la documentación, el paso siguiente sería la
instalación de la memoria compartida.
En la Ilustración 11, se puede apreciar todo el contenido del archivo ZIP descargado,
que se encuentra dentro una carpeta sharedMemoryClient-master. Para la instalación y
configuración de la memoria compartida se ingresa a la siguiente dirección
sharedMemoryClient-master\Libraries\64Bits, donde se encuentran dos archivos.dll.
Ilustración 12. Primer paso para la instalación de memorias compartidas.
Después nos dirigimos en animaciones y le dejamos una por defecto para que
inicie con unity, que debe estar tranquilo sin movimientos bruscos, descargamos el
archivo en formato fbx.
Es recomendable para que no exista ningún error al momento de que el avatar este
quieto se lo coloca en modo zombie debido que dicha animación es estática y funcionaria
perfecto cuando el avatar este quieto
Ilustración 19. Eligiendo modo zombie
Ilustración 30.Evolución del sistema después de un tiempo y con distintos tipos de set point
Bibliografía
Link: https://www.youtube.com/watch?v=BCq5Ah6DPHs
➢ Archivos en Drive
https://drive.google.com/drive/folders/1njc-9DMBEzOQ0HY-dson--
BHglCsx3Ge?usp=sharing
➢ Código en Matlab
clc;
clear;
close all;
warning off;
ts=0.1;
t_final=200;
t=[0:ts:t_final];
val=1;
% Parametros
p1=0.8; % densidad
p2=0.8; % densidad
p3=0.8; % densidad
p4=0.8; % densidad
p5=0.8; % densidad
Vo=0.8;
n=2; %numero de tubos
d=0.1; %diametro del tubo
%Maximo 3.65m
N1=3;
N2=3;
N3=3;
N4=0.1;
N5=7; %7.39
hc=1; %5 %altura del cono
%% Importar memoria compartida
loadlibrary('smClient64.dll','./smClient.h')
calllib('smClient64','createMemory','unity',10,2);
calllib('smClient64','createMemory','matlab',10,2);
%% Abriri memoria compartida
calllib('smClient64','openMemory','unity',2); %Abrir memoria, no cambiar el numero 2
calllib('smClient64','openMemory','matlab',2);
%Vectores de Entrada
Fm1=val*[.95*ones(1,t_final) .99*ones(1,t_final) .95*ones(1,t_final)...
.96*ones(1,t_final) .92*ones(1,t_final) .95*ones(1,t_final)...
.98*ones(1,t_final) .95*ones(1,t_final) .91*ones(1,t_final) .95*ones(1,length(t)-
t_final*9)];
Fm1=val*0.95*ones(1,length(t));
Fc1=val*0.95*ones(1,length(t));
Fc2=val*0.95*ones(1,length(t));
Fc3=val*0.95*ones(1,length(t));
calllib('smClient64','setFloat','matlab',5,1);
for k=1:length(t)-1
tic
%Leer memorias compartidas
C1(k) = calllib('smClient64','getFloat','unity',0);
C2(k) = calllib('smClient64','getFloat','unity',1);
C3(k) = calllib('smClient64','getFloat','unity',2);
C4(k) = calllib('smClient64','getFloat','unity',3);
C5(k) = calllib('smClient64','getFloat','unity',4);
C5d(k) = calllib('smClient64','getFloat','unity',5);
Fvap5(k) = calllib('smClient64','getFloat','unity',6);
C5_error(k)=C5d(k)-C5(k);
C_error=[C5_error(k)];
w1=0.12;
W=[w1];
A=[(C4(k)-C5(k))/(p1*(Vo+((k*pi*d^2*(N5-hc))/(2))))];
D=[(C5(k)Fvap5(k))/(p1(Vo+((k*pi*d^2*(N5-hc))/(2))))];
x=inv(A)(W(tanh(C_error))-D);
maxFM=0.98;
% Fc4(k)=x(1);
Fc4(k)=min(maxFM,max(0,(x(1))));
while toc<0.085
end
dts(k)=toc;
end
calllib('smClient64','setFloat','matlab',5,0);
C1(length(t))=C1(length(t)-1);
C2(length(t))=C2(length(t)-1);
C3(length(t))=C3(length(t)-1);
C4(length(t))=C4(length(t)-1);
C5(length(t))=C5(length(t)-1);
C5d(length(t))=C5d(length(t)-1);
Fc4(length(t))=Fc4(length(t)-1);
C5_error(length(t))=C5_error(length(t)-1);
Fvap5(length(t))=Fvap5(length(t)-1);
dts(length(t))=dts(length(t)-1);
%% Graficas en Matlab
figure('Name','GRAFICAS VASOS 1-5');
subplot (3,2,1)
plot(t,C1(1:length(t)),'b','LineWidth',2);
grid on;
title('Vaso 1');
hold on
subplot (3,2,2)
plot(t,C2(1:length(t)),'b','LineWidth',2);
grid on;
title('Vaso 2');
hold on
xlabel('Tiempo[ms]');
ylabel('Concentracion 2')
subplot (3,2,3)
plot(t,C3(1:length(t)),'b','LineWidth',2);
grid on;
title('Vaso 3');
hold on
xlabel('Tiempo[ms]');ylabel('Concentracion 3')
subplot (3,2,4)
plot(t,C4(1:length(t)),'b','LineWidth',2);grid on;title('Vaso 4');hold on
xlabel('Tiempo[ms]');ylabel('Concentracion 4')
subplot (3,2,5)
plot(t,C5d(1:length(t)),'r','LineWidth',2);grid on;hold on
plot(t,C5(1:length(t)),'b','LineWidth',2);grid on;hold on
grid on;
title('Vaso 5');
hold on
xlabel('Tiempo[ms]');
ylabel('Concentracion 5')
legend({'C5d','C5'},'Location','southeast')