scieee Open visual document viewer

Sistema de control de un dron para tareas en interiores

Mesa Santana, Edgar

Abstract

El objetivo de este trabajo ha sido la construcción de un software de control de un micro dron. Concretamente se trata del modelo Tello, de la marca DJI. Un dron de pequeñas dimensiones que cuenta con conexión wifi para su control externo. El dron también posee una cámara de alta definición, que envía los fotogramas, a través de una conexión TCP/IP. Se pretende que el dron, mediante el software, sea capaz de reconocer su entorno y seguir un objetivo concreto. El lenguaje utilizado para este propósito es python, concretamente la versión 2.7. El uso de este lenguaje y su versión, serán explicados en futuros apartados. En cuanto al reconocimiento de objetos hemos utilizado un algoritmo ligero denominado SSD mobilenet, el cual está orientado para ser añadido a sistemas de poca capacidad de cómputo. La conexión entre el dispositivo Tello y el ordenador, se realiza mediante conexión wifi, diferenciando entre dos puertos diferentes, uno en el que recibe los comandos y el dron envía una respuesta y otro en la que el dron envía los frames de la cámara.

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