scieee Science in your language
[Es] (orig)

Diseño e implementación de múltiples interfaces para el control remoto de un vehículo y del sistema de visión embarcado

Abstract

[ES] En el trabajo adjunto se presenta un proyecto de diseño e implementación de un sistema automatizado de reconocimiento de matrículas de vehículos controlado remotamente. Dicho sistema tiene como objetivos principales la localización y el reconocimiento de un vehículo conforme a su placa de matrícula en un espacio amplio, además de disponer de otras funcionalidades adicionales, como la vigilancia, por ejemplo. El proceso de reconocimiento se realiza mediante una plataforma móvil, controlada remotamente, con capacidad de visión por ordenador y transmisión de video en tiempo real al puesto de control. Para la comodidad del usuario, se ofrecen distintas formas de controlar la conducción de la plataforma, que pueden ser usadas en distintas condiciones del terreno o según las preferencias personales del operador. Dichas opciones son compuestas por los siguientes periféricos de entrada: control por mando, basado en movimientos y basado en control táctil. En el primer caso se trata de un controlador de videojuegos y los dos siguientes son provistos por un teléfono inteligente. Las señales de control se transmiten al sistema instalado a bordo del vehículo, que realiza tres funciones: el envío del video capturado por la cámara montada en el vehículo al operador en tiempo real, reconocimiento de matrículas y reenvío de señales de control recibidas al controlador empotrado encargado de mover el vehículo. En el apartado hardware, el vehículo es formado por un chasis de un coche de radiocontrol con una placa computadora (Raspberry Pi 2) con los siguientes periféricos conectados: módulo WiFi, que proporciona conectividad, una cámara conectada al puerto CSI que se encarga de transmitir el video capturado, otra cámara conectada al puerto USB que se encarga del reconocimiento de matrículas y, finalmente, un microcontrolador (Arduino), que se encarga de controlar el motor eléctrico propulsor y el servomecanismo que sirve para contolar la dirección. Todo el sistema es alimentado por dos baterías de ion-litio que constituyen tres fuentes de energía independientes que alimentan por separado a los componentes que más energía requieren: Raspberry Pi y sus periféricos, el motor principal y el servomecanismo. Este hardware es gobernado por una serie de programas que se ejecutan en la propia placa computadora, el microcontrolador conectado a esta y un ordenador conectado a la misma red. Estos programas intercambian mensajes para transmitir información y notificar distintos cambios de estado en el que se encuentra el sistema

Read accessible full text

Diseño e implementación de múltiples interfaces para el control remoto de un vehículo y del sistema de visión embarcado

Author: Brydko, Viacheslav
Publisher: Universitat Politècnica de València
Year: 2015
Source: https://riunet.upv.es/bitstream/10251/54222/2/BRYDKO%20-%20Dise%c3%b1o%20e%20implementaci%c3%b3n%20de%20m%c3%baltiples%20interfaces%20para%20el%20control%20remoto%20de%20un%20veh%c3%adculo%20y%20....pdf
Escola Tècnica Supe io d’Enginye ia In o mà ica
Uni e si a Poli ècnica de València
Diseño e implemen ación de múl iples
in e aces pa a el con ol emo o de un
ehículo y del sis ema de isión emba cado
T abajo Fin de G ado
G ado en Ingenie ía In o má ica
Au o : Viachesla B ydko
Tu o : Juan Vicen e Capella He nández
2014-2015
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
2
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
3
Resumen
En el abajo adjun o se p esen a un p oyec o de diseño e implemen ación de un
sis ema au oma izado de econocimien o de ma ículas de ehículos con olado
emo amen e. Dicho sis ema iene como obje i os p incipales la localización y el
econocimien o de un ehículo con o me a su placa de ma ícula en un espacio amplio,
además de dispone de o as uncionalidades adicionales, como la igilancia, po
ejemplo. El p oceso de econocimien o se ealiza median e una pla a o ma mó il,
con olada emo amen e, con capacidad de isión po o denado y ansmisión de
ideo en iempo eal al pues o de con ol.
Pa a la comodidad del usua io, se o ecen dis in as o mas de con ola la conducción
de la pla a o ma, que pueden se usadas en dis in as condiciones del e eno o según
las p e e encias pe sonales del ope ado . Dichas opciones son compues as po los
siguien es pe i é icos de en ada: con ol po mando, basado en mo imien os y basado
en con ol ác il. En el p ime caso se a a de un con olado de ideojuegos y los dos
siguien es son p o is os po un elé ono in eligen e.
Las señales de con ol se ansmi en al sis ema ins alado a bo do del ehículo, que
ealiza es unciones: el en ío del ideo cap u ado po la cáma a mon ada en el
ehículo al ope ado en iempo eal, econocimien o de ma ículas y een ío de señales
de con ol ecibidas al con olado empo ado enca gado de mo e el ehículo.
En el apa ado ha dwa e, el ehículo es o mado po un chasis de un coche de
adiocon ol con una placa compu ado a (Raspbe y Pi 2) con los siguien es pe i é icos
conec ados: módulo WiFi, que p opo ciona conec i idad, una cáma a conec ada al
pue o CSI que se enca ga de ansmi i el ideo cap u ado, o a cáma a conec ada al
pue o USB que se enca ga del econocimien o de ma ículas y, inalmen e, un
mic ocon olado (A duino), que se enca ga de con ola el mo o eléc ico p opulso y
el se omecanismo que si e pa a con ola la di ección. Todo el sis ema es alimen ado
po dos ba e ías de ion-li io que cons i uyen es uen es de ene gía independien es que
alimen an po sepa ado a los componen es que más ene gía equie en: Raspbe y Pi y
sus pe i é icos, el mo o p incipal y el se omecanismo.
Es e ha dwa e es gobe nado po una se ie de p og amas que se ejecu an en la p opia
placa compu ado a, el mic ocon olado conec ado a es a y un o denado conec ado a
la misma ed. Es os p og amas in e cambian mensajes pa a ansmi i in o mación y
no i ica dis in os cambios de es ado en el que se encuen a el sis ema.
Palab as cla e: Raspbe y Pi, A duino, mó il, iempo eal, isión po o denado .
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
4
Abs ac
The ollowing wo k p esen s a design and implemen a ion o an au oma ed sys em wi h
op ical ehicle license pla e ecogni ion and emo e ope a ion capabili ies. The
objec i es o his sys em a e loca ion and ecogni ion o ehicles in wide spaces, as well
as o e ing o he ea u es, such as su eillance, o example. The op ical ecogni ion is
pe o med by a emo ely con olled mobile pla o m wi h compu e ision capabili ies
and li e ideo s eaming o he ope a o sc een.
Se e al con ol op ions a e o e ed o use con enience, which may be use ul in
di e en en i onmen s o could being chosed acco ding o use ´s pe sonal p e e ences.
These op ions a e composed by he ollowing inpu pe iphe als: con olle -based,
mo ion-based and ouch-based con ols. In i s case he pe iphe al is a high
pe o mance gamepad and la e op ions a e p o ided h ough so wa e execu ed on a
sma phone.
The con ol signals a e ansmi ed o he sys em ins alled on boa d o a ehicle, which
pe o ms h ee unc ions: eal- ime li e s eaming o he ideo cap u ed by he came a
moun ed on op o he ehicle o he use , op ical license pla e ecogni ion and
o wa ding o con ol signals o he embedded mic ocon olle , which is esponsible o
he mo emen o he ehicle.
The ha dwa e pa o he p ojec is composed by he adio-con olled ca chassis wi h a
single-boa d compu e (Raspbe y Pi 2) wi h he ollowing pe iphe als: WiFi module,
o communica ions, main came a connec ed o he CSI po o ideo s eaming,
seconda y came a connec ed o he USB po o he license pla e ecogni ion and a
mic ocon olle (A duino) which is used o con ol he elec ic mo o , which p opels
he ehicle and he se omo o , which p o ides he ehicle wi h s ee ing. The sys em is
powe ed by wo ion-li hium ba e ies, which o m h ee independen ene gy sou ces
used by he mos ene ge ically demanding componen s: Raspbe y Pi and i s
pe iphe als, he main elec ic mo o and he se omo o .
The ha dwa e is con olled by a se o p og ams which un on he main compu ing
boa d, connec ed mic ocon olle and a compu e connec ed o he same ne wo k as
he Raspbe y Pi. This p og ams exchange messages in o de o ansmi in o ma ion
and no i y each o he abou he cu en sys em s a e.
Keywo ds: Real- ime, compu e ision, Raspbe y Pi, op ical ecogni ion, A duino.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
5
Tabla de con enidos
1. In oducción ................................................................................................................. 7
Mo i ación…………………………………………………………………………………………………..7
Obje i os………………..……………………..…………………………………………….……………..8
Obje i os Pe sonales…………………..…………………………………..…………………….….…..8
2. Tecnologías elacionadas .............................................................................................. 9
Raspbe y Pi 2………….…..…………………………….…………………….…….…………….……..9
A duino………………………………………………………………………..……………………..…….12
Mando PC / Xbox 360………………………….……………………………………………………….14
Q ……………………………………………………………………..……………….……………………..14
OpenCV………………………………………………………………..…………………………………..15
Py hon………………………………………………………………..……………………………………. 16
And oid………………………………………………………………..……………………………………16
3. Sis ema p opues o ....................................................................................................... 17
Raspbe y Pi……………………………………………………………..………..………………………17
Pe i é icos de Raspbe y Pi…………………………………………..………………………………..21
A duino……………………………………………..……………………………………………………..24
Pe i é icos A duino……………………………..………………………………………………………24
Alimen ación……………………………..………………………………………………………………26
Chasis……………………………..………………………………………………………………………..27
So wa e……………………………..…………………………………………………………………….28
So wa e de esc i o io……………………………..……………………………………………………29
So wa e And oid……………………………..…………………………………………………………33
So wa e embebido……………………………..……………………………………………………….34
So wa e Raspbe y Pi……………………………..………………………………………………..…34

Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
6
So wa e A duino……………………………..…………………………………………………………36
Reconocimien o de ma ículas (ANPR) ..………………………………………………………….37
Ob ención de la o o del ehículo..………………………………………………………………....37
P ime a solución..…………………………………………………………………………………….…38
Segmen ación de la imagen pa a la ob ención de la ma icula..………………………….....38
Reconocimien o de la ma ícula……………………………………………………………………...41
Reconocimien o óp ico de ca ac e es……………………………………………………………....42
Conclusiones y análisis de es a posible solución………………………………………….…..…42
Segunda solución………………………………………………………………………………….……..42
Pa es………………………………………………………………………………………………..….…..43
Inicialización…………………………………………………………………………………………..….44
Ob ención de la imagen……………………………………………………………………………..….45
Segmen ación……………………………………………………………………………………….….…45
OCR………………………………………………………………………………………………………...46
4. Análisis y conclusiones .............................................................................................. 49
5. Bibliog a ía ............................................................................................................... 50
Anexo I – JNI .................................................................................................................... 51
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
7
1. In oducción
A con inuación se expone el p oceso y el esul ado del diseño e implemen ación de un
sis ema combinado, capaz de ealiza ope aciones a con ol emo o con el especial
én asis en la usabilidad y la e icacia. El esul ado es la combinación de dis in as
ecnologías capaces de unciona al unísono, in e cambiando da os, cumpliendo con los
obje i os y educiendo las limi aciones que puedan asocia se a su uso. Al mismo
iempo, se ha hecho un especial hincapié en la expe iencia del usua io, o eciéndole la
posibilidad de elegi en e múl iples opciones disponibles y pe mi iéndole un con ol
o al sob e el sis ema en iempo eal.
Mo i ación
Es e p oyec o combina dos uncionalidades básicas: el econocimien o óp ico de
ma ículas y la mo ilidad del sis ema, siendo con olado po dis in os pe i é icos de
en ada. Las á eas donde se pueden aplica es a combinación de ca ac e ís icas son
a iadas y con dis in os obje i os. Se pueden dis ingui al menos es aplicaciones
donde una solución como la p opues a puede encon a su uso.
1. En p ime luga se encuen an los con oles de apa camien o. En una zona azul
un con olado de la ORA puede ecu i a un sis ema mó il de econocimien o
de ma ículas con olado emo amen e pa a comp oba la alidez de los icke s
de cada ehículo en ez de comp oba los a mano p esencialmen e.
2. En segundo luga , es e sis ema puede p opo ciona a los igilan es de los
pa kings p i ados se icios de igilancia y con ol de accesos, g acias a su al a
mo ilidad y la capacidad de ansmisión de ideo en iempo eal.
3. Po úl imo, los cue pos de segu idad pueden hace uso de un sis ema simila
pa a encon a ehículos buscados, los que incumplan la no ma i a igen e o a
i ula es de los mismos. Es o puede se posible g acias a la in eg ación con los
se icios elemá icos o ecidos po la DGT que pe mi en a los agen es accede al
egis o de ehículos nacional pa a comp oba da os como, po ejemplo, la
caducidad de la ITV, el segu o obliga o io, el es ado del ehículo (secues ado o
dado de baja) así como de los da os del i ula (nomb e, domicilio). Dichos
se icios se llaman ATEX y son usados en exclusi a po la Policía, Gua dia Ci il
y los ayun amien os, en e o os o ganismos.
En caso de do a a la pla a o ma de una capacidad de hace uso de se icios desc i os
a iba su e icacia c ece sus ancialmen e, ya sea usada como es ación mó il o ija.
Cualquie a de las aplicaciones desc i as iene su ámbi o en un con ex o, pe o además,
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
8
es os pueden combina se en e sí, e incluso añadi se capacidades nue as con o me los
eque imien os exis en es.
Obje i os
Es e p oyec o iene como inalidad o ece una solución in eg ada, capaz de lle a a
cabo múl iples ope aciones simul áneamen e de una o ma aspa en e al usua io
e icazmen e. Una o ma de cumpli con es a máxima, es o ece al a mo ilidad, g an
au onomía, ele ada elocidad de a amien o de imágenes y educidas la encia de
ansmisión de ideo y cos e o al de la pla a o ma. En caso de alla en cualquie a de
los obje i os an e io es odo el sis ema deja de se usable y en ez de se una solución
iable, se con ie e en un p oduc o poco ú il.
El obje i o p incipal del sis ema es el econocimien o óp ico de ma ículas, al a a se
de un p oblema complejo desde un pun o de is a compu acional, pe o que al mismo
iempo o ece a los usua ios dis u a de unas capacidades de a amien o de imágenes
aplicado a su en o no labo al, que les pueda pe mi i ealiza sus a eas más ápida y
cómodamen e. Como apoyo a la pla a o ma y con al de acili a a los usua ios su
abajo en caso de que la pla a o ma no sea usable, ambién se conside a la opción de
ins ala el so wa e esponsable del econocimien o de ma ículas en un elé ono
in eligen e con sis ema ope a i o And oid. De es a o ma el ac o limi an e asociado al
uso del sis ema se educe, al ope a con una solución au ónoma de econocimien o
óp ico de ma ículas.
El obje i o secunda io es la posibilidad de ope a la pla a o ma a con ol emo o, pues
uniendo es a capacidad a la an e io , el p oduc o esul an e puede ealiza muchas más
ope aciones en más con ex os ope a i os, además de en oca se a dis in os g upos de
usua ios.
Obje i os pe sonales
A ni el pe sonal, los obje i os pe seguidos son, sob e odo, aplica los conocimien os
adqui idos a los la go de los años de o mación en es a escuela, y compensando con
in es igación, uso de documen ación y abajo la al a de conocimien os especí icos
sob e dis in as ecnologías, ales como OpenCV o mecanismos usados pa a la
comunicación en e JVM y lib e ías dinámicas na i as esc i as en C++.
Adicionalmen e, la implemen ación del sis ema p opues o se lle a a cabo en dis in as
pla a o mas: mó iles (And oid), embebidas (A duino), compu acionalmen e educidas
(Raspbe y Pi) y de esc i o io. Además se hace uso de dis in os lenguajes de
p og amación en la sui e de so wa e que maneja el ha dwa e an e io , ales como
C++, Ja a, Py hon, P ocessing y Bash.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
9
El desa ollo de un p oyec o an comple o como es e, que aúna dis in as ecnologías,
an o a ni el ha dwa e como so wa e, ep esen ando la necesidad de supe a
limi aciones y p oblemas que se encuen an en el camino y el hecho de supe a los
sa is ac o iamen e no hace más que sub aya la solidez de la o mación ecibida.
2. Tecnologías elacionadas
A con inuación se nomb an las ecnologías más ele an es usadas en el p oyec o. Es as
se componen de componen es ha dwa e y so wa e. En es a sección se discu en los
mo i os de su elección y las ca ac e ís icas des acables de los mismos.
Raspbe y Pi 2
Como pa e lógica p incipal, enca gada de p ocesa los da os, hace uso de las
comunicaciones y con ola indi ec amen e los pe i é icos de bajo ni el (mo o y
se omecanismo) se u iliza una placa compu ado a (o SBC) Raspbe y Pi 2.
Figu a 1: Raspbe y Pi 2 Modelo B+
Es a elección es á mo i ada po el hecho de que es a unidad cumple con las siguien es
ca ac e ís icas: bajo cos e, can idad de so wa e disponible, al o olumen de
documen ación disponible, bajo consumo ene gé ico, amaño y peso educidos,
desa ollo cons an e y muchos apo es po pa e una comunidad de desa ollado es
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
16
módulos con iene es uc u as de da os, unciones y algo i mos ela i os a un es echo
ma gen de especialización indicado po el nomb e del p opio modulo.
Py hon
Al a a se de una dis ibución Linux, comple amen e compa ible con odos los
eposi o ios Debian a mh , El o k del mismo pa a Raspbe y Pi, Raspbian incluye la
pla a o ma Ja a en su e sión JVM 1.8 de O acle. Es o pe mi e ejecu a odo ipo de
so wa e que pueda se compilado pa a la JVM (Ja a, Jy hon, G oo y, Scala u o os).
Du an e el p oceso de diseño se conside ó usa Ja a como so wa e enca gado de
ecibi da os de con ol y es ablece la conexión se ie con A duino y, inalmen e en ia
al usua io las ma iculas econocidas. T as un b e e análisis de es e ipo de solución, el
uso de Ja a se deshecho en a o de Py hon.
El mo i o p incipal es la complejidad a la ho a de es ablece la conexión se ie. La
implemen ación del un ime de Ja a, JVM, no iene un mecanismo pa a al in, po lo
que se usa una lib e ía ex e na, llamada TxRx. El hecho de usa una lib e ía ex e na no
ep esen a un p oblema en sí, pe o en es e caso la limi ación iene dada po la
implemen ación de comunicación se ie a ni el del sis ema ope a i o subyacen e, po lo
que la lib e ía TxRx o ece una solución hib ida: una lib e ía na i a pa a el SO y un
JAR, pa a expone las nue as uncionalidades a la pla a o ma Ja a. En caso de Py hon,
la comunicación se ie no iene mayo complejidad que decla a el pue o se ie p o is o
po el sis ema ope a i o, ab i lo y ealiza ope aciones de lec u a / esc i u a sob e el
mismo.
O a de las en ajas que o ece el uso de Py hon es la acilidad de abajo con
comunicaciones, pudiéndose es ablece ope aciones que se ealizan a a és de la ed
en pocas líneas de código.
Finalmen e, las ans o maciones de da os en Py hon ambién son muy sencillas de
ealiza . Ope aciones como pa sea JSON no equie en hace uso de lib e ías ex e nas,
como si es caso de Ja a y son muy comp ensibles.
And oid
Pa a la implemen ación de las in e aces de con ol ía so wa e en un disposi i o mó il
se decidió po usa una unidad con el sis ema ope a i o And oid. La elección de es a
pla a o ma iene mo i ada po su eno me popula idad en el me cado y debido a ello a
la can idad de in o mación y documen ación disponible.
Además, el lenguaje de p og amación p incipal del SDK de And oid es Ja a, po lo que
la lib e ía es ánda he eda oda la po encia de es a pla a o ma, ex endiéndose con
es uc u as de da os y cons ucciones p opias de desa ollos pa a disposi i os mó iles
implemen ados po Google. El hecho de usa Ja a iene mo i ado po la necesidad de
pode dispone de las aplicaciones p oducidas pa a e siones de And oid ejecu ados en

Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
17
dis in os ipos de ha dwa e, ales como p ocesado es ARM, In el o MIPS. En las
e siones an e io es de And oid, es as aplicaciones se compilaban a by ecode, que
pos e io men e se ejecu aba en una máquina i ual especial, adap ada a un en o no de
ejecución de capacidades compu acionales y ene gé icas limi adas llamado Dal ik. En
las úl imas e siones de es e sis ema ope a i o, las aplicaciones se compilan AOT
du an e la ins alación, p escindiendo de es a o ma de la capa de so wa e in e media,
como lo ue Dal ik.
Finalmen e, usa Ja a como lenguaje de desa ollo pe mi e ap o echa la eno me
can idad de código y lib e ías de e ce os exis en es en In e ne . El uso de es os
ecu sos pe mi e educi el iempo de desa ollo y aumen a la calidad del código. El
ejemplo más popula lo cons i uye el uso de lib e ías Apache Commons de Apache
So wa e Founda ion pa a Ja a.
3. Sis ema p opues o
El sis ema p opues o es á compues o po dos pa es di e enciadas: ha dwa e y
so wa e. A con inuación se desc ibe la pa e ha dwa e y inalmen e, las
uncionalidades de la pa e so wa e se asocian con las capacidades de la pa e
ha dwa e.
Raspbe y Pi
La p epa ación de la placa lógica p incipal en el apa ado de ha dwa e no conlle a más
ope aciones que conec a sus pe i é icos a sus pue os co espondien es y conec a la a
su p opia uen e de alimen ación. En el apa ado de so wa e, sin emba go se equie e
ealiza una se ie de ope aciones en ocadas a mejo a el endimien o, es abilidad e
incluso, ealiza con igu aciones que puedan hace posible el despliegue del so wa e de
econocimien o óp ico de ma ículas.
1. El p ime paso es pasa de la e sión ac ual es able de Debian a una e sión más
nue a, aunque ines able y no disponible públicamen e. El mo i o p incipal de
es e cambio es la necesidad de pode dispone de la sui e de compilado es GCC
más mode na (4.9 con a 4.6 de la e sión an e io ). Es o es necesa io pa a
pode compila OpenCV con el módulo de ex o opcional, así como el p opio
p og ama, que hace uso de es as dependencias. El oolchain del compilado
GCC 4.6 de Raspbian basado en Debian 7 ‘Wheezy’ no ue capaz de compila el
código uen e de OpenCV, po lo que se u o que cambia a una e sión más
ecien e de Raspbian 8 ‘Jessie’ que incluye la e sión 4.9 con sopo e del
es ánda C++11 capaz de compila el paque e de so wa e dado. Adicionalmen e,
odos los paque es so wa e ins alados con la ins alación de Raspbian ‘Jessie’
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
18
son a mh , es deci diseñados pa a se usados con p ocesado es ARM 7,
capaces de saca pa ido a las ca ac e ís icas ha dwa e de es e ipo de
p ocesado es desc i os an e io men e (pa icula men e VFP). La e sión
an e io de Raspbian da sopo e a las dos gene aciones de la Raspbe y Pi y, po
an o, es compa ible con ambas sac i icando el endimien o o uso de
ca ac e ís icas exclusi as de ARM 7 en a o de la compa ibilidad.
2. Dado que Raspbe y Pi es un o denado de pocos ecu sos y la pa e de
econocimien o óp ico de ma ículas es un p oblema compu acionalmen e
exigen e, aumen ando la elocidad de p ocesamien o, ( ambién llamado
o e clock) se puede aumen a la elocidad del abajo del so wa e
p opo cionalmen e. Pa a pode ealiza el o e clock en una placa Raspbe y Pi
se equie e edi a el a chi o /boo /con ig. x in oduciendo alo es como
es os:
 a m_ eq=1000
 o e _ ol age=0
 co e_ eq=500
 sd am_ eq=483
es os es ablecen la ecuencia del p ocesado en 1000 MHz, ecuencia de la cache L2
en 500 MHz, ecuencia de la memo ia RAM en 483 MHz y no sube el ol aje al que
abaja el p ocesado . Unos alo es de o e clock más ag esi os equie en modi ica el
ol aje del p ocesado , lo que implica un mayo consumo y calen amien o, pe o en el
diseño p opues o es e paso no es necesa io. Los alo es mencionados con as an con
los alo es po de ec o de la Raspbe y Pi de 900, 250 y 450 MHz, espec i amen e,
p opo cionando un inc emen o de elocidad de cómpu o de en e 20% y 40%,
dependiendo de las ins ucciones ejecu adas. Es a subida de endimien o se debe a que
el mayo cambio es que se p oduce es en la elocidad de la cache L2.
3. El siguien e paso en la p epa ación de la Raspbe y Pi es la compilación de
OpenCV desde el código uen e del eposi o io o icial. Aunque Debian posee
paque es es ables disponibles pa a se ins alados, es os no pueden se usados al
no dispone de módulos necesa ios. Tal y como se explicó en el apa ado de
Tecnologías elacionados, la es uc u a de OpenCV es á o mada po módulos,
ales como co e, highgui, ea u es2d y muchos o os. En caso de ins ala la
e sión es able, se ob end á acceso a los módulos es ables. El so wa e de
econocimien o de ma ículas usado en es e p oyec o hace uso de un módulo
expe imen al, llamado ex que no o ma pa e de la dis ibución de OpenCV,
sino que se o ece en un eposi o io apa e llamado openc _con ib como
desa ollos apa e compa ibles y usables, pe o en es ado de p uebas y alidación
pa a pode o ma pa e de OpenCV en un u u o. Po es a azón, si se desea
dispone de las uncionalidades o ecidas po el modulo ex o se equie e
compila el código uen e de odos los módulos a usa (incluyendo o os
módulos, que son sus dependencias).
El p oceso de compilación es sencillo si se hace uso de la he amien a de edición
de a chi os de sc ip CMAKE, usados po OpenCV. Pa a pode compila bas a
con segui los siguien es pasos:
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
19
 desca ga el código uen e de OpenCV en una ca pe a,
 desca ga el código uen e de los módulos ex a en o a ca pe a,
 ejecu a cmake-gui (he amien a de edición de sc ip s CMAKE)
 indica le al p og ama la u a del código uen e de OpenCV
 indica la u a de la ca pe a donde se a a compila
 con igu a el sc ip indicando las opciones deseadas
 gene a los sc ip s en la ca pe a de des ino
 i a la ca pe a de des ino y ejecu a make –j4 && make ins all
Du an e el p oceso de con igu ación es necesa io ma ca o desma ca cie as
opciones impo an es, ales como la localización de la ca pe a con los módulos
opcionales, sopo e de lib e ías de e ce os, ales como CUDA u OpenCL. Una
con igu ación inco ec a puede esul a en un allo al compila o en caso de
comple a se, puede no ene la es abilidad deseada u o os p oblemas. El
p oceso de con igu ación es ilus ado en la siguien e imagen:
Figu a 4: Gene ación de make ile usando cmake-gui
Una de las opciones más impo an es a ma ca es el uso de capacidades NEON y
VFP 3 o ecidos po la CPU Co ex-A7 con mic o a qui ec u a ARM 7 de la
Raspbe y Pi 2. Sus en ajas es án explicadas en el apa ado an e io . Al
ma ca la, el build esul an e de OpenCV pod á saca odo el pa ido al o ecido
el ha dwa e.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
20
4. El úl imo paso en el p oceso de con igu ación es ins ala Code::Blocks, un IDE
open sou ce en ocado a desa ollos de so wa e en C++. Es e es á disponible en
los eposi o ios de Debian ‘Jessie’. Una ez ins alado, se p ocede a la c eación y
con igu ación del p oyec o pa a la habili a el uso de las lib e ías OpenCV
ecién compilado.
Figu a 5: Code::Blocks con p oyec o OpenCV
Es e p oceso no di ie e en exceso en e dis in os en o nos de desa ollo, pues
únicamen e se ha de indica al compilado y al linke la localización de la
ins alación de OpenCV, así como de o as dependencias, si las hubiese.
Cabe des aca que el compilado y el linke son p og amas di e en es. Ambos
o man pa e de la sui e de compilado es de GNU, GCC. El esponsable de
compila condigo C++ es g++, que es un d i e , enca gado de ejecu a el
p ep ocesado (un p og ama llamado cpp) pa a luego in oca el p opio
compilado , cc1plus, y, inalmen e el linke , llamado ld. El p oceso de
con igu ación necesa io es el siguien e:
 Ejecu a pkg-con ig --libs --c lags openc pa a ob ene las u as
de ins alación de OpenCV. Aquellas ma cadas con –I indican las
localizaciones de includes, necesa ias pa a con igu a el compilado y el
indexado usado po el IDE.
 A con inuación se p ocede a con igu a las u as de includes (o
de iniciones), indicando su localización, que, en la mayo ía de los casos
es /us /local/include/openc , /us /local/include/openc 2 y
/us /include. Nó ese la exis encia de la ca pe a openc y openc 2.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
21
Es o se debe a que, ac ualmen e la API de OpenCV sopo a de mane a
legada la e sión an e io , po lo que debido a cues iones de
compa ibilidad se o ecen las dos opciones.
 El siguien e paso consis e en enlaza con las lib e ías bina ias de
OpenCV. Es e p oceso se ealiza indicando las lib e ías dinámicas a usa ,
como /us /local/lib/libopenc _co e.so, po ejemplo y
/us /local/lib/libopenc _*.so pa a el es o.
 Finalmen e, se indican los lags (u opciones) especí icos al compilado .
Dado que Debian ‘Jessie’ o ece GCC en su e sión 4.9, es e sopo a
múl iples a qui ec u as u opciones de compilación especí icas, capaces
de ap o echa al máximo las capacidades del ha dwa e subyacen e. En
es e caso, las opciones ex a son es: 1) –O3 - gene ación de código con
máxima op imización 2) –mcpu=co ex-a7 - op imización de código
pa a la a qui ec u a Co ex-A7 3) –m pu=neon- p 4 – op imización
que habili a el uso de capacidades SIMD y el uso del cop ocesado de
cálculo de núme os de coma lo an e.
Pe i é icos de Raspbe y Pi
La placa p ocesado a p incipal del ehículo dispone de es pe i é icos, sin con a con
el mic ocon olado A duino que no se conside a como pe i é ico a pesa de es a
conec ado po USB, pues es e ejecu a su p opio so wa e y posee una alimen ación
sepa ada. Los pe i é icos son módulo WiFi, cáma a CSI y cáma a USB.
1. El módulo WiFi es una unidad Edimax EW-7811Un con chipse Real ek
RTL8188CUS.
Figu a 6: Edimax EW-7811UN
Las especi icaciones écnicas indican la complicidad con los es ánda es IEEE
802.11 b/g/n y elocidades de ansmisión de has a 150 Mbps en la banda de

Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
22
2.4 GHz, así como sopo e de WPA, WPA2 y WPS. Se a a de un componen e
muy compac o y de consumo ene gé ico educido a cos a de elocidades de
ansmisión mode adas y adio de uncionamien o limi ado. Lo des acable de
es a in e az de ed es su popula idad en la comunidad de usua ios de
Raspbe y Pi al se una de las p ime as a je as WiFi USB compa ibles OOB
(ou o box), es deci , sin necesidad de ins alación de d i e s o de ealización de
con igu aciones de algún ipo con la p ime a gene ación de las placas Raspbe y
Pi.
2. El segundo pe i é ico usado es un módulo cáma a con in e az CSI-2 (o Came a
Se ial In e ace).
Figu a 7: Módulo cáma a de Raspbe y Pi
Se a a de una unidad ab icada exclusi amen e pa a la Raspbe y Pi. Su
aplicación en es e p oyec o es la cap u a y pos e io en ió de ideo en iempo
eal. En é minos de diseño, la decisión de usa es a solución iene dada po
una se ie de ac o es ales como:
 Tamaño muy educido – 25 mm x 20 mm x 9 mm y 3 g de peso
 El uso de la in e az CSI-2 es implemen ado como un socke ZIF 15 y
o ece una conexión se ie di ec a en e el módulo de la cáma a y la CPU
de la Raspbe y Pi. Al se una conexión dedicada, el ancho de banda
exis en e es de unos 800 Mbps po canal, siendo 1 Gbps el lími e eó ico.
La implemen ación usada po es e módulo hace uso de dos canales
o eciendo así un ancho de banda o al ap oximado de 2 Gbps que
pe mi e abaja con ideo con esoluciones de has a 1920 x 1080
pixeles y 30 ames po segundo.
 El senso CMOS OmniVision OV5647 o ece una esolución máxima de
5 megapíxeles (QSXGA) y o ece dis in os modos de ansmisión de
ideo: desde QSXGA (2592 x 1944) a 15 ps has a QVGA (320 x 240) a
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
23
120 ps usando el o ma o RAW H.264 acele ado po ha dwa e, usando
el DSP de VideoCo e IV de la Raspbe y Pi.
 Disponibilidad de so wa e que o ma pa e de la dis ibución Raspbian
capaz de maneja el s eaming de ideo, en e o as ca ac e ís icas
(como imágenes o cambios de ajus es de cáma a, ales como o ma os de
imagen, e ec os, modos de exposición u o os), así como disponibilidad
de APIs pa a desa ollo de p og amas capaces de in e ac ua con el
módulo de cáma a.
3. El e ce pe i é ico de la Raspbe y Pi es o a cáma a usada pa a el
econocimien o de ma ículas y conec ada median e USB.
Figu a 8: C ea i e Li e! Cam Sync HD
Se a a de una unidad C ea i e Li e! Cam Sync HD con un senso CMOS que
o ece una esolución máxima de 1280 x 720 píxeles con capacidad de
ansmi i ideo a es a esolución a 30 ps. Las ca ac e ís icas más des acables
que han mo i ado la elección de es e pe i é ico son la compa ibilidad OOB (no
se equie e ca ga ningún modulo del ke nel) con la Raspbe y Pi, o al sopo e
de V4L2 y bajo consumo. Las dos úl imas ca ac e ís icas son especialmen e
impo an es.
 En p ime caso, la compa ibilidad con V4L2, que es una API y d i e
que se ejecu an en modo ke nel del SO, pe mi iendo a las aplicaciones
accede a las capacidades de la cáma a usando una API es ánda . En es e
p oyec o V4L2 es usado po OpenCV pa a accede a la cáma a y ob ene
ames de la misma. Todo disposi i o compa ible con el modo V4L2
apa ece como /de / ideo0 al ejecu a el comando 4l2-c l --lis -
de ices, que además, cambiando los a gumen os po --c
<op ion>=< alue> pe mi e el compo amien o del disposi i o o e los
modos de uncionamien o sopo ados.
 La segunda ca ac e ís ica es ele an e debido a que los pue os USB de
la Raspbe y Pi es án limi ados en é minos de co ien e máxima
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
24
suminis ada a los pe i é icos conec ados. En ocasiones es a limi ación
equie e usa un concen ado (o hub) USB con alimen ación ex e na
pa a supli la al a de co ien e. Es o es necesa io en caso de conec a
pe i é icos con una al a demanda ene gé ica, como puede se una
webcam. En caso de es e pe i é ico, el uso de es a écnica no es necesa ia
al dispone és e de un consumo educido.
A duino
La placa A duino se conec a a la Raspbe y Pi median e una conexión USB, la cual
p o ee una comunicación se ie ull-duplex ía UART ( ambién llamado TTL Se ial).
Es e ipo de conexión pe mi e ansmi i un bi as o o a una elocidad p ede inida
que oscila en e 9600 bps y 115200 bps. A pesa de que an o Raspbe y Pi como
A duino ienen pines dedicados a comunicaciones TTL, es os no son compa ibles en e
sí, debido a que la p ime a hace uso de TTL 3 3 y la úl ima de TTL 5 . La conexión
USB, sin emba go si pe mi e la conexión di ec a, al implemen a TTL 5 . En la placa
A duino la capacidad de hace uso de TTL a a és de USB es o ecida g acias al chip
FTDI, que es un ha dwa e especí ico diseñado pa a con e i ansmisiones se ie TTL a
señales USB, pues la CPU de A duino no es capaz de ealiza ales ope aciones.
Pe i é icos A duino
Los componen es conec ados a la placa A duino son dos:
1. Puen e H dual, basado en el chip L298N. El modelo usado es mos ado en la
imagen siguien e:
Figu a 9: Puen e H dual basado en el chip L298N
Es e componen e es un con e ido de po encia que pe mi e gi a un mo o de
co ien e con inua en ambos sen idos. Su inclusión es necesa ia debido a que
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
25
A duino es capaz de p opo ciona únicamen e 5 V y 40 mA po pin, alo es
insu icien es pa a mo e un mo o . Po an o el puen e H se enca ga de
con ola la ensión y co ien e muy supe io es a los que pueda o ece el
mic ocon olado po medio de una señal en iada po es e. De es a o ma se
puede con ola el mo o de una o ma p ecisa po medio de señales PWM
(Pulse Wid h Modula ion o Modulación po Ancho de Pulsos). El con ol del
puen e H es lle ado a cabo po es pines de la placa A duino. El es ado del
p ime pin (ni el al o o bajo) indica al ci cui o la di ección del gi o del mo o , el
alo del segundo pin (0 - 255), indica el ciclo del abajo de la señal PWM,
con olando la elocidad de gi o del mismo y el es ado del e ce pin ac i a o
desac i a el eno. Po úl imo, lo des acable de es e ci cui o son las capacidades
eléc icas o ecidas po el chip L298N: ango de ol aje de en ada de en e
ap ox. 5 V ~ 35 V, co ien e máxima admi ida de 2 A po canal y una po encia
máxima de 25 W.
2. El segundo componen e usado es un se omo o enca gado de la di ección del
ehículo. Se a a de un Se o analógico OEM de amaño es ánda , bajo cos e y
que posee ca ac e ís icas básicas que cumplen con su come ido.
Figu a 10: Se o es ánda
El conjun o de es as ca ac e ís icas ienen dadas po el hecho de que es a
unidad posee un mo o de baja po encia y los eng anajes de nylon, lo que limi a
el es ue zo de o sión o ecido. Po o o lado los alo es de p ecisión, elocidad
y el cen ado cumplen con los mínimos necesa ios pa a las necesidades de es e
p oyec o. En é minos de conexiones, es e componen e se conec a a un pin
PWM de A duino, que se enca ga de es ablece el ángulo de gi o del mismo. La
alimen ación es p o is a po una ba e ía auxilia dedicada, capaz de
p opo ciona has a 5 V y has a 1 A de co ien e.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
32
La in e az g á ica del usua io mues a a ias en anas, sepa ando la en ana de ideo
de la de con oles, pe mi iendo así al usua io elegi su disposición y amaño de o ma
independien e. En la siguien e imagen se puede e el de alle de la GUI, la consola de
debug y de la p ueba de la encia de ansmisión de ídeo.
Figu a 16: De alle de la GUI de so wa e de esc i o io
La en ana p incipal de la aplicación mues a dos ba as e icales y una ho izon al.
Es os elemen os mues an el es ado en el que se encuen a el mando. Las ba as
e icales co esponden a acele ado y el eno, espec i amen e, mien as que la ba a
ho izon al co esponde a la di ección. El panel llamado “Compensación de di ección”
si e pa a ajus a de o ma ina la di ección del ehículo en caso de des ío hacia
izquie da o de echa. Pulsando los bo ones L o R del mando una o a ias eces, la
di ección se cen a en el alo deseado (+1, +2 o más pa a la de echa y -1, -2 o menos
pa a la izquie da). De es a o ma se puede compensa el cen ado inco ec o de la
di ección del ehículo dinámicamen e en cualquie momen o.

Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
33
So wa e And oid
La aplicación que se ejecu a en un disposi i o And oid iene como inalidad o ece una
se ie de con oles al e na i os omando el inpu de la manipulación del p opio
disposi i o po pa e del usua io. Pa a log a lo, se sigue el mismo p incipio que en la
aplicación de esc i o io, con la única di e encia que los alo es de en ada leídos no
p o ienen del mando, sino del acele óme o o de la posición del dedo en la pan alla.
Apa e de es e de alle, el uncionamien o de la aplicación es muy simila : se p ocede a
a anca un hilo que ob iene los da os de uno de los dos ipos de en ada pa a luego
se ializa lo en un JSON con el mismo o ma o que la aplicación de esc i o io
("[{"o se ": 0,"s ee ing": 88," h o le": 257}]") y a con inuación en ia lo
al ehículo. Las in e aces de la aplicación mó il son las siguien es:
Figu a 17: Pan alla p incipal de la aplicación mó il
La pan alla p incipal pe mi e elegi en e el ipo de con ol deseado.
Figu a 18: Pan alla del con ol basado en mo imien o mues a los da os en iempo eal
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
34
Po úl imo, el con ol ác il mues a al usua io el á ea de en ada y los alo es
ob enidos.
Figu a 19: Pan alla de con ol ác il con el can as y los alo es leídos
Al igual que en la aplicación de esc i o io, los alo es leídos de dis in as uen es de
en ada no se co esponden con alo es deseados, po lo que se con ie en median e
una unción de con e sión lineal de un ango de alo es a o o. Po ejemplo, en caso de
los alo es leídos del acele óme o, es os an desde -255 a 255 pa a ambos ejes,
mien as que en caso del con ol ác il los alo es se ienen que calcula con o me la
posición del oque den o del cí culo espec o al ancho y al o de la pan alla.
So wa e embebido
La pa e del so wa e embebido co esponde a una se ie de p og amas que se ejecu an
en el p opio ehículo. Todos se ejecu an en la Raspbe y Pi, excep o uno que es
ejecu ado po la placa A duino.
So wa e Raspbe y Pi
Raspbe y Pi ealiza las siguien es ope aciones: 1) ecepción de comandos de con ol y
su een ió a A duino 2) econocimien o de ma ículas y el en ío de esul ados al
sis ema de esc i o io y 3) en ío del s eam de ideo al sis ema de esc i o io. A
con inuación es as ope aciones se analizan en de alle y se asocian al so wa e que los
lle a a cabo.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
35
1. La ecepción de los comandos de con ol y su een ío al pue o se ie
co espondien e a A duino se lle a a cabo po un sc ip Py hon que ealiza las
siguien es ope aciones:
- C ea una ins ancia del socke UDP escuchando en el pue o deseado
- C ea una ins ancia del pue o se ie en el disposi i o ‘/de / yUSB0’
- Ejecu a un bucle in ini o
- Pa sea el con enido de cada da ag ama ecibido como un JSON
- Ob ene los elemen os del JSON (s ee ing, h o le, o se )
- Fo ma el S ing con es os alo es en el o ma o acep ado po A duino
- Esc ibi el S ing o mado en la ins ancia del pue o se ie
- Vol e a ejecu a pa a la p óxima i e ación del bucle
2. El econocimien o de ma ículas se lle a a cabo po la aplicación Op ica ,
compilada na i amen e y cuyo uncionamien o se desc ibe en de alle en el
apa ado co espondien e. Pa a el en ío de los esul ados, Op ica es ablece un
pipe a o o sc ip Py hon que lee los esul ados desde la salida es ánda y los
en ía al sis ema de esc i o io esc ibiéndolos sob e la ins ancia de un socke (con
di ección IP el pue o del sis ema de esc i o io como des ino) en cada i e ación
de un bucle in ini o.
3. Po úl imo, el en ío de ideo en iempo eal se ealiza edi igiendo la salida del
p og ama aspi id a ne ca con la di ección IP y el pue o del sis ema de
esc i o io. Conc e amen e, el comando usado es el siguien e: “ aspi id –
999999 –o - -n –w 640 –h 480 – ps 20 | nc %IP_DESTINO% 5001”.
Es e mé odo pe mi e el en ío de ideo de una mane a muy e icien e debido a
dos mo i os:
- El en ío del s eam de ideo a a és de ne ca elimina el o e head exis en e
en p o ocolos de s eaming ales como RTP o RTSP al en ia se los da os
empaque ados en una ama UDP. Como pun o nega i o, no hay muchos
ep oduc o es de ideo capaces de ep oduci ideo aw desde la salida
es ánda .
- aspi id es un p og ama que o ma pa e de la dis ibución Raspbian y ha
sido diseñado pa a unciona exclusi amen e con las Raspbe y Pi y sus
módulos cáma a dedicados. Debido a es o, es capaz de ap o echa las API
de bajo ni el OpenMAX IL pa a saca pa ido al ha dwa e de p ocesado
mul imedia de la Raspbe y Pi, VideoCo e 4, que codi ica el s eam de ideo
de la cáma a al o ma o H.264 po ha dwa e de una o ma muy e icien e.
Es a ope ación es posible en las dos gene aciones de la placa, al compa i
ambas la misma GPU. La siguien e imagen indica la a qui ec u a so wa e
de acceso al ha dwa e mul imedia:
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
36
Figu a 20: VideoCo e 4 APIs
So wa e A duino
La placa A duino ealiza las siguien es ope aciones:
1. Ab i la conexión se ie con la elocidad adecuada (la misma que la Raspbe y
Pi), de lo con a io los da os ecibidos se án co up os e ilegibles.
2. Decla a e inicializa los pines a usa (3 pines pa a con ola el mo o DC
usando el puen e H y un pin pa a con ola el Se o). Todos los pines son
OUTPUT
3. En a en el bucle p incipal del p og ama
4. En cada i e ación del bucle espe a al S ing de comandos a a és del pue o
se ie.
5. En caso de ecibi el S ing en an e y si és e es e bien o mado
(% alo %s,% alo % , s y ienen de s ee ing y h o le), ob ene los alo es de
las a iables ecién llegadas.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
37
6. Pa a el alo del mo o ( h o le): es ablece la di ección de gi o (hacia delan e o
a ás), qui a el eno, esc ibi el alo de la elocidad deseada en el pin
co espondien e.
7. Pa a el alo de la di ección (s ee ing): gi a el se o a la posición adecuada,
indicada po el alo de la a iable.
8. Rese ea el S ing ecibido.
9. Repe i el p oceso con la p óxima i e ación del bucle.
Reconocimien o de ma ículas (ANPR)
En es e apa ado se desc ibe el diseño e implemen ación del p oyec o de
econocimien o au oma izado de ma ículas de au omó il usando disposi i os mó iles
o embebidos. La he amien a usada es la lib e ía OpenCV que posee una licencia BSD.
Pa a el diseño inicial se u ilizó un p oyec o Visual S udio 2013 enlazado con las
lib e ías dinámicas de OpenCV. Es e en o no de abajo demos ó se más p opicio
pa a un desa ollo y p o o ipado ápidos al no ene es icciones como el que sí
pueden llega a ene un desa ollo pa a un disposi i o mó il o de p es aciones
educidas. Dicho es o, la p ime a implemen ación del sis ema lo cons i uye una
aplicación de esc i o io. Pos e io men e, se ealiza la po abilidad a un sis ema
Raspbe y Pi y And oid man eniendo el mismo código, esponsable de los p ocesos de
a amien o de imagen, como ejecu able en caso de la Raspbe y Pi y como lib e ía
dinámica na i a en caso de And oid.
Dada la complejidad del p oblema abo dado, la solución no podía se única. De hecho
exis e una mul i ud de posibles soluciones. La di e encia en e las mismas las pueden
dic a las mé icas del uncionamien o del p oduc o inal. A con inuación se desc iben
pasos básicos del uncionamien o del p og ama p opues o po [2] (aunque se
compa en cie os pasos que sí son comunes a o as posibles soluciones) y además cada
uno de ellos se á desc i o en de alle.
Ob ención de la o o del ehículo
És a se puede ob ene de una imagen es á ica o ex ae de un ame del p e iew de una
cáma a. El p ime caso es muy di ec o y es usado en la Raspbe y pi, pues en es e caso
es la solución habi ual, mien as el segundo caso, en ocado a disposi i os And oid,
pe mi e elegi en e usa la implemen ación de una cáma a del sis ema con el que se
abaja (and oid.ha dwa e.Came a) u op a po una clase en ol o io de la misma
p o is a po OpenCV (o g.openc .and oid.Ja aCame aView). Pa a es a aplicación se
op ó po la úl ima, dado que es a solución pe mi e ob ene las imágenes en una
es uc u a de da os Ma , que es usada po OpenCV a lo la go de odo el p oceso.

Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
38
P ime a solución
Segmen ación de la imagen pa a ob ención de la ma icula
Una ez ob enida la imagen inicial, se p ocede a ex ae el polígono de in e és, que,
idealmen e, es la ma icula sin los elemen os que la odean (ma cos, símbolos) pues
es os pueden di icul a la dis inción en e ca ac e es que o man la misma y uido
exis en e (como, po ejemplo, somb as, suciedad, impe ecciones, en e o os). Dado
que es e paso implica muchas ope aciones, a con inuación solo se desc ibi án las más
impo an es. Es e paso sí admi e dis in os diseños, ales como: clasi icación usando
SVM (Suppo Vec o Machine), ex acción de ca ac e ís icas usando cascadas de
Haa , econocimien o de pa ones y econocimien o de con o nos. Debido a la ela i a
simplicidad y apidez de diseño e implemen ación en la p ime a e sión del p og ama
se op ó po la úl ima opción.
La idea consis e en de ec a un polígono ce ado de colo uni o me que cumpla cie as
ca ac e ís icas ( elación de aspec o 52cm / 11cm, colo de ondo uni o me,
de e minados amaños máximos y mínimos y una al a densidad de líneas e icales).
Las ope aciones son como siguen:
 Con e sión a escala de g ises y sua izado
 Fil o Sobel
 Ope ación de umb al adap able
 Ope ación mo ológica de cie e
 De ección de con o nos
G á icamen e, es as ope aciones se ep esen an de la siguien e o ma y o den:
Figu a 21: Fil o Sobel
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
39
El il o Sobel se u iliza pa a halla los bo des e icales y la p ime a de i ada
ho izon al. La de i ada es la unción ma emá ica que en OpenCV se de ine como:
oid Sobel(Inpu A ay s c, Ou pu A ay ds , in ddep h, in xo de ,
in yo de , in ksize=3, double scale=1, double del a=0, in
bo de Type=BORDER_DEFAULT);
Figu a 22: Umb al adap able
Median e el uso del umb al adap able se ob iene una imagen bina ia con un
alo de umb al ob enido a a és del mé odo O su. Es e algo i mo equie e una
imagen de 8 bi s como en ada y de uel e el alo de umb al como esul ado.
Su uso es el siguien e:
Ma img_ h eshold;
Th eshold (img_sobel, img_ h eshold, 0, 255, CV_THRESH_OTSU +
CV_THRESH_BINARY);
Finalmen e, aplicando la ope ación mo ológica de cie e, se puede elimina los
espacios acíos en e cada bo de e ical y conec a los egiones que con ienen
un núme o ele ado de bo des e icales. En es e paso se puede ob ene las
egiones que pueden con ene una ma ícula.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
40
Figu a 23: Ope ación mo ológica de cie e
Figu a 24: De ección de con o nos
Una ez inalizado el paso de de ección de con o nos se ob ienen candida os de
con ene la ma ícula. En la imagen de a iba se puede obse a que de los es
con o nos de ec ados, dos son e óneos. Pa a desca a los, odos los candida os se
eco an y se a an po sepa ado. Los con o nos ob enidos son los siguien es:
Figu a 25: Con o no e óneo nº1
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
41
Figu a 26: Con o no e óneo nº2
Figu a 27: Con o no a p io i co ec o
Reconocimien o de la ma icula
Una ez ob enidos los polígonos candida os se puede p ocede di ec amen e al
siguien e paso e in oca el p og ama OCR (Tesse ac ) pa a cada uno de los polígonos
pa a és e de uel a el S ing que compone la ma ícula espe ando un esul ado pa a el
polígono co ec o y ninguno pa a polígonos e óneos. Sin emba go es a opción no es
ace ada, pues el OCR siemp e in en a ob ene un ex o de la imagen y en caso de que
és a no es é bien o mada, el ex o esul an e se á comple amen e e óneo. Incluso
después de aplica la ope ación de umb al al polígono co ec o, el esul ado ob enido
del Tesse ac (OCR) puede que es é po debajo del 50% de ca ac e es econocidos.
Como se puede obse a en la imagen de abajo, la banca ización pone de mani ies o las
impe ecciones exis en es en la imagen. Es e hecho ae la necesidad de econoce los
ca ac e es que o man la ma ícula y econs ui la imagen basándose en los mismos.
Pa a ello se oma como base un ec ángulo comple amen e neg o que ac ua á de ondo.
A con inuación se p ocede a de ec a con o nos en el p opio polígono. Una ez
inalizado el p oceso pa a odos los polígonos se compa an los esul ados, se il an los
con o nos que incumplen la condición de se posibles ca ac e es (po elación de
aspec o, amaños, á eas) y as compa a el núme o de con o nos co ec os pa a cada
polígono se desechan los que incumplan esas condiciones. Finalmen e se p ocede a uni
el ondo base con los ca ac e es de ec ados, p e iamen e aplicándoles cie os il os,
quedando la imagen bina izada y con poco uido y de o maciones.
Figu a 28: Con o no bina izado median e una ope ación de umb al
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
48
3. con inuación se hace uso de dis in as he amien as disponibles, cuya inalidad
es acili a el p oceso de gene ación de un nue o a chi o de en enamien o. La
p ime a es jTessBoxEdi o , que oma como en ada una imagen TIFF ( o ma o
na i o de Tesse ac ) y gene a un box ile. Se a a de un a chi o que con iene el
ipo y la posición de un ca ác e en la imagen de en enamien o. Po ejemplo, la
5ª ila con iene ca ac e es 4, po lo que las en adas del box ile se án:
 4 20 1474 35 1500 0
 4 50 1471 65 1500 0
 4 80 1474 95 1500 0
Figu a 37: jTessBoxEdi o edi ando box ile
4. El paso inal del p oceso de en enamien o ha sido simpli icado eno memen e
g acias a conjun os de sc ip s que o man pa e de Se ak Tesse ac T aine . Pa a
ob ene el a chi o de en enamien o esul an e bas a con usa la imagen de
en enamien o y el box ile como pa áme os de en ada de Se ak.
5. Finalmen e se ob iene un compac o (y po ello ápido de ca ga ) a chi o de
en enamien o que puede llega a aumen a signi ica i amen e la asa de
econocimien os exi osos, siemp e y cuando el en enamien o se haya ealizado
de o ma co ec a.
Las imágenes de en enamien o pueden o ma a chi os mul ipágina TIFF, cada una
con su box ile co espondien e y de es a o ma p oduci a chi os de en enamien o
o ien ados a múl iples uen es o lenguajes, siemp e y cuando sean a iaciones de la
misma amilia.

Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
49
4. Análisis y conclusiones
Una ez e minada la implemen ación de es e p oyec o, llegó la ho a de e alua lo en un
en o no eal y compa a , al menos, cie as ca ac e ís icas que compa e con o o ipo de
implemen aciones de econocimien o de ma ículas, dejando de lado la capacidad de
se mó il, pues es a únicamen e esul a ú il en un sis ema obus o y con iable. Aunque
ac ualmen e se a a de un ema que despie a g an in e és en e muchos sec o es
p o esionales in e esados, la o e a isible al público sigue siendo baja. Es deci , a pesa
de exis i cie o núme o de emp esas dedicadas a o ece un so wa e de ca ac e ís icas
simila es, es as o ecen las licencias a los in e esados o comp ado es bajo NDA (non-
disclosu e ag eemen ). Es deci , la emp esa que usa la ecnología en cues ión no iene
de echo a comen a o enseña las uncionalidades o capacidades del mismo. Es o hace
la compa a i as di ec as muy di íciles, pues no se a a de un so wa e disponible pa a
un público amplio.
Sin emba go, en el me cado exis e una aplicación And oid come cial cuyas capacidades
son bien conocidas y anunciadas po la emp esa que la desa olla. De hecho la e sión
demo de es a aplicación si ió como inspi ación pa a la implemen ación del mo o de
econocimien o de ma ículas de es e p oyec o. Se a a de una aplicación híb ida,
capaz de unciona en cualquie ipo de disposi i o And oid mínimamen e mode no y
cuya elocidad y p ecisión a la ho a de econoce ma iculas de odas los o ma os
posibles ( odas las eu opeas y muchas ex acomuni a ias) hacen de es a aplicación el
líde en es e segmen o. Quizás los pun os más in e esan es sean los hechos de que los
ingenie os de ás de es e p oyec o no hacen uso de OpenCV (sino de una se ie de
algo i mos p opios), además del p escindi de Tesse ac (in o mación ob enida
desensamblando las lib e ías na i as del p oyec o).
En caso de compa a i a di ec a en e Op ica y Ma ix Pocke [5], las á eas donde gana
el úl imo es en la dis ancia de econocimien o exi oso de la ma ícula. Op ica equie e
que la ma icula ocupe una pa e signi ica i a de la pan alla pa a p oduci una
segmen ación acep able, mien as que Ma ix Pocke puede segmen a una ma ícula a
a ios me os de dis ancia muy ápidamen e. O a di e encia en e las aplicaciones, es
la capacidad de econoce ma iculas ex anje as. El mo o OCR de Op ica , Tesse ac ,
ha sido en enado con ca ac e es de ma ículas nacionales, mien as que Ma ix Pocke
p escinde de un mo o OCR y lo sus i uye po un algo i mo de pa e n-ma ching de
ca ac e es que o man la ma icula sob e la imagen ob enida, po lo que su endimien o
y p ecisión a la ho a de aplica el econocimien o de ca ac e es a pa i del segmen o
ob enido es muy supe io .
Sin emba go, Op ica es un p oyec o muy ecien e y aun en es ado de desa ollo ac i o.
En un u u o, as es udia los allos exis en es y co egi la implemen ación y los
algo i mos de segmen ación y subsegmen acion, así como usando un a chi o de
en enamien o adecuado, es posible que el endimien o se ace que mucho al líde del
me cado ac ual.
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
50
5. Bibliog a ía
[1] Lenguaje DRAKON - h p://d akon-edi o .sou ce o ge.ne /language.h ml
[2] Mas e ing OpenCV wi h P ac ical Compu e Vision P ojec s, Daniel Lélis Baggio,
Da id Millán Esc i á, Pack Publishing, 2012 – Chap e 5 Numbe Pla e Recogni ion
Using SVM and Neu al Ne wo ks
[3] Openc 3 de - Scene Tex De ec ion - Class-speci ic Ex emal Regions o Scene
Tex De ec ion h p://docs.openc .o g/3.0-be a/modules/ ex /doc/e il e .h ml
[4] Real-Time Scene Tex Localiza ion and Recogni ion, Lukas Neumann, Ji i Ma as
Cen e o Machine Pe cep ion, Depa men o Cybe ne ics, Czech Technical
Uni e si y, P ague, Czech Republic, 2012
[5] Ma ix Pocke And oid - h p://www.anp .hu/ma ix_pocke _and oid/
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
51
Anexo I – JNI
JNI es el mecanismo que pe mi e la comunicación en e Ja a y C++. Pa a pode usa lo
se equie en las siguien es pa es:
1. Lib e ía dinámica con sus mé odos expues os ya compilada e incluida en
el p oyec o.
2. Las lib e ías se ienen que ca ga en el o den especi ico espec o a sus
dependencias
3. Los mé odos a usa son ma cados con la palab a cla e "na i e"
La siguien e clase mues a que las lib e ías na i as se ca gan desde un con ex o es á ico
y los p o o ipos de los mé odos na i os únicamen e se decla an.
public class Na i eW appe implemen s Na i e {
s a ic {
Sys em.loadLib a y("lep ");
Sys em.loadLib a y(" ess");
Sys em.loadLib a y("openc _ja a");
Sys em.loadLib a y("op ica ");
}
public na i e S ing e u nPla e(long ma Add );
public na i e boolean ini Engine();
}
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
52
A con inuación se desc ibe como se ins ancia la clase Na i eW appe
public in e ace Na i e {
S ing e u nPla e(long ma Add G );
boolean ini Engine();
public s a ic class Fac o y {
s a ic Na i eW appe ins ance;
public synch onized s a ic Na i e c ea e(){
i (ins ance == null){
ins ance = new Na i eW appe ();
}
e u n ins ance;
}
}
}
Se ins ancia:
p i a e Na i e na i ePa ;
...
i (na i ePa == null){
na i ePa = Na i e.Fac o y.c ea e();
}
Se llama a mé odo na i o pasándole un alo :
Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
53
S ing ma icula = na i ePa . e u nPla e( ameAdd .longValue());
Pa a pode c ea una lib e ía na i a hay que c ea los mé odos a los que se quie a
llama . Nó ese que los nomb es ienen que se los mismos que en Ja a, Po ejemplo al
mé odo de abajo no se le pasa ningún pa áme o y es e de uel e un boolean.
jboolean ini Engine(JNIEn * en , jobjec hiz){
...
e u n ue;
}
A es e mé odo se le pasa un long y se de uel e un S ing
js ing e u nPla e(JNIEn * en , jobjec hiz, jlong alue) {
...
e u n en ->NewS ingUTF("s ");
}
A con inuación se p ocede a expone los mé odos na i os pa a que es os puedan se
llamados desde Ja a. Es o se hace c eando un a ay de ipo JNINa i eMe hod que
iene que con ene los siguien es elemen os:
1. nomb e del mé odo
2. signa u a del mé odo
3. ( oid* nomb e del mé odo)
Bajo la signa u a del mé odo se en ienden los pa áme os que se le pasan al mé odo y
que es e de uel e, Po ejemplo, (J)LJa a/lang/S ing; quie e deci que el mé odo oma
como pa áme o un long ( ep esen ado como (J)) y de uel e un S ing ( ep esen ado
como LJa a/lang/S ing). O o ejemplo es ini Engine que no oma ningún pa áme o y
de uel e un boolean ( ep esen ado cono Z).

Diseño e implemen ación de múl iples in e aces pa a el con ol emo o de un ehículo
y del sis ema de isión emba cado
54
s a ic JNINa i eMe hod exposedMe hods[] = {
{" e u nPla e","(J)Lja a/lang/S ing;",( oid*) e u nPla e},
{"ini Engine","()Z",( oid*)ini Engine}
};
Pa a pode egis a los mé odos expues os, se u iliza el siguien e mé odo, que es
llamado cuando la lib e ía es ca gada, En él se ienen que indica la clase ja a que
decla a los mé odos na i os (la misma que la de a iba) y el a ay que con iene los
nomb es y signa u as.
jin JNI_OnLoad(Ja aVM* m, oid* ese ed)
{
JNIEn * en ;
i ( m->Ge En ( ein e p e _cas < oid**>(&en ), JNI_VERSION_1_6) !=
JNI_OK) {
e u n JNI_ERR;
}
jclass clazz = en ->FindClass("es/sdci/op ica /Na i eW appe ");
i (clazz==NULL){
e u n JNI_ERR;
}
en ->Regis e Na i es(clazz, exposedMe hods, sizeo (exposedMe hods) /
sizeo (JNINa i eMe hod));
en ->Dele eLocalRe (clazz);
e u n JNI_VERSION_1_6;
}