Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Visión y problemillas varios

5 Respuestas
4 Usuarios
0 Reactions
2,139 Visitas
TumBos
Respuestas: 158
Topic starter
(@tumbos)
Estimable Member
Registrado: hace 19 años

Estoy metido con visión artificial y ahora estoy haciendo un seguidor (tracker) para la cámara. La idea es que la cámara me siga el color preestablecido (HLS y no RGB). La cámara la he puesto en un Pant & Tilt (Futaba 3003) y 16f877a. Mediante Borland C++ recojo la imagen (352x288) y la trato pasándole los datos de posición por el puerto serie al PIC. No utilizo ninguna libreria (sí...ya lo sé OpenCV y blablabla) y la verdad que es alucinante lo rápido que puede llegar a tratar la imagen y eso que ni mucho menos está optimizado el programa.
Lo bueno del caso es que he sido capaz, en las primeras pruebas, de poder seguir en modo automático una pieza de color autocentrándose la imagen en el objeto filtrado. "el ojo que te sigue" . Me parecia como lo de Robocop (jajaja). También he probado un puntero láser por la habitación y lo sigue perfectamente. Pero aún me queda muuuuucho trabajo por hacer.

Aprovechando el hilo, aunque no va aquí ya lo sé, tengo un problemilla con los delays de las rutinas de los servos.Cuando los tengos "parados" son estables. Pero cuando empieza a entrar datos al puerto serie del PIC a los servos les coje el parkinson como ya me imaginaba. He probado a diferentes frecuencias de transmisión y no he podido hacer nada. He pensado que usando los dos PWM que lleva el PIC me ahorraría esos molestos movimientos de los servos( como podeis imaginar la imagen recibida es como un día de juerga de los que al dia siguiente no te acuerdas de nada ;-). Supongo que al no "interrumpir" los delays la cosa mejorará. ¿alguien lo ha probado usando PWM hardware?

La visión artificial está muy dejada para robots "caseros" y practicamente las soluciones son más caras que todo el robot y es una cosa que siempre le estoy dando vueltas. Lo guapo sería hacer algo al respecto. No sé, alguna plataforma hardware sencilla para tratar imagenes aunque esto parece una incongruencia (visión-sencillez-barato). He buscado links al respecto pero termino con la MCUCAM,ó con ratones ópticos (desechado, pocas resolución) ó profesionales y eso para nuestros bolsillos no es bueno.
Usando FPGA´s ó "cosas parecidas" sería interesante hacer algo pero es un mundo que desconozco (como otros muchos). Agradecería cualquier información al respecto.

Saludos
Tumbos

Responder
4 respuestas
_jm_
Respuestas: 961
 JM
(@_jm_)
Prominent Member
Registrado: hace 20 años

Los delays por hardware van con el timer 2 del pic, que sólo es conducido por el oscilador interno, por lo que no sé si podras alcanzar una frecuencia tan baja para el servo.

T = (PR2 +1) * (Tosc*4*(timer 2 prescale value))

Esa es la formula del período para el pwm por hard, siendo el prescale máximo creo 16, y PR2 de 0 a 255, 8 bits.

No sé como generaras el pwm por soft, pero una forma para que no se te vayan los delays, puede ser iniciar el programa cada vez que salta la interrupción de un timer, y el periódo del pwm y duty lo haces con un contador que crees por soft. Depende del tiempo que necesites de transmisión. Tb puedes usar algún buffer u otro pic.

Respecto a las FPGAs a mi es la parte que más me gusto de la "electrónica digital",valen más y son más difíciles de soldar, pero es impresionante lo que se puede hacer con ellas, yo me hice con una placa de spartan3, digamos que me quede "colgado" de ellas.

Para programarlas se usa VHDL, y tienes que crear y definir todo el "sistema", es decir que si quieres implementar un contador, pues tienes que crear ese contador, y definir como funciona, lo mismo con cualquier otro componente (como si quieres hacer un pic dentro de la fpga), cada bloque/componente con sus entradas y salidas, y luego dices como se conectan todas esas entradas y salidas, vamos como si estuvieras creando ics y conectandolos en un proto XD, necesitan de una memoria para cargar el programa al inicio.

No sé, si te gusta la electrónica digital disfrutarás con ellas, eso sí, al principio cuesta un poco hacerse con el vhdl, yo tb estoy intentando aprender con ellas, ya que en la uni mucho no se hace o hice y me queda mucho por saber, pero son tantas cosas las que aprender...

http://www.digilentinc.com/ aquí tienes algunas placas con fpga que no salen mal de precio. S2

Responder
roboticsbcn
Respuestas: 244
(@roboticsbcn)
Estimable Member
Registrado: hace 20 años

Si quieres usar una FPGA para temas de visión te tendras que gastar una pasta, pq necesitas prestaciones elevadas y muchas macrocelulas y mas pensando en programar en VHDL. Eso si... una vez lo tengas resuelto vas a tener un sistema de visionado muy rapido.

Por cierto, si a alguien le interesa tengo algunos componentes de la Família MAX7000 de ALTERA, concretamente el modelo EPM7128-SLC84 programable con JTAG. Si puedo, intentaré rescatar la placa de programación que construí usando el Byteblaster.

Salu2!

Responder
mif
Respuestas: 1095
 Mif
(@mif)
Noble Member
Registrado: hace 19 años

TumBos, que bien que haya otro más metido en esto!
yo no tengo mucho tiempo, peor quiero ponerme de nuevo con ello... la verdad es que nunca lo he enfocado del modo en que lo has hecho tu, y me parece muy interesante, porque yo siempre hago sistemas de VA estáticos para controlar el robot por gestos, pero el hecho de que sea el propio robot quien genere la imagen es muy interesante... tengo alguna idea en mente que implica hacer cosas con tu modelo de VA, pero aun son sólo ideas... ya iré comentando cuando las tenga más claras 🙂

Responder
TumBos
Respuestas: 158
Topic starter
(@tumbos)
Estimable Member
Registrado: hace 19 años

Mif,
ya me imaginaba que postearias algo sobre esto sabiendo que has estado haciendo cosas de control a través de imagenes. Si tienes alguna idea la compartimos que eso es lo interesante.

Cuando tenga algo más pulido ya lo subiré aunque sea un minitutorial.

RoboticsBCN , lo de la FPGA ya había mirado Xilinx pensado que muy cara una placa de entrenamiento pero tampoco lo es sabiendo las caracteristicas que tiene.Tambíen estoy mirando ejemplos en VHDL para hacerme una idea del lenguaje y potencia.( y ya lo poco que he visto..pufff)

He desestimado la idea de acceder a tráves de USB por temas de protocolo aunque en http://alpha.dyndns.org/ explican algunos drivers sobre linux para sensores de Omnivisión pero sería interesante saber de otros fabricantes y sobre todo tener ejemplos.

Un saludo.

P.D. hablando de visión... para quien le guste la R.A. y jugar... (ya me gustaría saber hacer esto)
http://youtube.com/watch?v=5ks1u0A8xdU

Responder
Compartir: