Full text
1
D. Jonay Tomás Toledo Ca illo , con N.I.F. 78698554Y p o eso Ti ula de Uni e sidad
adsc i o al depa amen o de ingenie ía in o má ica y de sis emas de la Uni e sidad de La
Laguna, como u o
C E R T I F I C A (N)
Que la p esen e memo ia i ulada:
“Sis ema de con ol de un d on pa a a eas en in e io es”
ha sido ealizada bajo su di ección po D. Edga Mesa San ana ,
con N.I.F. 45897555-C.
Y pa a que así cons e, en cumplimien o de la legislación igen e y a los e ec os
opo unos i man la p esen e en La Laguna a 21 de no iemb e de 2018
2
Ag adecimien os
P ime o ag adece a mi u o Jonay Tomás Toledo Ca illo, po que
sin su ines imable ayuda y guía en los momen os impo an es.
Además quisie a ag adece a mi amilia ya que sin ellos es e sueño
no se hubie a ealizado.
Po úl imo g acias a odos los compañe os y p o eso es de los que
he ap endido mucho, y de los que me lle o un g an ecue do.
3
Licencia
© Es a ob a es á bajo una licencia de C ea i e Commons
Reconocimien o-NoCome cial 4.0 In e nacional.
4
Resumen
El obje i o de es e abajo ha sido la cons ucción de un so wa e de con ol de un mic o
d on. Conc e amen e se a a del modelo Tello, de la ma ca DJI. Un d on de pequeñas
dimensiones que cuen a con conexión wi i pa a su con ol ex e no. El d on ambién posee
una cáma a de al a de inición, que en ía los o og amas, a a és de una conexión
TCP/IP. Se p e ende que el d on, median e el so wa e, sea capaz de econoce su
en o no y segui un obje i o conc e o.
El lenguaje u ilizado pa a es e p opósi o es py hon, conc e amen e la e sión 2.7. El
uso de es e lenguaje y su e sión, se án explicados en u u os apa ados.
En cuan o al econocimien o de obje os hemos u ilizado un algo i mo lige o
denominado SSD mobilene , el cual es á o ien ado pa a se añadido a sis emas de poca
capacidad de cómpu o.
La conexión en e el disposi i o Tello y el o denado , se ealiza median e conexión wi i,
di e enciando en e dos pue os di e en es, uno en el que ecibe los comandos y el d on
en ía una espues a y o o en la que el d on en ía los ames de la cáma a.
Palab as cla e: D on, Au ónomo, De ec ion, T acking
5
Abs ac
The objec i e o his p ojec has been he cons uc ion o a mic o d one con olle
so wa e. The model we choose was he Tello, om he DJI b and. I 's a small d one
de ice ha has a Wi-Fi connec ion o ex e nal con ol. The de ice also has a
high-de ini ion came a, which sends he ames, h ough a TCP/IP connec ion. I is
in ended ha he d one, h ough so wa e, be able o ecognize i s en i onmen and ollow
a speci ic objec i e.
The language used o his pu pose is py hon, speci ically he 2.7 e sion, The use o
his language and i s e sion will be explained in u u e sec ions.
As o he ecogni ion o objec s, we ha e used a ligh weigh algo i hm called SSD
mobilene , which is o ien ed o be added in sys ems wi h low compu ing capaci y.
Keywo ds: D one, Au onomous, De ec ion, T acking
6
Índice gene al
Capí ulo 1
In oducción 11
Mo i ación 11
An eceden es y es ado ac ual 11
Ca ac e ís icas Técnicas del D on 14
Obje i o P incipal 15
Obje i o especí ico 15
Casos de uso 16
Capí ulo 2
Me odología 17
Me odología Gene al 17
He amien a SDK 17
Resumen 17
Na egación Au omá ica 21
Resumen 21
Lib e ías y He amien as u ilizadas 21
Implemen ación 22
Tes pa a la elección del acke 24
Resumen 24
Lib e ías y He amien as u ilizadas 25
Algo i mos p obados 25
Análisis de Resul ados 26
Conclusiones 32
Capí ulo 3
Resul ados 33
Resumen 33
Análisis de Resul ados 34
Capí ulo 4
7
Conclusiones y líneas u u as 35
Capí ulo 5
Summa y and Conclusions 35
Capí ulo 6
P esupues o 36
Capí ulo 7
Apéndice 37
Código desa ollado de ec o 37
Código desa ollado de acking 39
Código con ol 41
8
Índice de igu as
Figu a 1: Funcionamien o R-CNN-----------------------------------------------------13
Figu a 2: Es uc u a SSD----------------------------------------------------------------14
Figu a 3: D on Tello DJI------------------------------------------------------------------15
Figu a 4: In e az ideo-------------------------------------------------------------------19
Figu a 5: In e az con ol Manual------------------------------------------------------20
Figu a 6: Diag ama básico de uncionamien o-------------------------------------22
Figu a 7: Cap u a de los ideos u ilizados-------------------------------------------25
Figu a 8: Cap u a p ueba_01-----------------------------------------------------------27
Figu a 9: Cap u a p ueba_02-----------------------------------------------------------28
Figu a 10: Cap u a p ueba_c01--------------------------------------------------------30
Figu a 11.1: Cap u a p ueba_c02------------------------------------------------------31
Figu a 11.2 : Cap u a p ueba_c02 oclusión pa cial-------------------------------31
Figu a 12 : In e az con el sis ema de econocimien o ac i o
y el obje i o seleccionado---------------------------------------------------------------34
Figu a 13 : Mo imien os sesión p uebas--------------------------------------------35
9
so wa e. Aumen ando en complejidad g adualmen e. Las e siones
se denominan, Single Tello Tes , Tello Video y Tello Video Wi h Pose
Recogni ion. Como sus p opio nomb e indica, el p ime o es una
pequeña p ueba de uncionamien o, en la que debemos esc ibi los
comandos en un a chi o de ex o y al ejecu a lo, el disposi i o segui á
esas ins ucciones, con el incon enien e de no con ola lo du an e el
uelo. El segundo es algo más complejo, el sis ema aho a es una
in e az g á ica que nos mues a la imágen y además es con olable
median e el eclado, lo cual soluciona el incon enien e del p ime o. La
e ce a es igual que la an e io , pe o ag egando un econocimien o de
la pos u a del cue po, pe o es sólo pa a es mo imien os, dado que
el es o no es án con emplados.
3. Analiza las e siones exis en es y elegi sob e cuál cons ui el
so wa e au ónomo de con ol.
● Desa ollo del so wa e de con ol:
1. T as elegi una de las e siones, decidi median e un so wa e de
p uebas qué sis ema de a amien o de imágenes u iliza emos pa a el
desa ollo del so wa e de con ol au ónomo.
2. Realiza las unciones pe inen es pa a ajus a el uncionamien o del
sis ema de mo imien o jun o al sis ema de seguimien o y a amien o
de imágenes elegido.
Mejo as en el so wa e c eado, aumen ando la limpieza del código y
ajus ando los pa áme os median e p uebas con el d on.
1.6. Casos de uso
El obje i o p incipal de es e p oyec o consis e en la c eación de un
p og ama in o má ico pa a el seguimien o de un obje i o conc e o en zonas
de in e io de o ma au omá ica median e el a amien o de imágenes,
asegu ando su co ec o uncionamien o, así como los equisi os desc i os.
El sis ema so wa e desa ollado se desa olla con la idea de un sis ema
au ónomo de seguimien o, pa a un d on come cial. Es e sis ema so wa e,
además es capaz de iden i ica el en o no.
Con ex ualizando su uso, el sis ema es desa ollado con ines inicialmen e
académicos, aunque puede se usado en o as si uaciones. Ejemplo de es e
es el ámbi o ec ea i o, usado pa a g aba a una pe sona en mo imien o, sin
la necesidad de eje ce ningún ipo de con ol sob e el d on.
16
2. Capí ulo 2
Me odología
2.1. Me odología Gene al
En es a sección del in o me discu i emos sob e los dis in os
lenguajes p esen es en el so wa e y las lib e ías u ilizadas pa a el desa ollo
de la misma. Así como las decisiones omadas con el p opósi o de da
solución a los e os acon ecidos du an e la ealización del abajo.
En líneas gene ales el p og ama p incipal es á desa ollado en el lenguaje
de p og amación py hon, conc e amen e en la e sión 2.7. La azón esencial
del uso de es e lenguaje, es su implemen ación inicial del sdk en es e
lenguaje y además posee lib e ías pa a el a amien o y econocimien o de
imágenes.
Como lib e ías u ilizadas se encuen an openc , una lib e ía de u ilidades
denominada imu ils, con la que ealizamos medidas de FPS, lib e ía
h eading pa a manejo de hilos.
Una pa e impo an e del código es el decodi icado h264decode esc i o en
c++, cuya unción es la de decodi ica el ideo p opo cionado po el apa a o
de DJI.
Además de una in e az g á ica basada en Tkin e y PIL, con la que
mos amos en el disposi i o de con ol dis in as opciones de con ol y el
ideo en iempo eal.
2.2. He amien a SDK
2.2.1. Resumen
El SDK, se encuen a en la clase Tello, den o del a chi o ello.py.
Es a clase es la enca gada de la in e acción con el d on. La conección
con el disposi i o, se ealiza nada más inicia la clase. Las dos unciones
más impo an e de es a clase, apa e de la conexión, son las unciones de
lec u a del ame y la unción de en ió de los comandos.
17
de send_command(sel , command):
"""
Send a command o he Tello and wai o a esponse.
:pa am command: Command o send.
: e u n (s ): Response om Tello.
"""
p in (">> send cmd: {}". o ma (command))
sel .abo _ lag = False
ime = h eading.Time (sel .command_ imeou , sel .se _abo _ lag)
sel .socke .send o(command.encode('u -8'), sel . ello_add ess)
ime .s a ()
while sel . esponse is None:
i sel .abo _ lag is T ue:
b eak
ime .cancel()
i sel . esponse is None:
esponse = 'none_ esponse'
else:
esponse = sel . esponse.decode('u -8')
sel . esponse = None
e u n esponse
Como podemos obse a , la unción de en ío, ecibe un comando,
se o ma ea, y es en iado po el socke de conexión y espe a po la
espues a du an e un iempo.
Exis en dos e siones de el sdk, una inicial en la que sólo es
capaz de en ia los comandos de mo imien o al d on
En es a p ime a e sión del p og ama, que u iliza la p ime a
e sión del sdk, los comandos se án esc i os en un a chi o de ex o, y el
so wa e, i á en iando cada comando de uno en uno, en ia á el p ime
comando, espe a á espues a del quadcop e y segui á con el siguien e
comando. En es a e sión el SDK, no posee el socke necesa io pa a la
ecepción de ideo.
Mien as que la segunda e sión del SDK, exis en dos e siones
de uso:
● En la p ime a e sión de uso del segundo SDK, enemos una
18
in e az g á ica, en la que es posible el con ol del d on en
iempo eal. Además desde la p opia in e az, pod emos e
imágenes en iempo eal del p opio d on.
● En la e ce a e sión, se ha ag egado un nue o sis ema de
con ol median e la posición del cue po. Pulsando un bo ón en
la in e az, accedemos a es e nue o sis ema de con ol.
Aunque solo posee es comandos de con ol, mo e hacia
a ás, hacia adelan e y a e iza .
Po an o al i añadiendo complejidad desde la p ime a e sión
has a la e ce a, nos amos a cen a en es a úl ima, la cual posee una
in e az g á ica, y un sis ema de econocimien o del cue po median e
pun os, que simulan las a iculaciones de un suje o.
Median e es a e sión es posible con ola el disposi i o median e
la in e az g á ica, jun o con el eclado :
● W : El d on ealiza un mo imien o de subida.
● S : El d on ealiza un mo imien o de bajada.
● A : El d on ealiza un mo imien o de o ación en con a de las
agujas del eloj.
● D : El d on ealiza un mo imien o de o ación a a o de las
agujas del eloj.
19
● Flecha A iba : El d on se mue e hacia adelan e.
● Flecha Abajo : El d on se mue e hacia a ás.
● Flecha Izquie da : El d on ealiza un mo imien o la e al hacia la
izquie da.
● Flecha De echa : El d on ealiza un mo imien o la e al hacia la
de echa.
Además de median e el eclado, ambién enemos bo ones en la
in e az. De es os bo ones, los más impo an e son Takeo , que se
enca ga del despegue au omá ico del quadcop e y Land, que se enca ga
del a e izaje.
Con los slide s la e ales, ajus amos la elocidad de mo imien o y
de gi o. Pa a hace es os cambios, después de ajus a en los slide s,
debemos pulsa los bo ones cen ales Rese Dis ance y Rese Deg ee,
espec i amen e.
La o a o ma de se con olado es median e la opción
denominada pose_mode, la cual habili a al disposi i o de
de ec a el cue po de una pe sona, y median e la posición de
los b azos ealiza es comandos:
20
|
/ |
/
Si los b azos del suje o se
encuen an a 45º, el d on se
mo e á hacia delan e.
_ _|_ _
|
/
Si la pe sona, iene los
b azos o mando un ángulo
de 0º, el d on se mo e á
hacia a ás.
|
/| /
/
En es e úl imo caso, el
obje i o iene los b azos
haciendo una , po an o el
d on a e iza á.
2.3. Na egación Au omá ica
2.3.1. Resumen
El sis ema de na egación, es á c eado con la inalidad de
pe segui un obje i o. Si bien, el p oblema es más complejo de lo que
apa en a en un inicio. Aunque en la ac ualidad exis en sis emas de
seguimien o, siemp e exis e mejo a en su endimien o y
compo amien o.
Pa a esol e es e p oblema, necesi amos conoce cie a in o mación:
● Localización: Localización del obje o a pe segui
●Es ado: Es ado ac ual del d on ( eposo, en el ai e)
2.3.2. Lib e ías y He amien as u ilizadas
Con el obje i o de la ealización de es e apa ado, se ha u ilizado
las siguien es he amien as y lib e ías.
●Py hon : es un lenguaje de p og amación in e p e ado y
mul ipa adigma. Pa adigmas cómo p og amación o ien ada a obje os,
21
impe a i a y p og amación uncional. Conc e amen e hemos u ilizado
la e sión 2.7 de py hon. En u u os apa ados habla emos de el
po qué de es a e sión.
● Openc : Es una lib e ía lib e, c eada pa a el a amien o de
imágenes. Es a lib e ía es usada pa a una in inidad de ope aciones,
modi icación del amaño de la imágen, aplicación de másca as de
sua izado, de ección de obje os median e SDD, di e sos sis emas de
acking de los que habla emos más adelan e.
● Ca e: A qui ec u a con olucional pa a la inco po ación ápida de
unciones. Es un amewo k esc i o en c++, con una in e az esc i a
en py hon. Hemos u ilizado una ed ya en enada pa a el
econocimien o de obje i os, basado en SSD (Single Sho Mul ibox
De ec o ).
● h264decode : es un módulo pa a py hon, que p o ee de un
decodi icado simple pa a ídeo cap u ado desde un cáma a.
Inicialmen e ue esc i o pa a se usado con p oyec os de aspbe y pi.
Es e decodi icado es á esc i o po DaWel e
h ps://gi hub.com/DaWel e /h264decode
2.3.3. Implemen ación
Pa a la c eación del so wa e con olado , se modi icó el a chi o
ello_pose.py, que se encuen a en la e ce a e sión del so wa e
22
c eado po dji. Es a implemen ación dibujaba una se ie de pun os en el
cue po, y median e el ángulo que o maba es os pun os ealizaba los
mo imien os. Tenía es mo imien os, en caso de ene los b azos
le an ados, el disposi i o se mo ía hacia a ás, los b azos hacia abajo
le indicaba un mo imien o hacia adelan e y los b azos o mando una V
le o denaban ealiza un a e izaje.
Es e sis ema ha modi icado po un sis ema basado en econocimien o
de imágenes y el sis ema p e en enado ca e, lo que amplía la
can idad de obje i os.
Es e sis ema ca e es un SSD desa ollado pa a disposi i os po á iles y
de baja po encia denominado MobileNe .
Con es e sis ema, el d on pin a ec ángulos e des en los obje os
de ec ados, mien as que el ojo se á el obje i o a segui .
En p incipio el desa ollo el sis ema se basó inicialmen e en es e
sis ema de de ección, ob eniendo un obje i o basado en un
iden i icado del obje o. Es e iden i icado es común pa a odo obje o
del mismo ipo. Toda pe sona end á como iden i icado el núme o 15.
Es o es un p oblema, el sis ema pod ía con undi de obje i o
ácilmen e. El código aquí desc i o se encuen a en el apéndice [ 1 ].
Pa a es o, se añade al código inicial una nue a clase, en el
a chi o ello_ acke .py. Los sis emas de acking no ienen ninguna
idea p econcebida de qué es el obje o a obse a . Se le pasa una
posición en un ame inicial y es seguida po el acke en la imágen.
Con es o se soluciona el p oblema de i ado de u iliza un sis ema de
de ección. [ 2 ]
El acking es más ápido que la de ección, La azón es simple, cuando
ealizas seguimien o de un obje o, al deci le qué debe segui , ya posee
mucha in o mación, como su o ma, la localización en el espacio
obse ado y la di ección y elocidad a la que se mue e. Con es a
in o mación se puede p edeci el mo imien o del obje o en el siguien e
ame y ealiza una pequeña búsqueda po la zona en cues ión.
Mien as que los algo i mos de de ección empiezan desde ce o.
Sin emba go, lejos de desecha el sis ema de de ección, se ha
man enido pa a a a de c ea un sis ema, no sólo capaz de de ec a y
segui un obje i o, sino que además sea capaz de esqui a obs áculos
y man ene pe sis encia en el sis ema de acking, el cual puede alla
al exis i oclusión en e el obje i o y la cáma a del d on.
23
Pa a el mo imien o del d on, se ha añadido en el hilo de con ol
den o del a chi o ello_con ol_ui.py. Es e hilo se enca gaba de en ia
al disposi i o un comando e óneo pa a man ene el d on en uelo ( en
caso de no ecibi nada el d on au omá icamen e a e iza. Ha sido
modi icado como sis ema de mo imien o basado en la posición del
obje i o con espec o a su posición en la imágen. La posición del
obje i o es suminis ada po el sis ema de acking. El sis ema de
con ol a a de man ene el obje i o cen ado en la imágen. Pa a ello el
d on u iliza la di e encia del obje i o con espec o al cen o y p ocede a
la ealización de mo imien os de co ección. Los mo imien os que es
capaz de ealiza son seis, gi a a de echa e izquie da, subi y baja y
mo imien o hacia delan e y hacia a ás.
Es os mo imien os es án aco ados, pa a man ene el quadcop e lo
más es able posible, e i ando mo imien o innecesa ios si el obje i o
apenas se desplaza del cen o de la imágen. Mien as que cuan o más
se aleja de él, mayo es la ue za que se le ag ega al mo imien o. [ 3 ]
Pa a el uncionamien o del acke , es necesa io pasa le un ecuad o,
en el que se encuen e el obje i o. Pa a es o, hemos modi icado el
bo ón pause, que e a el enca gado de pausa la imagen. En luga de
es o, aho a llama a la unción se Ta ge , la cual mues a un solo ame,
y con el a ón seleccionamos la zona a ealiza el acking. T as es o
debemos pulsa la ecla en e . Con es o el sis ema pod á ealiza el
acking. Podemos llama a se Ta ge , cada ez que que amos cambia
de obje i o.
2.4. Tes pa a la elección del acke
2.4.1. Resumen
Las simulaciones lle adas a cabo, han sido c eadas pa a la
ob ención de da os sob e el mejo algo i mo de acking, pa a cada
si uación. Las p uebas se ealiza on con dis in os ipos de ídeo y
ealizando la búsqueda sob e dis in os obje os o pe sonas en cada
ídeo.
Los p ime os ídeos han sido ob enidos de in e ne , mien as que los
o os dos han sido g abados desde el p opio d on, u ilizando la
aplicación pa a ios de la p opia ma ca.
En el p ime o podemos obse a una zona pea onal de una ciudad,
mien as que el segundo, podemos obse a que es un cen o
come cial abie o. Los dos g abados desde el disposi i o son calles de
San C is óbal de La Laguna.
24
2.4.2. Lib e ías y He amien as u ilizadas
Pa a ealiza es e es , debemos u iliza , además de las lib e ías
an e io es en el sis ema de acking, la lib e ía imu ils . Es a lib e ía
con iene unciones pa a ealiza ope aciones básicas con imágenes
como aslación, o ación. Pe o pa a noso os la unción que nos
in e esa es la de ps, que nos pe mi i á medi en pan alla los
o og amas po segundo, que son capaces de p ocesa cada uno de los
algo i mos de acking u ilizados.
2.4.3. Algo i mos p obados
Los algo i mos u ilizados, son los p opios que con iene la
lib e ía openc , es os algo i mos son:
● CSRT : U iliza un il o de disc iminación co elacionado.
● KCF: También denominado acking wi h co ela ion
il e s, la idea básica de es e acke es la de es ima un
il o de imagen óp imo de mane a que la il ación, jun o
con la imagen de en ada, p oduzca la espues a
deseada. Es a espues a deseada es ípicamen e de
una gaussiana cen ada en la ubicación del obje i o.
●Boos ing : Consis e en combina a ios clasi icado es
débiles pa a ob ene una clasi icación conjun a mejo .
Es os clasi icado es débiles, se les añade un peso en
unción de si sus p edicciones son ace adas.
25
Media de FPS
Núme o de allos
Obse aciones
CSRT
25
0
El algo i mo
unciona en
oclusión pa cial,
sin emba go al
desapa ece el
coche de escena,
cambia el obje i o.
KCF
44
186
No i icación
co ec a de allos,
ecupe ación del
obje i o co ec a.
Boos ing
29
0
Aunque no lo
no i ique, el
algo i mo alla al
desapa ece el
obje i o, cambia
de obje i o.
MIL
16.2
0
Falla cuando el
obje i o
desapa ece de
pan alla, aunque
no lo no i ica.
TLD
15
0
Tiene muchos
allos que no
no i ica, el obje i o
es ma cado de
o ma e á ica.
Median low
80
0
Aunque alla en
oclusión pa cial y
en la desapa ición
momen ánea del
obje i o, no epo a
allo.
Mosse
97
77
Repo a allos, en
oclusión pa cial
unciona bien, no
es muy iable
cuando el obje i o
deja de apa ece
32
en pan alla.
En es e caso, aunque el algo i mo de CSRT unciona en oclusión pa cial, en el caso
de desapa ece el obje i o, elige o o ehículo de ca ac e ís icas iniciales, lo que lo
hace un peo candida o que el algo i mo KCF .
2.4.5. Conclusiones
Pa a el obje i o de es e sis ema de seguimien o en conc e o,
debemos ene en cuen a que los o og amas po segundo en egados
po el p opio d on, ienen un máximo de 30 ps. Con es o en men e si
elegimos un sis ema de acking con al a asa de o og amas,
es a emos despe diciando o almen e la elocidad de p ocesamien o
del algo i mo, además cómo podemos comp oba en la abla an e io ,
algo i mos con al a asa de o og amas po segundo, posee un
endimien o peo que o os más len os. Sob e odo si el obje i o en
men e es un obje i o de amaño in e io a un coche.
Po an o desca amos usa en el sis ema, algo i mos de acking como
Mosse y Median low.
En o os casos con sis emas que engan una asa de o og amas
más con enida pe o con una al a asa de allos, an o epo ados po el
p opio sis ema, como los obse ados median e la p ueba, ambién
se án desca ados. Desca amos los algo i mos Tld , Boos ing , MIL y
CSRT .
El que mejo esul ados ha epo ado en odas las p uebas, ha
sido el algo i mo de KCF , an o en media de ps (siendo supe io al
sopo ado po el d on), como po su capacidad de ecupe ación del
obje i o en caso de se ocluido. Po an o es el que usa emos pa a el
sis ema de seguimien o del d on.
Aunque haya sido el elegido, debemos ene en cuen a que pa a
obje os g andes, o os sis emas uncionan pe ec amen e.
33
3. Capí ulo 3
Resul ados
3.1. Resumen
Los esul ados ob enidos po el sis ema de con ol au ónomo
desa ollado sob e la he amien a p opo cionada (SDK), nos dan un
sis ema bas an e capaz como sis ema de seguimien o en zonas de
in e io .
En la siguien e imágen podemos obse a median e la consola los
mo imien os ealizados du an e una sesión de p uebas.
34
En la que se puede obse a los comandos en iados desde la
aplicación al d on, jun o con un núme o, que es el mo imien o que debe
hace .
3.2. Análisis de Resul ados
Du an e el p oceso de c eación de es e sis ema, hemos
obse ado la g an can idad de sis emas de seguimien o exis en es en el
me cado, dis inguiendo en e dos g upos, la de ección y el acking.
U ilizando ambos hemos podido esol e los p oblemas de i ados de cada
uno de ellos. En caso de habe usado simplemen e el acking, hubie a
sido imposible dis ingui el es o de obje os que pueden in e e i el
sis ema. En el caso de habe empleado el sis ema de de ección, no
hubié amos podido p ese a la iden idad del obje o a segui .
Con es o el uso de las dos sis emas de o ma pa alela
c eemos que es la mejo ap oximación posible del sis ema.
35
4. Capí ulo 4
Conclusiones y líneas u u as
Du an e el desa ollo de es e p oyec o, se han implemen ado una se ie de
he amien as ap o echables en u u as in es igaciones sob e la na egación
au omá ica en ehículos aé eos, del ipo quadcop e . Median e es as
he amien as, hemos descubie o la posibilidad de u iliza el a amien o de
imágenes pa a localiza un obje i o a segui , ya sea median e acking o median e
de ección.
T as el análisis de los algo i mos de acking implemen ados den o de la
lib e ía openc , hemos es ablecido un sis ema aco de con nues o disposi i o y
sus especi icaciones.
Así mismo hemos man enido el sis ema de de ección, posibili ando en un
u u o la ag egación de un agen e in eligen e, capaz de u iliza la in o mación
p opo cionada del de ec o , siendo es e agen e in eligen e el u u o enca gado del
mo imien o au omá ico del disposi i o, en luga de las condiciones esc i as en el
p og ama. Con es o además de segui el obje i o con la in o mación
p opo cionada po el acking, debemos ag ega le la in o mación ob enida po el
de ec o , e i ando así posibles colisiones.
5. Capí ulo 5
Summa y and Conclusions
Du ing he de elopmen o his p ojec , a se ies o use ul ools ha e been
implemen ed o u u e esea ch on au oma ic na iga ion in ae ial ehicles, like
quadcop e ype. Th ough hese ools, we ha e disco e ed he possibili y o using
image p ocessing o loca e a ge s o ollow, ei he by acking o by de ec ion.
A e analyzing he acking algo i hms implemen ed wi hin he openc
lib a y, we ha e es ablished a sys em in acco dance wi h ou de ice and i s
36
speci ica ions.
We ha e also main ained he de ec ion sys em, enabling in he u u e he
agg ega ion o an in elligen agen , capable o using he in o ma ion p o ided by
he de ec o . This in elligen agen will be in cha ge o he au oma ic mo emen o
he de ice, ins ead o he condi ions w i en in he p og am. Wi h his in addi ions
o ollowing he objec i e wi h he in o ma ion p o ided by he acking, we mus
add he in o ma ion ob ained by he de ec o , wi h his he agen could a oid
possible collisions.
6. Capí ulo 6
P esupues o
El p esupues o eque ido pa a la ealización de es e p oyec o
calculado según el cos e ap oximado de una pe sona ealizando
es e ipo de a eas en Cana ias con p oyec os de es e ipo,
equi ale a 40€.
Ta ea
Ho as empleadas
Cos e
Ges ión del conocimien o
150
6000
Desa ollo del sis ema de
de ección
50
2000
P uebas de
uncionamien o
15
600
P uebas algo i mos de
acking
30
1200
Análisis de esul ados
acking
20
800
Implemen ación sis ema
de acking
40
1600
37
Análisis de esul ado
sis ema au ónomo
30
1200
To al
335
13400
Tabla 7.1: Resumen de ipos
7. Capí ulo 7
Apéndice
7.1. Código desa ollado de ec o
Algo i mo de de ección
/******************************************************************************
*
* ello_pose.py
*
*******************************************************************************
*
* Edga Mesa San ana
*
*
* 09/09/2019
*********************************************************************************
de de ec (sel , ame, box):
"""
Funcion p incipal que ealiza la de eccion de obje os en el ame dado
:pa am ame: Recibe el ame del ideo
:pa am box: Es la localizacion del obje o pasado po el acke , Es
usado solo pa a pin a lo en el ame
: e u n : De uel e el ame con los ecuad os de los obje os de ec ados.
38
"""
ameWid h = ame.shape[1] # 960
ameHeigh = ame.shape[0] # 720
ame_ esized = c 2. esize( ame, ( sel .inWid h, sel .inHeigh ))
inpBlob = c 2.dnn.blobF omImage( ame_ esized, 0.007843,
(sel .inWid h, sel .inHeigh ),
(127.5, 127.5, 127.5), False)
sel .ne .se Inpu (inpBlob)
# P edic ion o ne wo k
de ec ions = sel .ne . o wa d()
o i in ange(de ec ions.shape[2]):
con idence = de ec ions[0, 0, i, 2] # Con idence o p edic ion
i con idence > sel .con idence:
classId = in (de ec ions[0, 0, i, 1]) #name objec
#Objec loca ion
xLe Bo om = in (de ec ions[0, 0, i, 3] * sel .inWid h)
yLe Bo om = in (de ec ions[0, 0, i, 4] * sel .inHeigh )
xRigh Top = in (de ec ions[0, 0, i, 5] * sel .inWid h)
yRigh Top = in (de ec ions[0, 0, i, 6] * sel .inHeigh )
# Fac o o scale o o iginal size o ame
heigh Fac o = ameHeigh /sel .inHeigh
wid hFac o = ameWid h/sel .inWid h
# Scale objec de ec ion o ame
xLe Bo om = in (wid hFac o * xLe Bo om)
yLe Bo om = in (heigh Fac o * yLe Bo om)
xRigh Top = in (wid hFac o * xRigh Top)
yRigh Top = in (heigh Fac o * yRigh Top)
# D aw loca ion o objec
i box is no None:
xb, yb, wb, hb = sel . a ge Posi ion(box)
39
c 2. ec angle( ame, (xb, yb), (wb, hb),
(255, 0, 0))
c 2. ec angle( ame, (xLe Bo om, yLe Bo om), (xRigh Top,
yRigh Top),
(0, 255, 0))
# D aw label and con idence o p edic ion in ame esized
i classId in sel .classNames:
label = sel .classNames[classId] + ": " + s (con idence)
labelSize, baseLine = c 2.ge Tex Size(label,
c 2.FONT_HERSHEY_SIMPLEX, 0.5, 1)
yLe Bo om = max(yLe Bo om, labelSize[1])
c 2. ec angle( ame, (xLe Bo om, yLe Bo om - labelSize[1]),
(xLe Bo om + labelSize[0], yLe Bo om + baseLine),
(255, 255, 255), c 2.FILLED)
c 2.pu Tex ( ame, label, (xLe Bo om, yLe Bo om),
c 2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0))
e u n ame
*
*
*******************************************************************************/
7.2. Código desa ollado de acking
Algo i mo de acking
/*******************************************************************************
*
* ello_ acke .py
*
*******************************************************************************
*
* Edga Mesa San ana
*
* 09/09/2019
40
********************************************************************************
de ack(sel , ame):
"""
Funcion p incipal de la clase, es a uncion es la enca gada de ecibi el ame,
y ealiza el acking del obje i o ma cado
:pa am ame: Recibe el ame del ideo
: e u n : De uel e la posicion del obje o
"""
i ame is no None:
# g ab he ame sizes, o la e
( ameHeigh , ameWid h ) = ame.shape[:2]
# esize he ame (so we can p ocess i as e ) and g ab he
# new ame dimensions
ameResized = c 2. esize( ame, ( sel .inWid h, sel .inHeigh ))
i (sel .ini BBSe is False) & (sel . a ge Box is no None):
a ge Box = lis (sel . a ge Box)
a ge Box = ( a ge Box[0]*sel .inWid h/ ameWid h,
a ge Box[1]*sel .inHeigh / ameHeigh ,
a ge Box[2]*sel .inWid h/ ameWid h,
a ge Box[3]*sel .inHeigh / ameHeigh )
a ge Box = uple( a ge Box)
sel .ini BB = a ge Box
sel . acke .ini ( ameResized, sel .ini BB)
sel .ini BBSe = T ue
else:
# g ab he new bounding box coo dina es o he objec
(success, box) = sel . acke .upda e( ameResized)
# check o see i he acking was success
i success:
(x, y, w, h) = [in ( ) o in box]
sel .box = (x* ameWid h/sel .inWid h, y* ameHeigh /sel .inHeigh ,
w* ameWid h/sel .inWid h +
x* ameWid h/sel .inWid h,
h* ameHeigh /sel .inHeigh +
y* ameHeigh /sel .inHeigh )
else:
sel .box = None
41