Vision Artificial Aplicada a la Robotica

Chico3001 al parecer tenemos el mismo kit Cyclone II Altera y creo que es la misma camara que la CMUCAM dado que en la CMUCAM ya trae especial su tarjeta para manipularla con un micro.
 
adrianjpc dijo:
creo que la camara solo trae un SX28 un microcontrolador CMOS, no se distinguir si es un ARM y un AVR ademas trae un max232 para la trasmicion de datos TTL y poder utilizarlo con un micro.

Tienes toda la razón, la que trae un ARM es la CMUCAM3.

Chico3001 dijo:
Lo dificil no es usar cualquier camara por que son seriales, lo dificil es procesar la imagen para poder aplicarla al mundo real.

Completamente de acuerdo, y menos si a uno no le gustan esas areas (en mi caso particular). De hecho ahorita tengo la opción de tomar un curso de "Vision" con un buen profesor, pero no me gusta mucho, prefiero tomar otro. :D


Chico3001 dijo:
Las consideraciones que hay que tener son:

- Casi todas las camaras son de 3.3V
- Hay que saber la resolucion de la camara y mejor aun su numero de parte para poder encontrar el datasheet
- Entre mayor resolucion mas complejo es procesar la información y mayor velocidad se requiere

Por lo que creo que podemos desarmar celulares o camaras digitales viejas y reutilizar el CCD en vez de comprar una hecha....

El que sean de 3.3V no le veo mayor inconveniente. Por lo demás conozco unas camaras (voy a buscar el link) que tienen bastante información, que me agradaron mucho cuando las vi, ya que incluso tenia CCDs de 5MP y varios lentes. Podias comprar solo el CCD o también un circuito de procesamiento de imagen, que te la entregaba en JPG. El precio estaba bastante amigable (en USA, por supuesto).

He tratado la opción del celular sin mucho exito, ya que los que he desarmado la camara tiene unos conectores muuuuy dificiles de conseguir, y por lo tanto bastante complicado para experimentar.


adrianjpc dijo:
gracias eidtech por tu comentario, ojala y te integres al desarrollo de este proyecto

Estaria bien pero la robotica no me atrae mucho que digamos jeje... todo lo que son sistemas embedded me encanta pero a los robots no les acabo de encontrar el gusto.
 
hola Meta la idea es esa pero primero hay que saber las bases para poder desarrollar cualquier aplicacion que tu quieras
como la que muestras en el video.

lo principal es saber procesar las imagenes con cualquier algoritmo. por ejemplo emplear una red neuronal o logica difusa en cuanto a sistema de control.
pero para eso hay que mandar a comprar las herramientas para desarrollar esto, como es la camara o sensores.


eidtech dice que encontro una camara barata de 5mp ojala y nos mande el link para que ya empezemos a programar
en el microcontrolador. otra opcion para que no nos salga muy cara la mandemos a pedir entre todos para descuentos y para que el envio salga varato y alguien que se encargue de enviarla a sus casa, yo creo que la mayoria es de mexico.

La CMUCAM3 como la que comenta eidtech es mejor que la CMUCAM1 trae mas opciones mas velocidad de iamgen, mayor resolucion etc a mi parece es la mejor pero es la mas cara.

yo creo que ya es hora de que nos pongamos de acuerdo y las mandemos a pedir para empezar a trabajar.
 
Por el momento empezare hacer pruebas con el FPGA que incluye el kit de altera cyclone II ademas cuenta con una camara y un pantalla LCD de matriz Activa TFT
 
saludos..
solo un comentario espero les sirva
una buena opcion para controlar la (cmucam) seria el Bs2 de parallax bienen varios ejemplos de programacion para el control de la camara he incluso en la pagina oficial de cmucam esta el manual biene un ejemplo de como hacer un pequeño robot con la cmucam3
 
diegorobot gracias por tu comentario sera tomado en cuenta
ojala y sigas comentando y no ayudes a desarrollar este proyecto ,el cual es el inicio
de una nueva era "la vision artificial" por algo se emppieza no!

ojala y no abandonen este tema sigas buscando opciones de apoyos con instituciones por si el motivo es el dinero .


saludos a todos
 
este es un ejemplo de como se programa la CMUCAM en un microcontrolador Parallax Boebot. Este programa hace que el robot identifique la pelota color roja.





'{$STAMP BS2}

' CMUcam Boe-Bot Demo Program 3

' Copyright 2002, Seattle Robotics

' Basic Stamp 2

' CMUcam jumpered for Baud 9600

' make "red" a fixed color

RcvData Var Byte(10)

n var byte
Confid var byte

' Pause and flash leds 1 sec for CMUcam startup
high 1 'turn on cmucam

high 3 'flash yel status led
pause 200
low 3
pause 200

high 5 'flash grn status led
pause 200
low 5
pause 200

high 13 'flash red status led
pause 200
low 13
pause 200

' Send "reset" to sync CMUcam and Stamp
serout 10, 84, ["RS",CR]
serin 11, 84, [Wait (":")]
pause 1000

' Green LED on
serout 10, 84, ["L1 1",CR]
serin 11, 84, [Wait (":")]
pause 100

' Turn on auto adjust for 5 seconds
serout 10, 84, ["CR 18 44",CR]
serin 11, 84, [Wait (":")]
pause 100

' Pause 5 seconds for CMUcam to auto adjust to lighting conditions
pause 5000

' Turn off auto adjust
serout 10, 84, ["CR 18 44 19 32",CR]
serin 11, 84, [Wait (":")]
pause 100

high 5 'flash grn status light to show auto adjust done
pause 200
low 5

' Green LED auto mode
serout 10, 84, ["L1 2",CR]
serin 11, 84, [Wait (":")]
pause 100

' Give user time to place color target close in front of camera
'pause 5000

' Send command - Set poll mode - only sends one return packet -
' of data after each command - reduces data flow
serout 10, 84, ["PM 1",CR]
serin 11, 84, [Wait (":")]
pause 100

' Send command - Set raw data mode - also suppress Ack:/Nak: to -
' further reduce serial data
serout 10, 84, ["RM 3",CR]
pause 100

' Track Window command looks at the center of CMUcam image -
' grabs the color informaciónrmation and sends to the Track Color function

' Send command - Track window
''serout 10, 84, ["TW",CR]

' Ignore the S packet and M packet from TW
pause 2000

Main:

' Send command - Track color (with no arguments) -
' will track red color
serout 10, 84, ["TC 235 240 14 18 14 18",CR]

serin 11, 84, [STR RcvData\10]

Confid = RcvData(9)

' 45 is aprox H center

If RCVData(2) > 65 And Confid > 10 Then Left
If RCVData(2) < 25 And Confid > 10 Then Right
If RCVData(8) < 150 And Confid > 15 Then Fwd

' Trim the pulsout numbers for your servos
Goto Main

Left:
high 13
for n = 1 to 10
pulsout 14,680 ' 680 right servo
pulsout 15,680 ' 680 left servo
next
low 13
Goto main

Right:
high 3
for n = 1 to 10
pulsout 14,820 ' right servo
pulsout 15,820 ' left servo
next
low 3
Goto main

Fwd:
high 5
for n = 1 to 10
pulsout 14,820 ' right servo
pulsout 15,680 ' left servo
pause 15
next
low 5

Goto main

alguien que sepa en que sofware esta programado?

opinen saludos
 
Respondiendo a mi pregunta sobre el sofware donde se programan los Bs2 de parallax.

El PBasic es el compilador para los Basic Stamp de Parallax, que son microcontroladores basados en otros microcontroladores, muy sencillos de entender y con recursos muy potentes.

referencia http://en.wikipedia.org/wiki/PBASIC

El siguiente es un completo listado de los comandos PBASIC para las dos versiones de Stamps . No se incluyen los operadores aritmeticos o lógicos. Muchos perfeccionamientos fueron hechos al lenguaje PBASIC para ser usados en la BASIC Stamp II y por lo tanto estos comandos sólo existen en una de las versiones de las BASIC Stamps.



BRANCHING
IF . . .THEN Compara y condiciona el ciclo.
BRANCH Similar al If...Then pero para varias condiciones.
GOTO Ir a una dirección.
GOSUB Ir a una dirección que consiste en una subrutina.
RETURN Ir al comienzo de la subrutina.

LOOPING (SALTO)
FOR . . . NEXT Establecimiento de un salto (ciclo).

NUMÉRICOS
LET Comando para asignar variables, tales como A=5, B=A+2, etc. Las posibles operaciones son suma, resta, multiplicacíon, división, max. limit, min. limit, y operaciones lógicas AND, OR, XOR, AND NOT, OR NOT, y XOR NOT.
LOOKUP Buscar datos especificados por offset y guardarlos en variable.
LOOKDOWN Encuentra número (0-N) y lo almacena en variable.
RANDOM Genera un número pseudo-random.

E/S DIGITALES
INPUT Hacer de un pin una entrada
OUTPUT Hacer de un pin una salida
REVERSE Si el pin es una salida, dejarlo como entrada. Si el pin es una entrada, dejarlo como una salida.
LOW Hacer de un pin una salida de baja.
HIGH Hacer de un pin una salida de alta.
TOGGLE Hacer de un pin una salida (comutación reversible).
PULSIN Medir un pulso de entrada.
PULSOUT Salida en pulso temporizado invertendo un pino por algun tiempo.
BUTTON Previene alteraciones por causa de apertura o cierre de circuitos.
SHIFTIN Cambio por deslocamento de bits de paralelo a serial.
SHIFTOUT Cambio por deslocamento de bits de serial a paralelo.
COUNT Cuenta ciclos de un pin por un tiempo determinado (0 a 125 kHz, assumindo 50/50 duty cycle).
XOUT Genera códigos de control X-10 .

E/S SÉRIAL
SERIN Recibe datos en forma serial. Para la Stamp D y BS1-IC, la cantidad de baudios posibles son de 300, 600, 1200, y 2400 . Para la BS2-IC y BS2SX-IC, cualquier número de baudios (hasta 50k baud) es posible.
SEROUT Envía datos en forma serial. Para la Stamp D y la BS1-IC, los datos son enviados a 300, 600, 1200, o 2400 baudios. Para la BS2-IC y BS2SX-IC, los datos se envían a velocidades de hasta 50k baudios.

E/S ANÁLOGICOS
PWM Salida PWM, luego retorna el pin a entrada. Esto puede ser usado para obtener voltajes análogos (0 a 5 V) usando un condensador y una resistencia.
POT Lee potenciómetro (5 a 50K).
RCTIME Mide el tiempo de carga/descarga del RC. Puede ser usado para medir potenciómetros (Es más rápido que el comando POT de la Stamp D y la BS1-IC).

SOM
FREQOUT Genera uno o dos ondas seno de frecuencias específicas (cada una desde 0 a 32767 Hz).
DTMFOUT Genera DTMF (tonos telefónicos).
SOUND Toca notas. Nota 0 es silencio, notas 1 a 127 son tonos ascendientes, y las notas 128 a 255 son ruidos.

ACCESO EN EL EEPROM
DATA Almacena datos en EEPROM antes de descargar el programa BASIC (BS2-IC y BS2SX-IC).
EEPROM Almacena datos en EEPROM antes de descargar el programa BASIC (Stamp D and BS1-IC)
READ Lee un byte EEPROM en variable.
WRITE Escribe un byte en la EEPROM

TIEMPO
PAUSE Ejecuta una pausa de 0 a 65536 milisegundos.

CONTROL ENERGIA
NAP Ejecutando Nap por períodos cortos. El consumo de energía es reducido.
SLEEP Duerme desde 1 a 65535 segundos. El consumo de energía es reducido a 20 µA (Stamp D and BS1-IC) o 50 µA (BS2-IC y BS2SX-IC).
END Modo Sleep hasta que los ciclos de energía o el PC se conenten. El consumo de energía es el mismo que en el modo sleep.

DEBUGGING DEL PROGRAMA
DEBUG Envía variables al PC para mostrar por pantalla. todo esta aqui http://www.aliatron.com/parallax/pbasic_sp.htm
 
saludos adrianjpc

en efecto muy buena pagina la de www.todomicrostamp.com todo un mundo de los microcontroladores de parallax.

mira les dejo la direccion de la pagina oficial de la cmucam http://www.cs.cmu.edu/~cmucam/home.html

en ella encontraras algunos ejemplos de aplicacion y como hacer un robot dotandolo de vision.

Demasiado interesante el tema de la cmucam yo en lo personal tengo la cmucam1 y tengo el bs2-ic de parallax y te cuento la verdad es muy emocionante mirar a tu robot que esta siguiendo un color conforme este se mueva claro esta que la cmucam1 solo identifica colores no del todo se puede visualizar una imagen clara.

Si quieres desarrolar lo que es vision artificial en tiempo real recomendable la cmuca3 es la mas avanzada y ya nos muestra una imagen clara de lo que esta pasando en tiempo real.

Con lo que respecta a proyectos con la cmucam yo estoy desarrollando un exapod mas bien diria yo un super hexapodo utilizo 6 servos por pierna bastante interesante el proeycto por que tendriamos el control de 36 servos, ademas agregare algunos sensores infrarojo, acelerometro, y claro esta la cmucam3 para dotarlo de vision por el momento solo tengo el hadware ya montado solo hace falta dedicarle tiempo a la programacion.

Y bueno es uno de los proyectos que estoy desarrollando pero a quedado parado por el momento falta de tiempo, ademas se pueden hacer demasiadas cosas con la cmucam.

Les adelanto otro proyecto muy interesante con la cmucam es crear una interfaz para controlar desde la tarjeta de control de Robonova la cmucam para dotar al robot de vision y asi interactue por el mismo en un entorno determinado teniendo todo y listo para hacerlo Robocopa haya vamos jaja.

De igual manera puedes manejar la cmucam desde matlab es algo complicado en verdad pero pues si te gusta aprendes las cosass rapido y te gusta investigar mas y mas asta lograr tu objetivo.
Espero y les sirva lo anterior .
 
Atrás
Arriba