Animación de sistemas dinámicos

De ISAwiki
(Diferencia entre revisiones)
(Ficha técnica del trabajo)
(Material a entregar)
 
(No se muestran 20 ediciones intermedias realizadas por 2 usuarios)
Línea 1: Línea 1:
 +
[[Category:Prácticas]]
 
== Ficha técnica del trabajo ==  
 
== Ficha técnica del trabajo ==  
  
Línea 8: Línea 9:
 
| valign=top align=right| Lenguajes de programación:
 
| valign=top align=right| Lenguajes de programación:
 
| valign=top| Podrá hacerse en los siguientes lenguajes:
 
| valign=top| Podrá hacerse en los siguientes lenguajes:
* matlab / simulink.
+
* Matlab / Simulink.
 
* C++
 
* C++
La simulación deberá funcionar en los PC's de los laboratorios 2.1.17 y 2.1.19 (matlab 6.1 + simulink)
+
La simulación deberá funcionar en los PC's del laboratorio 2.1.17 (versión R12.1 = Matlab 6.1 + Simulink 4.1).
 
|-
 
|-
| valign=top| Material a entregar:
+
| valign=top align=right| Material a entregar:
| valign=top| Email con archivo *.zip adjunto incluyendo:
+
| valign=top| [[Normas de presentación de informes (ADST)|Informe impreso con CD-ROM adjunto]] incluyendo:
 
* presentación ppt de 5 transparencias
 
* presentación ppt de 5 transparencias
 
* archivos .m, .mdl, .mat necesarios
 
* archivos .m, .mdl, .mat necesarios
* pequeña memoria (no más de 5 páginas) en pdf
+
* pequeña memoria (no más de 5 páginas) en pdf (además de impreso)
 
|-
 
|-
| valign=top| Presentación:
+
| valign=top align=right| Presentación:
 
| valign=top|  
 
| valign=top|  
 
* 5 minutos de exposición
 
* 5 minutos de exposición
Línea 27: Línea 28:
 
== Contenido ==
 
== Contenido ==
 
El trabajo deberá recorrer el proceso completo de modelado y simulación de un sistema dinámico, incluyendo los siguientes aspectos:
 
El trabajo deberá recorrer el proceso completo de modelado y simulación de un sistema dinámico, incluyendo los siguientes aspectos:
* Elegir un sistema dinámico (real o virtual) en cualquier ámbito de lo cotidiano.
+
* '''Elegir un sistema dinámico''' en cualquier ámbito de lo cotidiano (ej. motor, depósito, avión, etc.). Es conveniente que la salida sea algún elemento que pueda ser animado (ej. posición angular del motor, nivel de líquido del depósito, altitud del avión, etc.).
* Realizar un diagrama estructural en el que se identifiquen las señales de entrada y de salida del sistema y de los posibles subsistemas en los que puede ser subdividido.
+
* Realizar un '''diagrama estructural''' en el que se identifiquen las señales de entrada y de salida del sistema y de los posibles subsistemas en los que puede ser subdividido.
* Determinar las ecuaciones físicas que describen el comportamiento dinámico del sistema.
+
* Determinar las '''ecuaciones físicas''' que describen el comportamiento dinámico del sistema.
* Elegir, si procede, las simplificaciones e hipótesis necesarias para conjugar adecuadamente simplicidad y precisión y obtener finalmente un modelo matemático (lineal o no lineal) del sistema.
+
* Elegir, si procede, las simplificaciones e '''hipótesis''' necesarias para conjugar adecuadamente simplicidad y precisión y '''obtener''' finalmente un '''modelo matemático''' (lineal o no lineal) del sistema.
* Simular dicho modelo mediante técnicas y herramientas de simulación (matlab, simulink, C++)
+
* '''Simular''' dicho modelo mediante técnicas y herramientas de simulación (Matlab, Simulink, C++). Si quieres hacerlo en Matlab/Simulink puedes apoyarte en los ejemplos que hay al final. Si prefieres hacerlo en C++ puedes consultar la página [[Animación de sistemas dinámicos en tiempo real]] en la que encontrarás el código de un ejemplo totalmente funcional con instrucciones paso a paso para desarrollar tu propio modelo de animación.
* Generar una animación a partir de los resultados de la simulación. En el caso de hacerla interactiva (es decir, que el usuario pueda actuar sobre el sistema para observar su respuesta), la animación se hará en tiempo de simulación
+
* '''Generar una animación a partir de los resultados de la simulación'''. En el caso de hacerla interactiva (es decir, que el usuario pueda actuar sobre el sistema para observar su respuesta), la animación se hará en tiempo de simulación
  
 
== Valoración ==
 
== Valoración ==
Línea 44: Línea 45:
 
== Material a entregar ==
 
== Material a entregar ==
  
Un archivo zip adjunto, con el siguiente contenido:
+
Un informe impreso con CD-ROM adjunto, cumpliendo las [[Normas de presentación de informes (ADST)|normas de presentación de informes]] y con el siguiente contenido mínimo:
 
* La presentación del trabajo, de 5 transparencias en formato ppt o en pdf.
 
* La presentación del trabajo, de 5 transparencias en formato ppt o en pdf.
* Una memoria de no más de 5 páginas en formato pdf
+
* Una memoria de no más de 5 páginas en formato pdf, que será también el informe impreso
 
* El código fuente y los archivos ejecutables necesarios para realizar la simulación
 
* El código fuente y los archivos ejecutables necesarios para realizar la simulación
  
Línea 54: Línea 55:
 
* 5 minutos para la demostración
 
* 5 minutos para la demostración
 
* 5 minutos para las preguntas
 
* 5 minutos para las preguntas
La simulación se realizará en los PC's de los laboratorios 2.1.17 y 2.1.19 (matlab 6.1 + simulink).
+
La simulación se realizará en los PC's del laboratorio 2.1.17 (versión R12.1 = Matlab 6.1 + Simulink 4.1), para lo cual '''deberá probarse con antelación''', especialmente si se crea en versiones posteriores a las mencionadas, pues puede ser necesario convertir los archivos a su formato. Si algún grupo decide hacerlo en lenguaje C++ o utilizar algún software adicional (por ejemplo, de animación, modelado 3D, realidad virtual) que complemente algún aspecto de la simulación, pase a hablar con los profesores de la asignatura.
Si algún grupo decide utilizar algún software adicional (por ejemplo, de animación, modelado 3D, realidad virtual) que complemente algún aspecto de la simulación, pase a hablar con los profesores de la asignatura.
+
  
 
== Ejemplos ==
 
== Ejemplos ==
=== Simulación de un péndulo ===
+
* [[Modelado y Simulación de un Péndulo]]. En esta práctica puedes encontrar una animación básica de los resultados de la simulación de un péndulo.
En la práctica [[Modelado y Simulación de un Péndulo]] puedes encontrar una animación básica de los resultados de la simulación de un péndulo.
+
* [[Simulación y animación del sistema de amortiguación de un vehículo]]. Este ejemplo de Matlab tipo ''copiar y pegar'' incluye la simulación y animación del comportamiento de un sistema amortiguador de un vehículo.
 
+
* [[Simulación interactiva de un péndulo en Matlab]]. Puedes tomar ideas de este ejemplo de simulación interactiva (no sólo es una animación sino que responde también a acciones del usuario) de un péndulo. Cópialo y pégalo en la línea de comandos de Matlab o mételo en un script *.m para jugar con él.
=== Simulación interactiva de un péndulo en Matlab ===
+
Puedes tomar ideas del siguiente ejemplo de simulación interactiva de un péndulo. Cópialo y pégalo en la línea de comandos de Matlab o mételo en un script *.m para jugar con él.
+
<pre>
+
% CONTROL MANUAL Y AUTOMÁTICO DE PÉNDULO INVERTIDO
+
%
+
% Este script ejecuta la simulación de un péndulo que puede ser controlado manualmente (accionando
+
% una barra deslizante o "slider"). 
+
%
+
% La simulación está basada en la suposición de que el intervalo de simulación (tiempo de ejecución
+
% de cada bucle) es aproximadamente constante e igual a Tm. Esto puede variar en función de la CPU y
+
% de los procesos que estén corriendo en la máquina que lo ejecute. El objetivo no es una simulación
+
% perfecta, sino el aprendizaje de los conceptos de teoría de sistemas y control a través del
+
% fomento de la creatividad del alumno.
+
%
+
% Este ejemplo ha sido probado en MATLAB Version 7.0.4.365 (R14) sobre operativo Windows XP v.5.1.
+
%
+
% El script puede servir de base para que el alumno ensaye otros tipos de sistemas los pruebe
+
% creando a partir de éste otros ejemplos interactivos mediante el procedimiento de "cortar y pegar".
+
%
+
%
+
% Fecha: 2006-11-02
+
% Autor: Ignacio Díaz
+
% Area de Ingeniería de Sistemas y Automática
+
% Universidad de Oviedo
+
 
+
 
+
clear;
+
close all;
+
clc;
+
 
+
disp('Instrucciones:');
+
disp('El objetivo es mantener el péndulo en posición vertical');
+
disp('mediante el movimiento de la base, manteniéndolo además');
+
disp('cerca de la posición de origen (x=0).');
+
disp(' ');
+
disp('- Pulsar ''+'' para aumentar  la longitud del péndulo (control más fácil)');
+
disp('- Pulsar ''-'' para disminuir la longitud del péndulo (control más difícil)');
+
disp(' ');
+
disp('Control manual: actuar sobre la barra deslizante para modificar la base del péndulo.');
+
pause(1);   
+
 
+
 
+
% PARÁMETROS DEL PÉNDULO
+
l = 2;          % Longitud del péndulo
+
m = 1;          % Masa del péndulo
+
J = m*l^2;      % Momento de inercia referido al eje
+
B = 1;        % Coeficiente de fricción
+
g = 10;        % Aceleración de la gravedad
+
 
+
 
+
% ESTADO INICIAL DEL PÉNDULO
+
x = [pi-0.1;0];    % Para que se vea el efecto del control, empezamos
+
                    % con el péndulo casi vertical (theta = pi +/- "algo")
+
 
+
 
+
% DEFINICIÓN DE UN "SLIDER"  PARA CONTROLAR MANUALMENTE EL PÉNDULO
+
f = figure(1);
+
set(f,'pos',[100,100,700 700],'windowstyle','modal');
+
h = uicontrol('style','slider','pos',[20 20 680 20],'min',-4,'max',4);
+
 
+
 
+
Tm = 0.01;              % Período de muestreo
+
 
+
 
+
 
+
x0 = [0;0];            % Condiciones iniciales del péndulo
+
a0 = [0;0];
+
 
+
xmin = -2;
+
xmax = +2;
+
y = x(1);
+
 
+
 
+
 
+
 
+
 
+
 
+
pos = 0;    % Valor inicial de la posición de la base del péndulo
+
k = 2;      % Empezamos en k=2 para tener acceso al menos a dos muestras anteriores
+
while 1,
+
    k = k + 1;
+
 
+
 
+
    % Obtenemos el valor actual de la posición de la base consultando
+
    % el valor del objeto 'slider'
+
    pos = get(h,'value');
+
 
+
 
+
    % CAMBIO ON-LINE DE PARÁMETROS DE LA SIMULACIÓN (ej. longitud del péndulo)
+
    tecla = get(f,'currentchar');
+
    switch tecla
+
        case '+'
+
            l = l+.5;
+
            J = m*l^2;
+
            set(f,'currentchar','0');
+
        case '-'
+
            l = l-.5;
+
            J = m*l^2;
+
            set(f,'currentchar','0');
+
    end
+
 
+
 
+
 
+
    % Suavizado de la aceleración (muy conveniente, porque el movimiento del
+
    % objeto "slider" con un ratón se produce a saltos, dando lugar a segundas
+
    % derivadas muy elevadas)
+
    [X(k),x0] = filter(.01,poly([.9 .9]),pos,x0);
+
    [a,a0] = filter((1/Tm^2)*[1 -2 1],[1 0 0],X(k),a0);
+
    A(k) = a;
+
 
+
 
+
 
+
 
+
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
    % ECUACIONES EN ESPACIO DE ESTADOS (NO LINEALES) DEL PÉNDULO
+
    u = -a;        % Asignamos la entrada
+
 
+
    % Ecuación de estados
+
    x(1) = x(1) + Tm*x(2);
+
    x(2) = x(2) + Tm*(1/J*(-B*x(2)-m*g*l*sin(x(1))+m*u*l*cos(x(1))));
+
    % Ecuación de salida
+
    y    = x(1);
+
 
+
    th = y;        % Asignamos la salida
+
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
 
+
 
+
 
+
 
+
    % REPRESENTACIÓN GRÁFICA DE LA SIMULACIÓN
+
    figure(1);
+
    plot(X(k),0,'.',0,0,'+','markersize',20,'linewidth',2);
+
    hold on;
+
    flecha(X(k),X(k)+l*exp(j*(th-pi/2)),0.3);
+
    hold off;
+
    % Sugerencia: pueden dibujarse también otras flechas indicando en tiempo real las fuerzas reales
+
    % o de inercia que actúan en cada elemento del sistema
+
 
+
    % Centrado automático de la perspectiva sobre el objeto de control
+
    if X(k)>xmax-1
+
        xmin = xmin + 0.1;
+
        xmax = xmax + 0.1;
+
    elseif X(k)<xmin+1
+
        xmin = xmin - 0.1;
+
        xmax = xmax - 0.1;
+
    end
+
    grid on;
+
    axis([xmin-3 xmax+3 -5 5]);
+
 
+
    % Refresco de la imagen
+
    drawnow;
+
   
+
    % Theta(:,k) = th;
+
    % xvec(:,k) = x;
+
 
+
end
+
 
+
</pre>
+

Última revisión de 21:21 8 ene 2009

Tabla de contenidos

[editar] Ficha técnica del trabajo

Grupos: 3 alumnos
Lenguajes de programación: Podrá hacerse en los siguientes lenguajes:
  • Matlab / Simulink.
  • C++

La simulación deberá funcionar en los PC's del laboratorio 2.1.17 (versión R12.1 = Matlab 6.1 + Simulink 4.1).

Material a entregar: Informe impreso con CD-ROM adjunto incluyendo:
  • presentación ppt de 5 transparencias
  • archivos .m, .mdl, .mat necesarios
  • pequeña memoria (no más de 5 páginas) en pdf (además de impreso)
Presentación:
  • 5 minutos de exposición
  • 5 minutos de demostración
  • 5 minutos de preguntas

[editar] Contenido

El trabajo deberá recorrer el proceso completo de modelado y simulación de un sistema dinámico, incluyendo los siguientes aspectos:

  • Elegir un sistema dinámico en cualquier ámbito de lo cotidiano (ej. motor, depósito, avión, etc.). Es conveniente que la salida sea algún elemento que pueda ser animado (ej. posición angular del motor, nivel de líquido del depósito, altitud del avión, etc.).
  • Realizar un diagrama estructural en el que se identifiquen las señales de entrada y de salida del sistema y de los posibles subsistemas en los que puede ser subdividido.
  • Determinar las ecuaciones físicas que describen el comportamiento dinámico del sistema.
  • Elegir, si procede, las simplificaciones e hipótesis necesarias para conjugar adecuadamente simplicidad y precisión y obtener finalmente un modelo matemático (lineal o no lineal) del sistema.
  • Simular dicho modelo mediante técnicas y herramientas de simulación (Matlab, Simulink, C++). Si quieres hacerlo en Matlab/Simulink puedes apoyarte en los ejemplos que hay al final. Si prefieres hacerlo en C++ puedes consultar la página Animación de sistemas dinámicos en tiempo real en la que encontrarás el código de un ejemplo totalmente funcional con instrucciones paso a paso para desarrollar tu propio modelo de animación.
  • Generar una animación a partir de los resultados de la simulación. En el caso de hacerla interactiva (es decir, que el usuario pueda actuar sobre el sistema para observar su respuesta), la animación se hará en tiempo de simulación

[editar] Valoración

Entre otros aspectos, se valorarán positivamente en el trabajo los siguientes:

  • La originalidad del sistema elegido.
  • El realismo de la animación: que el resultado de la simulación evoque sin artificios el comportamientos; posibilidad de recrear escenarios distintos.
  • La calidad de la exposición: claridad, concisión, uso de medios adecuados, capacidad de respuesta a las preguntas, etc. interaccionar con el modelo, como un videojuego.
  • Calidad científico-técnica del trabajo: rigor en el planteamiento del problema, elección del modelo, grado de generalidad del modelo, simplificaciones y soluciones adoptadas, etc.
  • Calidad de conjunto: nivel de acabado y perfección del trabajo realizado.

[editar] Material a entregar

Un informe impreso con CD-ROM adjunto, cumpliendo las normas de presentación de informes y con el siguiente contenido mínimo:

  • La presentación del trabajo, de 5 transparencias en formato ppt o en pdf.
  • Una memoria de no más de 5 páginas en formato pdf, que será también el informe impreso
  • El código fuente y los archivos ejecutables necesarios para realizar la simulación

[editar] Presentaciones de los trabajos

Las duraciones de cada parte de la exposición serán:

  • 5 minutos para la memoria
  • 5 minutos para la demostración
  • 5 minutos para las preguntas

La simulación se realizará en los PC's del laboratorio 2.1.17 (versión R12.1 = Matlab 6.1 + Simulink 4.1), para lo cual deberá probarse con antelación, especialmente si se crea en versiones posteriores a las mencionadas, pues puede ser necesario convertir los archivos a su formato. Si algún grupo decide hacerlo en lenguaje C++ o utilizar algún software adicional (por ejemplo, de animación, modelado 3D, realidad virtual) que complemente algún aspecto de la simulación, pase a hablar con los profesores de la asignatura.

[editar] Ejemplos

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Tipos de páginas
Bloques temáticos
Herramientas