sábado, 5 de enero de 2013

Golpear Pelota y hace movimientos


INICIO:
    PRINT "Presione la tecla enter para escanear y la tecla escape para Salir"
    LET C = $KBD

    IF C = 13 THEN
        MOVE @{2,50,200},10,1000
        FOR A = 10 TO 40
            LET B = 5 * A
            'PRINT B
            MOVE @{2,B,200},1,100
           
            'WAIT 200
            'PRINT "PSD = "; $PSD
            IF $PSD < 20 THEN
            '   PRINT "ENTRA IF"
                MOVE @{2,B,45},1,50
                WAIT 500
                MOVE @{2,B,200},1,50
                GOTO REGRESAR
            ENDIF
            'PRINT "FUERA DEL IF"
        NEXT A
        REGRESAR:
        MOVE @{2,50,200},1,1000
    ELSE
        'PRINT "ENTRA ELSE"
        IF C=27 THEN
            GOTO FINALIZAR
        ENDIF
    ENDIF
   
    GOTO INICIO
   
FINALIZAR:
END



INICIO:

PRINT "Presione Enter para guardar posiciones y ESC para realizar movimientos guardados"

DELETE *
LET C = 0
SERVO 0 = @
SERVO 1 = @

LECTURA:

LET G = $KBD
LET A = $SERVO(0)
LET B = $SERVO(1)
IF G = 13 THEN
    C = C+1
    INSERT C, A
    C = C+1
    INSERT C, B
    PRINT "Posicion";A;" - ";B;" Guardada"
ELSE
    IF G = 27 THEN
        GOTO MOVER
    ENDIF
ENDIF
GOTO LECTURA

MOVER:
LET D = C/2
LET F = 0

IF C = 0 THEN
    PRINT "Tiene que guardar posiciones antes de Ejecutar Mov"
    GOTO LECTURA
ENDIF

FOR E = 1 TO D
    F = E * 2
    MOVE @{2,@![F-1],@![F]},10,1000
NEXT E

PRINT "Presione Enter para volver a ejecutar o ESC para Salir"

ESPERANDORESPUESTA:

LET H = $KBD

IF H = 27 THEN
    GOTO SALIR
ELSE
    IF H = 13 THEN
        GOTO INICIO
    ENDIF
ENDIF

GOTO ESPERANDORESPUESTA

SALIR:
SERVO 0 = @
SERVO 1 = @
END


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