sábado, 15 de diciembre de 2012

Clase 15 Dic 2012

Control
En una matriz de 3x3 se colocan objetos en diferentes puntos, el brazo robotico debe realizar movimientos para leer la posición de los objetos dentro de la matriz.

Desarrollo: 

1-. Para soltar los servos y decidir la posición de lectura

inicio:
SERVO 0 = @
SERVO 1 = @

LET A= $SERVO(0)
LET B= $SERVO(1)
PRINT "A: ", A, "; B: ", B

LET K=$KIR
PRINT "K: ", K
IF K<0 THEN
  GOTO inicio
ENDIF

2-. Realizar el movimiento del servo en las medidas, dividida en tres estaciones.

MOVE @{2,15,128},10,1000
WAIT 50
MOVE @{2,48,128},10,1000
WAIT 50
MOVE @{2,76,128},10,1000
WAIT 50

3-. Leer en cada una de las estaciones antes definidas.

inicio:

MOVE @{2,15,128},10,1000
WAIT 50
LET L=$PSD
PRINT "a: ", L

MOVE @{2,48,128},10,1000
WAIT 50
LET M=$PSD
PRINT "b: ", M

MOVE @{2,76,128},10,1000
WAIT 50
LET N=$PSD
PRINT "c: ", N

LET K=$KIR
IF K<0 THEN
  GOTO inicio
ENDIF

4-.Recorre, Lee y Define el cuadrante de la matriz
inicio:

'primer movimiento
MOVE @{2,15,128},10,1000
WAIT 20
LET L=$PSD
PRINT "a: ", L


'segundo movimiento
MOVE @{2,48,128},10,1000
WAIT 20
LET M=$PSD
PRINT "b: ", M


'tercer movimiento
MOVE @{2,76,128},10,1000
WAIT 20
LET N=$PSD
PRINT "c: ", N

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

PRINT "| ",A," | ",B," | ",C," |"
PRINT "| ",D," | ",E," | ",F," |"
PRINT "| ",G," | ",H," | ",I," |"

IF L<=30 & L>25 THEN
A=1
ENDIF

IF L<=25 & L>20 THEN
D=1
ENDIF

IF L<=20 & L>=16 THEN
G=1
ENDIF

IF M<=30 & M>25 THEN
B=1
ENDIF
IF M<=25 & M>20 THEN
E=1
ENDIF
IF M<=20 & M>=16 THEN
H=1
ENDIF

IF N<=30 & N>25 THEN
C=1
ENDIF
IF N<=25 & N>20 THEN
F=1
ENDIF
IF N<=20 & N>=16 THEN
I=1
ENDIF

PRINT "------------"
PRINT "| ",A," | ",B," | ",C," |"
PRINT "| ",D," | ",E," | ",F," |"
PRINT "| ",G," | ",H," | ",I," |"

viernes, 14 de diciembre de 2012

Brazo Robótico- Circulo

Circulo

MOVE @{2,95,121},10,1000
WAIT 500
MOVE @{2,95,136},10,1000
WAIT 500
MOVE @{2,119,185},10,1000
WAIT 500
MOVE @{2,146,221},10,1000
WAIT 500
MOVE @{2,164,221},10,1000
WAIT 500
MOVE @{2,56,24},10,1000
WAIT 500
MOVE @{2,69,53},10,1000
WAIT 500
MOVE @{2,90,94},10,1000
WAIT 500
MOVE @{2,91,115},10,1000
WAIT 500



Video Navideño ROBOBUILDER
http://www.youtube.com/watch?v=7LnKTErIsyE

sábado, 1 de diciembre de 2012

Clase 01 Diciembre

Como imprimir Hola mundo 10 veces

LET i=1
inicio:
  PRINT "Hola mundo", i
  IF i=10 THEN salir ELSE sumar
sumar:
  LET i=i+1
  GOTO inicio
salir:
  PRINT "Hemos impreso ", i," Lineas con la frase hola mundo"

Listas

//suelta el servo y muestra su posición

inicio:
SERVO 0 = @
LET A=$SERVO(0)
PRINT A

IF $KIR < 0 THEN
  GOTO inicio
ENDIF

//hola mundo 10 veces

let 1
print "hola mundo"
if i=10 then 60 else 40
let i=I+1
goto 20
Print "hemos impreso ", i," Lineas con la frase hola mundo"

// imprimir hoal mundo 10 veces

LET i=1
inicio:
  PRINT "Hola mundo", i
  IF i=10 THEN salir ELSE sumar
sumar:
  LET i=i+1
  GOTO inicio
salir:
  PRINT "Hemos impreso ", i," Lineas con la frase hola mundo"

//manejo de listas
lista : el primer elemento declara el largo de la lista

LET i=0
  PRINT "----- PROBANDO LISTAS -----"
  LIST A=5,4,3,2,1,6
  PRINT "Muestra la lista  ", @a
Elementos:
  PRINT "Elemento en la posicion ",i, "--> ", @a[i]
  i=i+1
  IF i=5 THEN salir ELSE elementos
salir:
  LET A=@A
  PRINT "Largo de la lista= ";A

 
PRINT "____valores segun Ascii en Out"
LIST A=5,65,66,67,68,69
  FOR i=0 TO 4
  PRINT "  "
  OUT @a[i]
  NEXT i

//$RND: Ramdom
mod: obtiene el resto de la división con otro numero.

PRINT "--> generamos numeros al azar y obtenemos los mod de 6"
FOR j=1 TO 10
PRINT $RND mod 6
NEXT j

sábado, 24 de noviembre de 2012

Brazo Robótico

Brazo Robótico (parte de ROBOBUILDER)


Una vez conectado el brazo al computador, se debe verificar el puerto (COM) desde
Panel de control
          Sistema
                Hardware
                        Administrador de dispositivos
                                  Puertos (COM & LDP)

Abrir el editor BasicIDE 455.exe
tiene 3 vistas: editor, output, VT100(la consola)
en output ocurre lo siguiente
En la primera sección, asigna un numero a cada una de las lineas de codigo
En la segunda sección, traduce las líneas de codigo al lenguaje que el robot lo pueda entender
En la tercera sección, 


Algunos comandos para la consola del editor:
i: modo ingreso
r: modo ejecución
R: ejecuta el programa en modo debug
l: lista programa
c: borrar memoria

Pagina con codigos de referencia
http://code.google.com/p/robobuilderlib/

Para asignar el valor a una variable se utiliza:
let variable=numero      

Etiquetas  
palabra:

$KBD -> para reconocer lo que ingresa por teclado
             Let A=$KBD
             Print A
$IR -> control remoto
$KIR -> mescla control con teclado

$PSD -> mide la distancia de un objeto

Para probar que el codigo funciona se debe 
Compilar
     Descargar (descarga el programa al complilador del robot)

         Precionar el botón rojo del control remoto o escribir R en la consola

Ejemplo:
Inicio:
Let A=$KBD
Print A
goto Inicio
 ____
este prgrama permite soltar la articulación (en este caso la articulación 0)

Inicio:
servo 0=@
let A= $servo(0)
print A
if $KIR < 0 then
goto inicio
endif





                         

viernes, 26 de octubre de 2012

Tarea 10

Preguntas 

1)Cuáles son los tipo de robot?  

Tipo A : Manipulador.
Tipo B : Manipulador automático.
Tipo C : Robot programable con trayectoria.
Tipo D : Robot capaz de captar datos de su entorno y adaptar su acción.

 2)Cómo se clasifican los agentes autómatas?

Reactivo.
Reactivo basado en el modelo.
Basado en objetivos.
Basado en utilidad.
Que aprenden.
De consultas.

3)Al trabajar en cinemática, es verdad que una propiedad es que la multiplicación de matrices es conmutativa?

No, puesto que el orden de multiplicación en las matrices sí importa y se debe realizar desde la primera transformación hacia adelante.
ejemplo:
M=original
M1=rotación eje X
M2=traslación
M3=rotación eje Z
se debe multiplicar : [(M*M1)*M2]*M3

4)Qué busca la transformación de Laplace?

Busca transformar ecuaciones diferenciales en ecuaciones algebraicas. Utilizado para simplificar el calculo del control PID

5) Cuales son los componentes típicos de un Actuador?

Inductancia (L)
Resistencia (R)
Constante de fuerza eletromotriz (Ke)
Constante torque (Kt)
Momento de inercia (I)
Rozamiento viscoso(b)

6) Cual es la finalidad del modelo Denavit Hartenberg?

Busca calcular todas las modificaciones necesarias por un circuito para llegar a la posición final en un conjunto de articulaciones.

sábado, 20 de octubre de 2012

Simulación Brazo Robótico


En MatLab

Li=link([alphai ai tetai di sigmai)

R= robot ({Li Li+1 Li+2})
R.name='RoboKit';
plot (R,[0 0 0])
donde sigma= 0 (rotación) o sigma=1 (prisma, movimiento sobre el eje)
además alpha y teta debe estar en radianes.


sábado, 29 de septiembre de 2012

Tarea 7: Multiplicación de Matrices

Descripción

Se pide:
Determinar la Matriz Homogenea H
                     1° Rotación B entorno al eje X



                     2° Traslación en el plano XY





La matriz resultante H
Se multiplica la matriz de rotación por la de traslación.



Por: Constanza Pizarro

Ejercicio 29 Sep.

Resultado Matriz Homogenea H

Daniel Nuñez.

viernes, 28 de septiembre de 2012

Control PID



Control PID

PID significa Proporcional, Integral y Derivativa. Un lazo de control PID está diseñado para eliminar la necesidad de supervisión continúa de una operación por parte de los operadores.





Proporcional (P)
 El control proporcional es en esencia un control anticipativo, es decir, este tendrá un efecto sobre el error en estado estable sólo si el error varía con respecto al tiempo, pero su gran desventaja es que atenúa el ruido en frecuencias altas.

El diseño de este tipo de controlador afecta el desempeño de un sistema de control de las siguientes maneras:

  •   Mejora el Amortiguamiento y reduce el sobrepaso máximo
  •   Reduce el tiempo de asentamiento y levantamiento
  •   Mejora el margen de Ganancia, El margen de Fase.
  •   En la implementación de un circuito puede necesitar un capacitado grande.


La parte proporcional no considera el tiempo, por tanto la mejor manera de solucionar el error permanente y hacer que el sistema contenga algún componente que tenga en cuenta la variación con respecto al tiempo, es incluyendo y configurando las acciones integral(I) y derivativa(D)


Integral (I)
El modo de control integral tiene como propósito disminuir y eliminar el error en estado estacionario, provocado por el modo proporcional(P).

El error es integrado, lo cual tiene la función de promediarlo o sumarlo por un periodo de tiempo determinado, luego es multiplicado por una constante I.

Para obtener una respuesta estable del sistema sin el error estacionario, la respuesta Integral(I) es adicionada al modo Proporcional(P), formando así el control P+I.

El controlador Integral es un circuito electrónico que genera una salida proporcional a la señal de entrada.



Derivativa (D)
La acción Derivativa(D) se manifiesta cuando hay un cambio en el valor absoluto del error, es decir, si el error es constante, sólo actúan  los modos Proporcional(P) e Integral(I).

La función de la acción Derivativa(D), es mantener el error mínimo corrigiéndolo proporcionalmente con la velocidad misma que se produce, de esta manera se evita que el error se incremente.

se deriva con respecto al tiempo y se multiplica por una constante D y luego se suma a las señales anteriores P+I+D. Es importante gobernar la respuesta de control a los cambios del sistema, ya que una mayor acción Derivativa(D) corresponde a un cambio más rápido y el controlador puede responder adecuandamente.



__________________________________

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)





__________________________

Vídeos:

PID con sensor ultrasónico
http://www.youtube.com/watch?v=nw4sSocU6Oo&feature=related
      En el video se muestra la implementacion de un control PID a un carro lego el cual mediante un sensor ultrasonico, tiene que mantener una distancia constante con respecto a un objeto y moverse cuando se mueva este objeto, el PID sera lo que que controle el pwm de los motores y la direccion de giro.



Aplicación: Control de Lazo Cerrado PID 
http://www.youtube.com/watch?v=U8B5CIpmyv0



__________________________________
Bibliografía

http://www.monografias.com/trabajos-pdf/controlador-pid-matlab/controlador-pid-matlab.pdf
http://www.rocatek.com/forum_lazos_control.php




sábado, 8 de septiembre de 2012

Empresas Robotica

http://www.robotec-chile.blogspot.com/

Link de empresa que presta servicios relacionados a la robotica en distintas empresas, como:
CCU cervezas
Crsital
Inmopol
Multimetal
entre otros.