sábado, 15 de diciembre de 2012

Desafio 2 - Robot

Programa:

INICIO:

  LET A=0
  LET B=0
  LET C=0
  LET E=0
  LET F=0
  LET G=0
  LET H=0
  LET I=0
  LET J=0

   MOVE @{1,66},10,1000
   LET D = $PSD
   'PRINT "Distancia ", D

   IF (D <= 20) THEN
   'PRINT "OBJETO EN CUADRANTE 7"
   LET H=1
  GOTO LEECENTRO
   
   ELSE
    IF ((D > 20) & (D <= 24)) THEN
    'PRINT "OBJETO EN CUADRANTE 4"
    LET E=1
  GOTO LEECENTRO
    ELSE
      IF ((D > 24) & (D <= 28)) THEN
     '   PRINT "OBJETO EN CUADRANTE 1"
        LET A=1
      GOTO LEECENTRO
       ELSE
      '   PRINT "NO HAY OBJETO"
         GOTO LEECENTRO
      END IF

    END IF


 LEECENTRO:
 MOVE @{1,82},10,1000
   LET D = $PSD
   'PRINT "Distancia ", D

   IF (D <= 24) THEN
    'PRINT "OBJETO EN CUADRANTE 8"
    LET I=1
    GOTO LEEDERECHA
   ELSE
    IF ((D > 24) & (D <= 29)) THEN
      LET F=1     
    '  PRINT "OBJETO EN CUADRANTE 5"
     GOTO LEEDERECHA
    ELSE
      IF ((D > 29) & (D <= 33)) THEN
      '  PRINT "OBJETO EN CUADRANTE 2"
        LET B=1
        GOTO LEEDERECHA
       ELSE
     '   PRINT "NO HAY OBJETO"
        GOTO LEEDERECHA
      END IF

    END IF


LEEDERECHA:
 MOVE @{1,88},10,1000
   LET D = $PSD
'   PRINT "Distancia ", D

   IF (D <= 19) THEN
 ' PRINT "OBJETO EN CUADRANTE 9"
   LET J=1
   GOTO IMPRIMIR
   
   ELSE
    IF ((D > 19) & (D <= 26)) THEN
  '  PRINT "OBJETO EN CUADRANTE 6"
    LET G=1
    GOTO IMPRIMIR

    ELSE
      IF ((D > 26)& (D <= 30)) THEN
   '     PRINT "OBJETO EN CUADRANTE 3"
        LET C=1
        GOTO IMPRIMIR

       ELSE
    '      PRINT "NO HAY OBJETO"
         GOTO IMPRIMIR

      END IF

    END IF
IMPRIMIR:
 PRINT A,B,C
 PRINT E,F,G
 PRINT H,I,J

 END

Ejecución:

viernes, 14 de diciembre de 2012

Conversión de coordenadas



Diagrama ilustrativo de la relación entre las coordenadas polares y las coordenadas cartesianas.
En el plano de ejes xy con centro de coordenadas en el punto O se puede definir un sistema de coordenadas polares de un punto M del plano, definidas por la distancia r al centro de coordenadas, y el ángulo  \theta  del vector de posición sobre el eje x.

[editar]Conversión de coordenadas polares a rectangulares

Definido un punto en coordenadas polares por su ángulo  \theta  sobre el eje x, y su distancia r al centro de coordenadas, se tiene:
 x= r \cos \theta \,
 y= r \sen \theta \,

[editar]Conversión de coordenadas rectangulares a polares

Definido un punto del plano por sus coordenadas rectangulares (x,y), se tiene que la coordenada polar r es:
 r= \sqrt{x^2 +y^2}  (aplicando el Teorema de Pitágoras)
Para determinar la coordenada angular θ, se deben distinguir dos casos:
  • Para r = 0, el ángulo θ puede tomar cualquier valor real.
  • Para r ≠ 0, para obtener un único valor de θ, debe limitarse a un intervalo de tamaño 2π. Por convención, los intervalos utilizados son [0, 2π) y (−π, π].
Para obtener θ en el intervalo [0, 2π), se deben usar las siguientes fórmulas (\arctan denota la inversa de la función tangente):
\theta = 
\begin{cases}
\arctan(\frac{y}{x})        & \mbox{si } x > 0 \mbox{ y } y \ge 0\\ 
\arctan(\frac{y}{x}) + 2\pi & \mbox{si } x > 0 \mbox{ y } y < 0\\
\arctan(\frac{y}{x}) + \pi  & \mbox{si } x < 0\\
\frac{\pi}{2}               & \mbox{si } x = 0 \mbox{ y } y > 0\\
\frac{3\pi}{2}              & \mbox{si } x = 0 \mbox{ y } y < 0
\end{cases}
Para obtener θ en el intervalo (−π, π], se deben usar las siguientes fórmulas:
\theta = 
\begin{cases}
2\arctan(\frac{y}{x + |z|})        & \mbox{si } x \not\in \Bbb R^-\\ 
\pi               & \mbox{si }  x \in \Bbb R^- \\
\end{cases}
o equivalentemente
\theta = 
\begin{cases}
\arctan(\frac{y}{x}) & \mbox{si } x > 0\\
\arctan(\frac{y}{x}) + \pi & \mbox{si } x < 0 \mbox{ y } y \ge 0\\
\arctan(\frac{y}{x}) - \pi & \mbox{si } x < 0 \mbox{ y } y < 0\\
\frac{\pi}{2} & \mbox{si } x = 0 \mbox{ y } y > 0\\
-\frac{\pi}{2} & \mbox{si } x = 0 \mbox{ y } y < 0
\end{cases}
Muchos lenguajes de programación modernos evitan tener que almacenar el signo del numerador y del denominador gracias a la implementación de la función atan2, que tiene argumentos separados para el numerador y el denominador. En los lenguajes que permiten argumentos opcionales, la función atan puede recibir como parámetro la coordenada x (como ocurre en Lisp).

sábado, 1 de diciembre de 2012

Movimientos de robot - grupo 4


***** linea recta *****


INICIO:
IF $PSD < 20 THEN 
     MOVE @{2,0,179},10,1000
     MOVE @{2,22,197},10,1000
     MOVE @{2,42,206},10,1000
     MOVE @{2,62,203},10,1000
     MOVE @{2,70,182},10,1000

     GOTO INICIO
ELSE
     IF $KIR < 0 THEN
         GOTO INICIO
     ELSE
         END
ENDIF



***** CIRCUNFERENCIA *****


INICIO:
IF $PSD < 20 THEN 
     MOVE @{2,88,206},10,1000
     MOVE @{2,64,161},10,1000
     MOVE @{2,61,138},10,1000
     MOVE @{2,98,181},10,1000
     MOVE @{2,114,211},10,1000

     GOTO INICIO
ELSE
     IF $KIR < 0 THEN
         GOTO INICIO
     ELSE
         END
ENDIF

Comandos en BASICIDE455

Comandos en BASICIDE455

En VT100

i: modo ingreso
.: salir de modo ingreso
r: modo ejecución
l: lista programa
c: clear memoria

>PRINT "HOLA MUNDO"

En editor

Para asignar el valor a una variable LET
Ej: LET i=0

LET i=0
Inicio:
     LET i=i+1
     Print "HOLA MUNDO"
     IF i=10 THEN fin ELSE Inicio
Fin:

Luego se compila, después download finalmente se ejecuta con el botón rojo del control.

$KBD captura lo que se escribe en el teclado

foro: http://robosavvy.com/forum/viewtopic.php?p=32739

inicio:
let a=$kbd
print a
goto inicio

$ir lectura de control remoto

7 rojo
6 izquierda
4 arriba
8 derecha
10 abajo
5 rotación der
3 rotaciió izq
11 mano derecha
9 mano izquierda
12 num 1
13 num 2
14 num 3
15 num 4
16 num 5
17 num 6
18 num 7
19 num 8
20 num 9
21 num 0
1 tecla A
2 tecla B

$kir lectura control y teclado

servo controla los aparatos

INICIO:
SERVO 0=@
LET A = $SERVO(0)
PRINT A
IF $KIR < 0 THEN
     GOTO INICIO
ELSE
     END
ENDIF

$PSD es un sensor del robot

INICIO:
   PRINT $PSD
   GOTO INICIO


Manejo de lista:



PRINT "PRUEBA DE LISTA"
LIST A=5,4,3,2,1,5
PRINT @A[1]
PRINT @A
LET A = @A
PRINT "LARGO = ",A
PRINT @A



LIST A=5,65,66,67,68,69
FOR I = 0 TO 4
OUT @A[I]
NEXT I
PRINT


FOR I=0 TO 10
PRINT $RND MOD 6
NEXT I


MOVE @{2,50,50},10,1000




INICIO:
IF $PSD < 20 THEN 
     MOVE @{2,80,125},10,1000
     END
ELSE
     GOTO INICIO


LEE POSICION DE SERVO 0 Y 1


INICIO:
SERVO 0=@
SERVO 1=@
LET A = $SERVO(0)
LET B = $SERVO(1)
PRINT "SERVO 0 = ",A
PRINT "SERVO 1 = ",B
WAIT 2000

IF $KIR < 0 THEN
     GOTO INICIO
ELSE
     END

linea recta


INICIO:
IF $PSD < 20 THEN 
     MOVE @{2,0,179},10,1000
     MOVE @{2,22,197},10,1000
     MOVE @{2,42,206},10,1000
     MOVE @{2,62,203},10,1000
     MOVE @{2,70,182},10,1000

     GOTO INICIO
ELSE
     IF $KIR < 0 THEN
         GOTO INICIO
     ELSE
         END
ENDIF



CIRCUNFERENCIA


INICIO:
IF $PSD < 20 THEN 
     MOVE @{2,88,206},10,1000
     MOVE @{2,64,161},10,1000
     MOVE @{2,61,138},10,1000
     MOVE @{2,98,181},10,1000
     MOVE @{2,114,211},10,1000

     GOTO INICIO
ELSE
     IF $KIR < 0 THEN
         GOTO INICIO
     ELSE
         END
ENDIF





viernes, 19 de octubre de 2012

Propuesta guía de Trabajo


1.- Introducción a la robótica

   ¿Origen de la palabra robótica?
   ¿Cuáles son las leyes de la robótica?

2.-Compuertas lógicas incluyendo mapas de Karnaugh y ley de Morgan,(LOGISIM)

A partir de la siguiente función lógica genere la tabla de verdad y el circuito utilizando puertas NAND:

3.- Lógica funcionamiento memoria JK

Obtener la tabla de secuencias producida por el siguiente contador:



4.- Agentes autómatas

Diseñe un autómata que que acepte el alfabeto [a,b,c] y que sea capaz de validar que contenga la secuencia "abaa".

5.- PID

  ¿Qué es PID y como funciona?
  ¿en que se puede aplicar PID?

6.- Cinemática , traslación y rotación 

Ejercicio Traslación

considerando:

   


Según la figura el sistema O'UVW está trasladado un vector p(6,-3,8) con respecto del sistema OXYZ. Calcular las coordenadas del vector r cuyas coordenadas con respecto al sistema O'UVW son (-2,7,3)



Ejercicio Rotación,

Considerando:





Según la figura del sistema OUVW se encuentra girado en -90° alrededor del eje OZ con respecto al sistema OXYZ. Calcular las coordenadas del vector   si  =  




                                            

7.- Denavit Hartemberg

    Completar tabla usando Denavit Hartemberg.





Articulación
α
a
θ
d

Angulo entre el eje y
Zi - Zi-1 sobre el plano perpendicular a Xi y el signo lo da la regla de la mano derecha
Distancia entre los ejes Zi-1 y Zi, a lo largo de Xi y el signo lo define el sentido de Xi
Angulo que forman los ejes Xi - Xi-1 sobre el plano perpendicular a Zi y el signo lo determina la regla mano derecha.
Distancia a los largo del eje Zi-1 desde el origen del sistema Si-1 hasta la intersección del eje Zi, con el eje Xi.
0




1




2




3




4





8.- Dinámica 

Explique los conceptos de modelo dinámico directo e inverso:

       Modelo dinámico directo

       Modelo dinámico inverso
  

miércoles, 26 de septiembre de 2012

Investigar sobre PID

Definición

Un PID (Proporcional Integral Derivativo) es un mecanismo de control por realimentación que calcula la desviación o error entre un valor medido y el valor que se quiere obtener, para aplicar una acción correctora que ajuste el proceso. El algoritmo de cálculo del control PID se da en tres parámetros distintos: el proporcional, el integral, y el derivativo. El valor Proporcional determina la reacción del error actual. El Integral genera una corrección proporcional a la integral del error, esto nos asegura que aplicando un esfuerzo de control suficiente, el error de seguimiento se reduce a cero. El Derivativo determina la reacción del tiempo en el que el error se produce. La suma de estas tres acciones es usada para ajustar al proceso vía un elemento de control como la posición de una válvula de control o la energía suministrada a un calentador, por ejemplo. Ajustando estas tres variables en el algoritmo de control del PID, el controlador puede proveer un control diseñado para lo que requiera el proceso a realizar. La respuesta del controlador puede ser descrita en términos de respuesta del control ante un error, el grado el cual el controlador llega al "set point", y el grado de oscilación del sistema. Nótese que el uso del PID para control no garantiza control óptimo del sistema o la estabilidad del mismo. Algunas aplicaciones pueden solo requerir de uno o dos modos de los que provee este sistema de control. Un controlador PID puede ser llamado también PI, PD, P o I en la ausencia de las acciones de control respectivas. Los controladores PI son particularmente comunes, ya que la acción derivativa es muy sensible al ruido, y la ausencia del proceso integral puede evitar que se alcance al valor deseado debido a la acción de control.

Archivo:PID.svg
Diagrama en bloques de un control PID.

Funcionamiento

Para el correcto funcionamiento de un controlador PID que regule un proceso o sistema se necesita, al menos:
  1. Un sensor, que determine el estado del sistema (termómetrocaudalímetro,manómetro, etc).
  2. Un controlador, que genere la señal que gobierna al actuador.
  3. Un actuador, que modifique al sistema de manera controlada (resistencia eléctrica, motor, válvula, bomba, etc).
El sensor proporciona una señal analógica o digital al controlador, la cual representa el punto actual en el que se encuentra el proceso o sistema. La señal puede representar ese valor en tensión eléctrica,intensidad de corriente eléctrica o frecuencia. En este último caso la señal es de corriente alterna, a diferencia de los dos anteriores, que son con corriente continua.
El controlador lee una señal externa que representa el valor que se desea alcanzar. Esta señal recibe el nombre de punto de consigna (o punto de referencia), la cual es de la misma naturaleza y tiene el mismo rango de valores que la señal que proporciona el sensor. Para hacer posible esta compatibilidad y que, a su vez, la señal pueda ser entendida por un humano, habrá que establecer algún tipo deinterfaz(HMI-Human Machine Interface), son pantallas de gran valor visual y fácil manejo que se usan para hacer más intuitivo el control de un proceso.
El controlador resta la señal de punto actual a la señal de punto de consigna, obteniendo así la señal de error, que determina en cada instante la diferencia que hay entre el valor deseado (consigna) y el valor medido. La señal de error es utilizada por cada uno de los 3 componentes del controlador PID. Las 3 señales sumadas, componen la señal de salida que el controlador va a utilizar para gobernar al actuador. La señal resultante de la suma de estas tres se llama variable manipulada y no se aplica directamente sobre el actuador, sino que debe ser transformada para ser compatible con el actuador utilizado.
Las tres componentes de un controlador PID son: parte Proporcional, acción Integral y acción Derivativa. El peso de la influencia que cada una de estas partes tiene en la suma final, viene dado por la constante proporcional, el tiempo integral y el tiempo derivativo, respectivamente. Se pretenderá lograr que el bucle de control corrija eficazmente y en el mínimo tiempo posible los efectos de las perturbaciones.

Aplicaciones / Ejemplo

Un ejemplo muy sencillo que ilustra la funcionalidad básica de un PID es cuando una persona entra a una ducha. Inicialmente abre la llave de agua caliente para aumentar la temperatura hasta un valor aceptable (también llamado "Setpoint"). El problema es que puede llegar el momento en que la temperatura del agua sobrepase este valor así que la persona tiene que abrir un poco la llave de agua fría para contrarrestar el calor y mantener el balance. El agua fría es ajustada hasta llegar a la temperatura deseada. En este caso, el humano es el que está ejerciendo el control sobre el lazo de control, y es el que toma las decisiones de abrir o cerrar alguna de las llaves; pero no sería ideal si en lugar de nosotros, fuera una maquina la que tomara las decisiones y mantuviera la temperatura que deseamos?
Esta es la razón por la cual los lazos PID fueron inventados. Para simplificar las labores de los operadores y ejercer un mejor control sobre las operaciones. Algunas de las aplicaciones más comunes son:
  • Lazos de Temperatura (Aire acondicionado, Calentadores, Refrigeradores, etc.)
  • Lazos de Nivel (Nivel en tanques de líquidos como agua, lácteos, mezclas, crudo, etc.)
  • Lazos de Presión (para mantener una presión predeterminada en tanques, tubos, recipientes, etc.)
  • Lazos de Flujo (mantienen la cantidad de flujo dentro de una línea o tubo)1


Video:

Presentación usos Prácticos:


http://prezi.com/lqhjqlvbpmab/pid-controller/

sábado, 15 de septiembre de 2012

Gráfica de PID

El resulatdo de la función u(t) = -t^2/2

>> t = 0:0.1:1

t =

  Columns 1 through 7

         0    0.1000    0.2000    0.3000    0.4000    0.5000    0.6000

  Columns 8 through 11

    0.7000    0.8000    0.9000    1.0000

>> w = -0.5*t.^2

w =

  Columns 1 through 7

         0   -0.0050   -0.0200   -0.0450   -0.0800   -0.1250   -0.1800

  Columns 8 through 11

   -0.2450   -0.3200   -0.4050   -0.5000

>> plot (t,w)




Circuito Digital Autómata


Circuito desarrollado en Matlab R2012a