Sistema de vision de bajo coste basado en´ Raspberry Pi · 1 Sistema de vision de bajo coste...

7
1 Sistema de visi ´ on de bajo coste basado en Raspberry Pi Daniel Torrescusa Rubio, Student, UAB Resumen—La visi ´ on industrial es la parte de la visi´ on por computador m ´ as cercana a la industria que con ayuda de algoritmos simples y robustos adem ´ as de una buena iluminaci´ on es capaz de abordar de forma eficaz problemas muy acotados. Los resultados de este tipo de sistemas van desde el control de calidad a la metrolog´ ıa o como complemento en otros procesos productivos. Los sistemas de visi´ on industrial constan b ´ asicamente de una c ´ amara, un sistema de iluminaci ´ on y un software encargado de hacer el an´ alisis. Hay equipos, smartcameras, donde estas tres partes se unifican en una sola. En este proyecto nos hemos propuesto construir una smartcamera basada en hardware de bajo coste (Raspberry-Pi y RaspiCam) y software libre apoyado en OpenCV. Palabras Clave—Smart Camera, Raspberry Pi, RaspiCam, Piface, OpenCV, Machine Vision Abstract—Industrial vision is the computer vision approach to the industry which utilizing simple and robust algorithms and helped by a good illumination is able to resolve specific problems. The results of these systems include quality control or metrology. As well works as a complement in others productive process. Industrial vision systems are basically a camera, an illumination system and a software for doing the analysis. There are equipments, smart cameras , where we have all of them in only one device. In this project our purpose is building a smart camera based on low cost systems like Raspberry Pi and RaspiCam, and open source projects like OpenCV. 1 I NTRODUCCI ´ ON A lo largo de los a ˜ nos se ha ido reduciendo el precio del hardware de forma constante. ´ Ultimamente este proceso se ha acelerado gracias a la producci´ on masiva de smartphones. En este contexto en el que disponemos de hardware con gran capacidad de omputo echamos de menos software que pueda sacar partido de ´ el en diferentes ´ ambitos. En el mundo de la visi ´ on industrial, las smartcameras son comercializadas con precios muy elevados aunque una buena parte del precio se corresponde con su sensor de visi´ on. Por ello nos parece muy interesante averiguar hasta donde puede llegar un equipo con un precio un orden de magnitud inferior, compuesto por un sensor t´ ıpico de tel´ efono m´ ovil y una Raspberry Pi. E-mail de contacto: [email protected] Menci´ on realitzada: Computaci´ o Tutor: Felipe Lumbreras Ruiz (Ci` encies de la computaci´ o) Curso 2013/14 2 OBJETIVOS El objetivo principal del trabajo es demostrar la posibilidad de construir y usar un sistema de visi ´ on industrial de bajo coste que sea capaz de resolver problemas simples. Para conseguir el objetivo principal nos planteamos los siguientes subobjetivos. Producir un sistema de adquisici´ on de imagen eficaz. Desarrollar un odulo de tratamiento de imagen con un rendimiento adecuado. Acoplar un sistema de entrada/salida que cumpla con nuestras necesidades. 3 ESTADO DEL ARTE Actualmente las Smart Cameras comerciales est´ an basadas en sistemas incrustados compuestos por un procesador de aplicaciones con software optimizado para esta tarea y un sensor de visi´ on

Transcript of Sistema de vision de bajo coste basado en´ Raspberry Pi · 1 Sistema de vision de bajo coste...

1

Sistema de vision de bajo coste basado enRaspberry Pi

Daniel Torrescusa Rubio, Student, UAB

Resumen—La vision industrial es la parte de la vision por computador mas cercana a la industria que con ayuda dealgoritmos simples y robustos ademas de una buena iluminacion es capaz de abordar de forma eficaz problemas muyacotados. Los resultados de este tipo de sistemas van desde el control de calidad a la metrologıa o como complementoen otros procesos productivos. Los sistemas de vision industrial constan basicamente de una camara, un sistema deiluminacion y un software encargado de hacer el analisis. Hay equipos, smartcameras, donde estas tres partes seunifican en una sola. En este proyecto nos hemos propuesto construir una smartcamera basada en hardware de bajocoste (Raspberry-Pi y RaspiCam) y software libre apoyado en OpenCV.

Palabras Clave—Smart Camera, Raspberry Pi, RaspiCam, Piface, OpenCV, Machine Vision

Abstract—Industrial vision is the computer vision approach to the industry which utilizing simple and robust algorithmsand helped by a good illumination is able to resolve specific problems. The results of these systems include qualitycontrol or metrology. As well works as a complement in others productive process. Industrial vision systems are basicallya camera, an illumination system and a software for doing the analysis. There are equipments, smart cameras , wherewe have all of them in only one device. In this project our purpose is building a smart camera based on low cost systemslike Raspberry Pi and RaspiCam, and open source projects like OpenCV.

F

1 INTRODUCCION

A lo largo de los anos se ha ido reduciendo el preciodel hardware de forma constante. Ultimamenteeste proceso se ha acelerado gracias a la produccionmasiva de smartphones. En este contexto en el quedisponemos de hardware con gran capacidad decomputo echamos de menos software que puedasacar partido de el en diferentes ambitos.

En el mundo de la vision industrial, lassmartcameras son comercializadas con preciosmuy elevados aunque una buena parte del preciose corresponde con su sensor de vision.

Por ello nos parece muy interesante averiguarhasta donde puede llegar un equipo con un precioun orden de magnitud inferior, compuesto por unsensor tıpico de telefono movil y una Raspberry Pi.

• E-mail de contacto: [email protected]• Mencion realitzada: Computacio• Tutor: Felipe Lumbreras Ruiz (Ciencies de la computacio)• Curso 2013/14

2 OBJETIVOS

El objetivo principal del trabajo es demostrar laposibilidad de construir y usar un sistema devision industrial de bajo coste que sea capaz deresolver problemas simples.

Para conseguir el objetivo principal nosplanteamos los siguientes subobjetivos.

• Producir un sistema de adquisicion de imageneficaz.

• Desarrollar un modulo de tratamiento deimagen con un rendimiento adecuado.

• Acoplar un sistema de entrada/salida quecumpla con nuestras necesidades.

3 ESTADO DEL ARTE

Actualmente las Smart Cameras comerciales estanbasadas en sistemas incrustados compuestospor un procesador de aplicaciones con softwareoptimizado para esta tarea y un sensor de vision

2

industrial profesional.

Las principales diferencias de este sistemacomercial con el que hemos construido radicanen el hecho de que estan respaldados porlibrerıas y packs de desarrollo construidos yoptimizados a medida para estos sistemas, con laconsecuente mejora de rendimiento y facilidad deprogramacion. Ademas suelen estar respaldadospor sistemas operativos en tiempo real.

Otra diferencia es el sensor de vision, que ennuestro caso se trata de un sensor comun conun coste muy inferior al sensor industrial quedisponen las Smart Cameras comerciales.

Para solventar el problema de las librerıasde vision utilizaremos OpenCV, el cual puedeaprovechar aceleracion hardware en sistemascompatibles con OpenCL.

El sensor tiene mas ruido y por lo tanto esmenos robusto. Para solucionarlo tendremos queutilizar preprocesados en la imagen y combinarlocon una buena iluminacion.

4 METODOLOGIA

La implementacion de la solucion ha pasadopor recopilar la informacion necesaria referente acada subobjetivo para producir el codigo necesario.

El entorno de trabajo consiste en el IDE Eclipsetrabajando en modo remoto con el sistemaRaspberry Pi donde se produce la compilaciony ejecucion del codigo. Se han probado variosmetodos de cross-compilation para agilizar la tareade compilacion, aunque finalmente no se hanutilizado.

5 PROYECTO

5.1 Raspberry Pi

Raspberry Pi es un SBC (Single Board Computer)inicialmente ideado para promover la educacionde las tecnologıas de informacion en Reino Unido.

Figura 1: Raspberry Pi

Se trata de un sistema compuesto por el SoC(System on a Chip) BCM2835 de Broadcom, quea su vez se compone de un procesador ARM11 a700Mhz y una GPU VideoCore IV a 400Mhz quetiene implementado OpenGL ES 2.0 entre otrascaracterısticas. Dispone de 512MB de memoriaprincipal.[9]

Actualmente se ha liberado la documentacionde la GPU siendo bastante probable una futuraimplementacion de OpenCL. Esto supondrıa unamejora de rendimiento notable de OpenCV alaprovechar el potencial de la GPU.

Ademas se ha empezado a comercializar unproducto llamado Compute Module que consisteen el montaje del nucleo de la Raspberry en unatarjeta del tamano de una memoria de portatil,facilitando la produccion de sistemas incrustadosbasados en Raspberry.

Otro de los motivos por el cual hemos utilizadoRaspberry Pi en la construccion de nuestro sistemaes la camara que comercializan y su interfazde conexion. Cierto es que hay varios SBC quemejoran muchas prestaciones de Raspberry, peropocos son los que cuentan con una interfaz MIPICSI para conectar una camara.

La camara que la fundacion Raspberrycomercializa, llamada RaspiCam, tiene un sensorCMOS de 5Mpx y una resolucion maxima de2592x1944 pıxeles. [11] Su especificacion afirmapoder capturar vıdeo en los siguientes modos:

3

1080p@30fps, 720p@60fps y 480p@90fps.

Figura 2: Raspicam

Ademas, al ser un sistema ampliamenteextendido (3 millones de unidades vendidas)dispone de varios anadidos fabricados por terceros.Uno de ellos es la llamada Piface. Contiene unmicroprocesador MCP23S17 y se trata de unmodulo ideado para gestionar la entrada/salidadel dispositivo.

Figura 3: Piface

5.2 Aplicacion

5.2.1 Sistema de adquisicion de imagen

Uno de los primeros obstaculos con el que nostopamos fue el proceso de obtencion de imagenes.

Las librerıas de uso comun en Python tenıan unrendimiento muy precario tanto en la obtencioncomo en el tratamiento de imagen, ası que optamospor obtener y modificar otras librearıas de bajonivel. Estas estan basadas en la capa de abstrac-cion MMAL (Multi-Media Abstraction Layer)[12]ideada para usar en VideoCore, que a su vez haceuso de OpenMAX. Mediante la programacion decomponentes y la posterior transformacion de laestructura de datos a una compatible con OpenCVobtenemos un rendimiento aceptable.

5.2.2 Procesado de la imagen

Una vez tenemos disponible nuestra estructurade datos compatible con OpenCV (cv::Mat) nosdisponemos a procesar la imagen.

OpenCV dispone de varios metodos avanzadosde Background Substraction pero para nuestroproblema hemos optado por una resta simple yaque los resultados que obtenemos ya nos son utiles.

Despues hacemos una binarizacion simpley una produccion de contornos. Filtramos loscontornos por sus caracterısticas para obtener elobjeto deseado. En este punto disponemos deinformacion acerca de posicion, area e histogramadel objeto.

Una vez tenemos el nuevo objeto localizadolo rotamos con la funcion cv::WarpAffine paraajustarlo a un plano de referencia.

En este punto podemos utilizar la funcioncv::MatchTemplate para comparar el nuevo objetocon el objeto referencia y obtener una valor desimilitud.

5.2.3 Entrada/Salida

La Raspberry dispone de 6 puertos dedidados ex-clusivamente al manejo de la entrada/salida. Sinembargo se utilizara el sistema Piface al poderofrecer hasta 16 puertos virtuales mediante SPI,para posibles usos posteriores.

4

Al igual que con la adquisicion de imagen, laslibrerıas proporcionadas por Piface para el controlde su dispositivo en Python dejan bastante quedesear. Observando el codigo nos percatamosque las funciones de interrupcion realmente estanhaciendo un pooling en bucle en busca de cambiosen las entradas.

Debido a esta circunstancia decidimos obteneruna librerıa de un tercero [10] la cual podemosmodificar a bajo nivel.

Mediante el estudio de la documentacion[13] delmicroprocesador MCP23S17 y del visionado de laspistas de la Piface observamos que el pin INTA delmicro y la entrada GPIO6 de Raspberry Pi estanconectados y es posible programar interrupcionesISR (Interrupt Services Routines). Modificamos lalibrerıa para producir interrupciones mediante elenvıo de una instruccion adicional por SPI (SerialPeripheral Interface).

Figura 4: Disposicion Piface

Los dispositivos de entrada que hemos instaladoson dos. Un boton fijo con el que planeamoscambiar el modo de funcionamiento del programay un socket en el que conectaremos un rele reed.

Los dispositivos de salida seran los leds de ilumi-nacion blancos y dos leds de control rojo y verde.

La alimentacion electrica de los dispositivos escomun a la de la Raspberry Pi.

5.3 Modos de ejecucion

La aplicacion contempla dos modos de ejecucion.

En el primero la aplicacion esta procesandoconstantemente la senal de video en busca denuevos objetos que procesar, puede ser util cuandoel problema proporcione nuevos objetos de formaheterogenea.

El segundo modo hace uso del rele reed que antesmencionabamos. Utilizando unos imanes instaladosen la plataforma giratoria y el rele, se activa la ilu-minacion y la captura solamente cuando lanzamoseste trigger. Nos puede permitir ahorrar energıa oaumentar la resolucion de captura.

5.4 Montaje

La demostracion por la que se ha optado consisteun dispositivo giratorio en el que disponemospiezas con diferentes taras.

La pieza elegida es un conjunto de 4 fusibles. Fi-nalmente se utilizaran imagenes impresas de estosfusibles debido a que con el uso continuado de laspiezas estas se han deteriorado diferenciandose desu estructura inicial.

Figura 5: Pieza de ejemplo

El dispositivo consiste en una caja dividida entres secciones. La seccion frontal recoge la camara yla iluminacion. La intermedia soporta la Raspberryjunto con la Piface y todas sus entradas y salidas(Power,USB, HDMI, inputs, outputs) La seccionfinal actua a modo de cierre.

5

Figura 6: Demostracion montaje

6 RESULTADOS

A continuacion podemos observar los resultadosde rendimiento con diferentes resoluciones. Estaes la velocidad a la que procesa la imagen enbusca de nuevos objetos. Cuando detecta el nuevoobjeto y calcula la diferencia se produce un picode computo que dura menos de un segundo.

Resolucion fps

320x240 13fps

480x320 9fps

768x512 4fps

1152x768 2fps

En esta tabla podemos observar las medidasde tiempo con diferentes configuraciones. Laconfiguracion de 320x240 es con la que se hatesteado todo el proceso y se han hecho todas laspruebas.

Uno de los cuellos de botella esta en latransferencia de datos entre GPU y CPU, ya quea pesar de compartir el mismo dispositivo dememoria, no es posible el acceso directo a lamemoria ajena. El otro es el calculo secuencial demetodos OpenCV en el procesador ARM.

Ademas hemos de tener en cuenta que si OpenCLacaba siendo implementado la mejora de rendi-miento serıa notable y automatica.

Figura 7: Salida por pantalla

En esta imagen podemos observar como laaplicacion se ejecuta de forma efectiva.

Los objetos pueden estar orientados de cualquierforma.

7 OBSERVACIONES

A medida que se avanzaba en el trabajo se ob-servaron diferentes ramas que no acabaron siendodesarrolladas pero que consideramos interesantesde mencionar.

7.1 Uso de OpenGL preprocesado

Es cierto que echamos de menos la implementacionde OpenCL de cara a obtener potencia de computoen paralelo. Sin embargo disponemos de OpenGLque a pesar de estar orientado al renderizado

6

grafico, se pueden utilizar sus shaders para elprocesado de imagen.

De esta forma se testearon de forma exitosadiversos filtros implementados en OpenGLpara producir tecnicas de threshold, contornos,colorspace transform, gausianas...

De hecho se encontraron trabajos por variasuniversidades que llegan a implementar elextractor de caracterısticas SIFT en OpenGL ES 2.0[1]

A pesar de los buenos resultados que se puedenllegar a obtener se ha optado por no portar elcodigo a OpenGL ES 2.0 debido a la dificultad quesupondrıa y teniendo en el horizonte el uso exten-dido de OpenCL con todas sus funcionalidades yaimplementadas.

8 CONCLUSIONES

Concluyendo se puede afirmar que si tienesentido utilizar sistemas parecidos al nuestro paradeterminadas tareas sencillas.

Salvando las limitaciones propias de trabajarcon un hardware no pensado directamente paraeste fin hemos visto que se consiguen resultadossatisfactorios en problemas sencillos.

Es posible que para una variedad de problemasen los que anteriormente no se planteabaimplementar una solucion de vision industrialahora tenga sentido su implantacion por costereducido. Este podrıa ser el caso de muchaspequenas y medianas empresas.

Mirando el futuro de las Smarts Cameras yviendo el panorama actual, para mı es seguro quenuevos frameworks y productos Open Source ylow-cost llegaran al mercado.

Creo que la implantacion y el uso de nuevosestandares y protocolos de transmision juega unpapel fundamental en este proceso. [8]

9 L INEAS FUTURAS: PORTABILIDAD A MOVI-LES ANDROID

Salta a la vista que tanto el procesador deaplicaciones de Raspberry Pi como el sensor

de imagen de Raspicam que utilizamos usantecnologıa identica a la usada actualmente entelefonıa movil.

La inmensa mayorıa de moviles tambiendisponen de compatibilidad con OpenGL ES 2.0 yOpenCV.

Es por este motivo que el resultado quehubieramos obtenido utilizando un dispositivomovil para nuestro proyecto hubieramos obtenidounos resultados parecidos debido a la similituddel hardware.

Por todo esto tiene mucho sentido en la lıneade nuestro proyecto, producir un sistema devision sobre la plataforma Android, ya que sonlos fabricantes los que se encargan de hacercompatibles sus sistemas con Android y esteaproveche su potencial.

Dispondrıamos de esta forma de una plataformaaltamente portable, con un mercado de multitudde dispositivos con diferentes capacidades.

De hecho Android en sus inicios pretendıa serun sistema operativo para camaras digitales [2].

APENDICE AAlgunos de los parametros [3] que podemos modi-ficar son:

• ISO• Exposure Mode• Auto White Balance Mode• Metering Mode• Shutter Speed

APENDICE BDentro del mundo de los SBC (Single-board com-puter) podemos encontrar alternativas mas barataso potentes a Raspberry Pi, como por ejemplo:

• OLinuXino[4]• Odroid[5]• Cubieboard[6]• Minnowboard Max[7]

ACKNOWLEDGMENTS

Gracias a Felipe Lumbreras tanto por el asesora-miento en la materia como en el apoyo dado en laconstruccion de la carcasa del sistema.

7

REFERENCIAS

[1] Kayombya, Guy-Richard ”SIFT feature extraction on aSmartphone GPU using OpenGL ES2.0” disponible enhttp://dspace.mit.edu/handle/1721.1/61162

[2] Chris Welch, ”Before it took over smartphones, Android wasoriginally destined for cameras” disponible enhttp://www.theverge.com/2013/4/16/4230468/android-originally-designed-for-cameras-before-smartphones

[3] RaspiCam Documentation” disponible enhttp://www.raspberrypi.org/wp-content/uploads/2013/07/RaspiCam-Documentation.pdf

[4] .OLinuXino - Open Source Hardware Boards” disponible enhttps://www.olimex.com/Products/OLinuXino/open-source-hardware

[5] .Odroid Main Page” disponible enhttp://www.hardkernel.com/main/main.php

[6] Cubieboard: A series of open source hardware” disponible enhttp://cubieboard.org/

[7] ”Minnowboard Max Main Page” disponible enhttp://www.minnowboard.org/meet-minnowboard-max/

[8] ”Khronos Main Page” disponible enhttps://www.khronos.org/

[9] Raspberry Pi Specifications” disponible enhttp://elinux.org/RPi Hardware#Specifications

[10] ”WiringPi” disponible enhttps://projects.drogon.net/raspberry-pi/wiringpi/

[11] Raspicam Specifications” disponible enhttp://elinux.org/Rpi Camera Module#TechnicalParameters

[12] ”MMAL Documentation” disponible enhttp://www.jvcref.com/files/PI/documentation/html/

[13] ”MCP23S17 Documentation” disponible enhttp://ww1.microchip.com/downloads/en/DeviceDoc/21952b.pdf