Animación de sistemas dinámicos

De ISAwiki
(Diferencia entre revisiones)
(Lugar, tiempo y forma de las presentaciones)
(Ficha técnica del trabajo)
Línea 1: Línea 1:
 
== Ficha técnica del trabajo ==  
 
== Ficha técnica del trabajo ==  
  
{|
+
{|cellpadding=10, border =0
 
|-
 
|-
| valign=top| Grupos:
+
| valign=top align=right| Grupos:
 
| valign=top| 3 alumnos
 
| valign=top| 3 alumnos
 
|-
 
|-
| valign=top| 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.

Revisión de 17:13 16 oct 2007

Tabla de contenidos

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 de los laboratorios 2.1.17 y 2.1.19 (matlab 6.1 + simulink)

Material a entregar: Email con archivo *.zip 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
Presentación:
  • 5 minutos de exposición
  • 5 minutos de demostración
  • 5 minutos de preguntas

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 (real o virtual) en cualquier ámbito de lo cotidiano.
  • 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++)
  • 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

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.

Material a entregar

Un archivo zip adjunto, con el siguiente contenido:

  • 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
  • El código fuente y los archivos ejecutables necesarios para realizar la simulación

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 de los laboratorios 2.1.17 y 2.1.19 (matlab 6.1 + simulink). 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

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 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.

% 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

Herramientas personales
Espacios de nombres

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