Robótica UDLA
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
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 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 sobre el eje x, y su distancia r al centro de coordenadas, se tiene:
[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:
- (aplicando el Teorema de Pitágoras)
Para determinar la coordenada angular θ, se deben distinguir dos casos:
- Para = 0, el ángulo θ puede tomar cualquier valor real.
- Para ≠ 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 ( denota la inversa de la función tangente):
Para obtener θ en el intervalo (−π, π], se deben usar las siguientes fórmulas:
o equivalentemente
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).
Fuente: Wikipedia.http://es.wikipedia.org/wiki/Coordenadas_polares
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
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
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
$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
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:
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
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, 17 de octubre de 2012
Suscribirse a:
Entradas (Atom)