trabajo fin de grado ingeniería electrónica, robótica y...

83
carr Equation Chapter 1 Section 1 Trabajo Fin de Grado Ingeniería Electrónica, Robótica y Mecatrónica Sistema automatizado de reconocimiento de malas hierbas en cultivos de algodón basado en aprendizaje Autor: Jesús Piña Muñoz Tutor: Federico Cuesta Rojo Dep. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2018

Upload: others

Post on 20-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

  • carr Equation Chapter 1 Section 1

    Trabajo Fin de Grado

    Ingeniería Electrónica, Robótica y Mecatrónica

    Sistema automatizado de reconocimiento de

    malas hierbas en cultivos de algodón basado en

    aprendizaje

    Autor: Jesús Piña Muñoz

    Tutor: Federico Cuesta Rojo

    Dep. Ingeniería de Sistemas y Automática

    Escuela Técnica Superior de Ingeniería

    Universidad de Sevilla

    Sevilla, 2018

  • ii

  • iii

    Trabajo Fin de Grado

    Ingeniería Electrónica, Robótica y Mecatrónica

    Sistema automatizado de reconocimiento de malas

    hierbas en cultivos de algodón basado en

    aprendizaje

    Autor:

    Jesús Piña Muñoz

    Tutor:

    Federico Cuesta Rojo

    Profesor titular

    Dep. Ingeniería de Sistemas y Automática

    Escuela Técnica Superior de Ingeniería

    Universidad de Sevilla

    Sevilla, 2018

  • iv

  • v

    Trabajo Fin de Grado: Sistema automatizado de reconocimiento de malas hierbas en cultivos de algodón

    basado en aprendizaje

    Autor: Jesús Piña Muñoz

    Tutor: Federico Cuesta Rojo

    El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:

    Presidente:

    Vocales:

    Secretario:

    Acuerdan otorgarle la calificación de:

  • vi

    Sevilla, 2018

    El Secretario del Tribunal

  • vii

  • viii

    Agradecimientos

    A mi familia por permitirme realizar mis estudios y su constante apoyo,

    A mis amigos por siempre estar disponible para cualquier ayuda que necesite,

    Y a Federico, por guiarme en todo momento.

  • ix

  • x

    Resumen

    Este trabajo se basa en el reconocimiento automático de las malezas típicas que se encuentran en los cultivos

    de algodón. Concretamente se van a reconocer dos de éstas malas hierbas, Chenopodium Album, conocido

    vulgarmente como Cenizo Blanco y Chrozophora Tinctoria, conocido como Cenizo Tornasol. Para ello se ha

    implementado un vehículo equipado de un sistema de cámaras capaces de identificar estas plantas y de seguir

    a una persona por el color de su camiseta. Se exponen los resultados de aplicar las técnicas necesarias para

    obtener un buen rendimiento, se obtienen conclusiones y se proponen futuras mejoras.

  • xi

  • xii

    Abstract

    The aim of this work is to automatically identify the weeds growing in cotton plantations. By generating an

    alarm sing, the system is able inform the workers, and tell them to remove the parasitic plant in case that it has

    not already been removed. The device follows the trajectory marked by the worker. The results obtained when

    the techniques required to obtain an outstanding performance are applied are shown. Finally, conclusions are

    presented and some future improvements are suggested.

  • xiii

  • xiv

    Índice

    Agradecimientos viii

    Resumen x

    Abstract xii

    Índice xiv

    Índice de Tablas xvi

    Índice de Figuras xvii

    Notación xx

    Conceptos xxi

    1 Introducción 11 1.1. Antecedentes 11 1.2. Motivación 11 1.3. Objetivo 12 1.4. Estructura del trabajo 12

    Estado del Arte 13 2.1. La Robótica en la Agricultura 13

    2.2. Visión por Computador 15 2.3. Conclusión 16

    3 Técnicas de Reconocimiento de Imágenes 18 3.1. Características de Haar 18

    3.1.1. Imagen Integral 20 3.1.2. Adaboost 21

    3.1.3. Método de la Ventana Deslizante 28 3.1.4. Cascada de Clasificadores 30 3.1.5. Detalles de Implementación 32 3.2. LBP 33

    4 Diseño Hardware 39 4.1. Introducción 39

    4.2. Raspberry Pi 39 4.3. Cámaras 41

    4.4. Chasis 42

    4.5. Controlador de Motores 42

    4.6. Zumbador 43

    4.7. Baterías 43

    5 Diseño Software 44 5.1. Introducción 44 5.2. Características de Haar 44 5.3. Python 44

    https://es.wikipedia.org/wiki/Raspbian

  • xv

    5.4. Reconocimiento Automático de Malas Hierbas 45 5.4.1. Introducción 45 5.4.2. Característiscas de Haar 45 5.1.2.1. Imágenes Positivas 45 5.1.2.2. Imágenes Negativas 46 5.1.2.3. Entrenamiento 48 5.1.2.4. Conclusiones 52 5.4.3. LBP 53

    6 Sistema de Seguimiento 57

    7 Alarmas 64

    8 Experimentos 65 8.1. Introducción 65

    8.2. Sistema de Seguimiento 65 8.3. Sistema de Reconocimiento 65 8.4. Sistema Completo 66

    9 Conclusiones 67 9.1. Problemas 67

    9.2. Futuros Desarrollos 67

    9.3. Conclusión 67

    Bibliografía 69

  • xvi

    ÍNDICE DE TABLAS

    4.1 Diferencias entre Haar y LBP 38

    5.1 Diferencia entre clasificadores con y sin imágenes de Cenizo Tornasol como negativas 47

    5.2 Diferencia entre clasificadores modificando el número de imágenes negativas y positivas 50

    5.3 Diferencia entre clasificadores modificando el número de etapas 51

    5.4 Diferencia de resultados entre Haar y LBP 55

  • xvii

    ÍNDICE DE FIGURAS

    3.1 Filtros de Haar 18

    3.2 Imagen Digital 18

    3.3 Interpretación filtros de Haar 19

    3.4 Diferentes escalas filtros de Haar 19

    3.5 Aplicación imagen integral 20

    3.6 Ecuación de la intensidad de un píxel en la imagen integral 20

    3.7 Descripción del cálculo del valor de un píxel en la imagen integral 20

    3.8 Ejemplo de un conjunto de características 21

    3.9 Primer clasificador 21

    3.10 Nuevo peso de las muestras 22

    3.11 Segundo clasificador 22

    3.12 Nuevo peso de las muestras 22

    3.13 Tercer clasificador 22

    3.14 Combinación de clasificadores 23

    3.15 Árbol de decisión binario 23

    3.16 Resultado del árbol de decisión 23

    3.17 Árbol de decisión binario 23

    3.18 Resultado del árbol de decisión inversa 23

    3.19 Parámetro alfa 24

    3.20 Resultado si α=1 24

    3.21 Resultado si α=-1 24

    3.22 Muestras extraidas de los filtros de Haar y ordenadas en función de f(x) 24

    3.23 Umbral para θ=50 25

    3.24 Ejemplos mal clasificados 25

  • xviii

    3.25 Umbral para θ=50 25

    3.26 Umbral para θ=40 26

    3.27 Resultado de aplicar muchos filtros de Haar 26

    3.28 Actualización del peso relativo 26

    3.29 Ejemplo clasificador débil 27

    3.30 Actualización peso relativo 27

    3.31 Resultado de la clasificación 27

    3.32 Desplazamientos ventana deslizante 28

    3.33 Ventanas donde se encuentra el objetivo 29

    3.34 Tamaño de la ventana canónica 29

    3.35 Diferentes tamaños del objetivo 30

    3.36 Todas las posibles ventanas 30

    3.37 Cascada de clasificadores 30

    3.38 Frontera de decisión para un conjunto de muestras 31

    3.39 Factor de margen ‘s’ 31

    3.40 Nuevo clasificador aumentando las características de Haar 32

    3.41 Ecuación de normalización de las imágenes 33

    3.42 Ejemplo para el cálculo del código LBP 33

    3.43 Resultado para la comparación de los píxeles 34

    3.44 Resultado del código LBP para el píxel central 34

    3.45 Resultado del código LBP en un píxel 34

    3.46 LBP invariante ante nieles de gris 35

    3.47 LBP invariante ante traslación 35

    3.48 Vecindad circular 35

    3.49 Histograma LBP 36

    3.50 Reconocimientos indeseados en LBP 36

    3.51 Histograma de cada bloque 37

    3.52 Diferencias en los histrogramas de los bloques en cada imagen 37

    3.53 Adicción de bloques para el cálculo del histograma 38

    4.1 Esquema conexionado 39

    4.2 Esquema de pines Raspberry Pi 3 model b 40

    4.3 Chasis del vehículo 42

    4.4 Partes del módulo L298N 44

    5.1 Muestras enmarcadas para realizar el entrenamiento 46

    5.2 Resultado de un clasificador realizado para Cenizo Blanco aplicado a Cenizo Tornasol en el que no se

    han introducido imágenes de Cenizo Tornasol como negativas 47

    5.3 Resultado de otro clasificador con las mismas características pero donde sí se han introducido imágenes

    de Cenizo Tornasol como negativas 47

    5.4 50 positivas-100 negativas 48

    5.5 100 positivas-200 negativas 48

  • xix

    5.6 300 positivas-600 negativas 49

    5.7 500 positivas-1000 negativas 49

    5.8 700 positivas-1400 negativas 49

    5.9 Clasificador con 10 etapas 51

    5.10 Clasificador con 20 etapas 51

    5.11 Prueba 1 53

    5.12 Prueba 2 54

    5.13 Prueba 3 54

    5.14 Prueba 4 55

    6.1 Imagen tomada por la cámara encargada del seguimiento 57

    6.2 Resultado de aplicar la máscara 58

    6.3 Máscara con ruido 58

    6.4 Máscara tras realizarle operaciones morfológicas 59

    6.5 Ecuación para el cálculo de los momentos 59

    6.6 Ecuación punto central 59

    6.7 a) Imagen capturada por la cámara b) Imagen tras aplicar la máscara 60

    6.8 Desglose del tamaño de la imagen 61

    6.9 Recta de velocidad para el motor izquierdo 62

    6.10 Recta de velocidad para el motor derecho 62

    6.11 Reconocimiento del pie 63

  • xx

    Notación

    DC

    DPI

    GHz

    GND

    I+D

    IMU

    LBP

    Mm

    mA

    ms

    PWM

    RFID

    RGB

    TFG

    TIC

    v

    Corriente Continua

    Puntos Por Pulgada

    Gigahercio

    Tierra

    Investigación y Desarrollo

    Unidad de Medición Inercial

    Local Binary Patterns (Patrón Binario Local)

    Milímetros

    Miliamperios

    Milisegundos

    Modulación por Ancho de Pulsos

    Identificación por Radio Frecuencia

    Rojo,Verde y Azul

    Trabajo Fin de Grado

    Tecnologías de la Información y Comunicaciones

    Voltios

    Sumatorio

    Pertenece

  • xxi

    Conceptos

    Compilador

    GNU/Linux

    Hardware

    IDLE

    Lenguaje

    interpretado

    Pines GPIO

    Proceso

    Software

    Software Libre

    Transductor

    Electroacústico

    Coma Flotante

    Wavelet de Haar

    Programa informático que traduce un programa que ha sido escrito en un lenguaje de

    programación a un lenguaje común.

    También conocido como Linux, es un sistema operativo libre tipo Unix;

    multiplataforma, multiusuario y multitarea.

    Partes físicas tangibles de un sistema informático.

    Entorno de desarrollo que permite editar y ejecutar los programas.

    Es un lenguaje de programación para el que la mayoría de sus implementaciones

    ejecuta las instrucciones directamente, sin una previa compilación del programa a

    instrucciones en lenguaje máquina.

    Pines genéricos, cuyo comportamiento, incluyendo si es un pin de entrada o salida, se

    puede controlar por el usuario en tiempo de ejecución.

    Unidad de actividad que se caracteriza por la ejecución de una secuencia de

    instrucciones, un estado actual, y un conjunto de recursos del sistema asociado.

    Soporte lógico de un sistema informático, que comprende el conjunto de los

    componentes lógicos necesarios que hacen posible la realización de tareas específicas.

    Se refiere al conjunto de software que por elección manifiesta de su autor, puede ser

    copiado, estudiado, modificado, utilizado libremente con cualquier fin y redistribuido

    con o sin cambios o mejoras.

    Aquel dispositivo que transforma la electricidad en sonido, o viceversa.

    Es una forma de notación científica usada en los microprocesadores con la cual se

    pueden representar números racionales extremadamente grandes y pequeños de una

    manera muy eficiente y compacta, y con la que se pueden realizar operaciones

    aritméticas.

    Secuencia de funciones matemáticas.

    https://es.wikipedia.org/wiki/Software_librehttps://es.wikipedia.org/wiki/Programa_inform%C3%A1ticohttps://es.wikipedia.org/wiki/Proceso_de_traducci%C3%B3n_de_programashttps://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3nhttps://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3nhttps://es.wikipedia.org/wiki/Sistema_inform%C3%A1ticohttps://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3nhttps://es.wikipedia.org/wiki/Compiladorhttps://es.wikipedia.org/wiki/C%C3%B3digo_de_m%C3%A1quinahttps://es.wikipedia.org/wiki/Sistema_l%C3%B3gicohttps://es.wikipedia.org/wiki/Sistema_inform%C3%A1ticohttps://es.wikipedia.org/wiki/Softwarehttps://es.wikipedia.org/wiki/Electricidadhttps://es.wikipedia.org/wiki/Sonido

  • 11

  • 11

    Capítulo 1

    Introducción

    1.1. Antecedentes

    Uno de los mayores sectores a automatizar es el campo. La invención del tractor ya supuso un hecho muy

    importante en la reducción de mano de obra y tiempo invertido por las cuadrillas de trabajadores que tenían

    que sembrar y recolectar a mano decenas de hectáreas a lo largo de cada temporada de siembra durante el año.

    A día de hoy, el trabajo en el campo sigue siendo muy manual aunque cada vez podemos ver la introducción

    de más maquinaria para ahorrar tiempo y esfuerzo a los agricultores y jornaleros. Un ejemplo es la cada vez

    más usual cosechadora de aceitunas con la que se tarda en recolectar un olivo con una sola persona menos de

    un minuto a diferencia de cuando nuestros abuelos tardaban más de 10 minutos y trabajaban 5 jornaleros

    juntos al mismo tiempo en el mismo olivo.

    Un trabajo que sigue siendo muy manual es quitar las malas hierbas al algodón. Es necesario recorrer todas las

    hectáreas del terreno cultivado andando una vez el algodón ha empezado a crecer para quitar las plantas o

    hierbas que no lo sean para que no le quite los nutrientes de la tierra a la planta que realmente interesa al

    agricultor, que en este caso es el algodón. Dependiendo de la altura a la que esté el algodón la cuadrilla se

    suele coger entre 3 y 5 surcos de algodón para cada uno de los jornaleros. Como a veces es difícil tener

    controlado tantos surcos andando a un ritmo alto o debido a que la altura del algodón dificulta la visión del

    terreno, a los jornaleros se les pueden quedar algunas malas hierbas sin quitar. Este hecho da como resultado

    una mala estética del terreno cultivado de algodón porque aunque el jornalero no haya sido capaz de reconocer

    esta mala hierba, es posible que resalte desde lejos y la confianza en las personas encargadas de quitar estas

    plantas disminuya. En esta idea de basa este trabajo.

    1.2. Motivación

    Durante los últimos veranos he estado trabajando quitando estas malas hierbas en el algodón para la empresa

    para la que trabaja mi padre. Sin tener ninguna experiencia anterior en este asunto, es complicado reconocer

    todas las plantas por diferentes motivos como puede ser la velocidad que se debe llevar para poder recorrer las

    hectáreas cultivadas en un plazo aceptable o que muchas de estas plantas son muy parecidas al algodón, como

    el Xanthium strumarium conocido vulgarmente como caíllo o cadillo que en ciertas condiciones es muy difícil

    reconocer y hay que tener cierta experiencia para reconocerlo sin problemas. Debido a que estoy cursando el Grado de Ingeniería Electrónica, Robótica y Mecatrónica en la especialidad de

    Robótica y Automática quería realizar un proyecto relacionado a la robótica. Llevaba algunos años queriendo

    aprender a usar Raspberry Pi porque después de aprender a usar Arduino y conocer sus limitaciones, quería

    dar un paso hacia adelante a otra plataforma que te permita realizar proyectos más ambiciosos. Además

    siempre he sentido curiosidad acerca de la visión artificial porque no entendía como se podría adquirir,

    analizar y comprender las imágenes del mundo real para aplicarlo a lo que nos interese. Además de estos dos

    aspectos enunciados, durante los meses que estuve trabajando en el algodón estuve pensando qué podría hacer

    para sustituir este trabajo humano por robots. Entonces, juntando el hecho de que quería aprender acerca de

    Raspberry Pi y Visión Artificial y que un proyecto que quería realizar es lo anteriormente expuesto acerca de

    quitar estas malas hierbas dio como resultado este trabajo de TFG.

  • 12

    1.3. Objetivos

    El objetivo es crear un sistema capaz de reconocer las plantas que no son algodón en plantaciones de algodón

    y avisar al jornalero para que la quite en caso de que no lo haya hecho dicha persona previamente. En un principio la idea principal del proyecto era crear un robot que fuera capaz de reconocer y eliminar de

    raíz estas plantas, pero tras analizarlo y concluir que el robot no iba a tener la suficiente fuerza, al menos con

    mis medios, para poder arrancarlas del suelo. Tras este análisis decidí que solo avisara de que había alguna

    mala hierba sin quitar en el caso de que hubiera alguna. Es muy importante que las malas hierbas se quiten

    también con la raíz, es decir, no se debería de cortar ya que si esto ocurre la planta va a continuar creciendo y

    al cabo de los días va a estar igual y mientras tanto va a continuar quitando nutrientes al algodón, que es la

    planta que nos interesa que crezca lo más rápido posible.

    1.4. Estructura del trabajo

    En cuanto a la estructura seguida, en primer lugar se va a realizar un estudio del estado del arte de la

    introducción de la robótica en la agricultura y de las técnicas de visión artificial usadas en la actualidad. Posteriormente, vamos a describir todo el software utilizado y por qué se han usado estos elementos.

    En el siguiente bloque vamos a explicar cómo hemos desarrollado el hardware, describiendo los métodos

    utilizados y analizando diferentes alternativas.

    Los últimos bloques estarán dedicados a la realización de experimentos, extraer conclusiones a partir de los

    resultados obtenidos y describir posibles mejoras o aplicaciones futuras.

  • 13

    Capítulo 2

    Estado del Arte

    2.1. La Robótica en la Agricultura La robótica aplicada a la agricultura se encuentra en un estado de desarrollo avanzado, con algunas

    realizaciones ya plenamente comerciales y otras validadas a nivel de prototipo [1]. La inminente

    necesidad de aumentar la producción sin aumentar los recursos y minimizando el impacto ambiental

    demanda dar el paso hacia la automatización de la agricultura donde la robótica agrícola tendrá un

    protagonismo destacado.

    Si bien las investigaciones aplicadas sobre los robots agrícolas comenzaron hace más de 25 años, ha sido

    recientemente cuando el desarrollo de diferentes ‘tecnologías facilitadoras’ asociadas a las TIC ha

    permitido un progreso sustancial en sus desarrollos, consiguiendo en los últimos años que, de acuerdo a

    los datos recogidos por la International Federation of Robotics [2], las aplicaciones de la robótica en

    agricultura y ganadería sean las segundas en número de ventas de robots de servicios profesionales, tras

    las aplicaciones en defensa y seguridad.

    ¿Qué razones pueden justificar esta destacada posición de la robótica agrícola? ¿Está justificada la robotización de la agricultura?

    La reciente Expo Milano 2015 tuvo por lema ‘Feeding the Planet, Energy for Life’ (Alimentar el planeta,

    energía para la vida). En ella se recordó de nuevo la necesidad de aumentar la producción agrícola en un

    60 o 70% antes del 2050 [3]. Sin embargo, los recursos naturales disponibles (suelo cultivable, agua,

    energía) se encuentran muy cerca de su límite. Por ello, se hace imprescindible, que a la vez que se

    aprovecha de la mejor manera posible lo producido, evitando su desperdicio, se mejore el rendimiento de los recursos, considerando éstos de manera integral.

    La mecanización de la agricultura en el siglo XIX y la introducción del motor de combustión en el siglo

    XX, permitieron un aumento singular de la producción agrícola [4], a pesar de la fuerte disminución de la

    mano de obra dedicada a la agricultura [5]. No obstante, este aumento de la producción se ha realizado con un notable derroche de los recursos, que no es sostenible en el tiempo.

    La denominada Agricultura de Precisión contribuye a optimizar el uso de los recursos. Se basa en utilizar

    el recurso adecuado en el lugar y momento preciso, evitando de este modo aplicar, por ejemplo, un riego

    o producto fitosanitario en una dosis excesiva o en un lugar innecesario. Para ello utiliza una metodología

    similar a la utilizada frecuentemente por los seres vivos y que, a su vez, inspira el funcionamiento de los

    sistemas automáticos de control industrial: Medir, Procesar la información y Actuar, reiterando este proceso de manera continua, para así conseguir que los resultados se acerquen a los objetivos.

    La eficacia de este modo de funcionamiento precisa conocer con detalle las necesidades de los cultivos y

    poder de manera adecuada. Estas funciones, que a pequeña escala pueden ser realizadas de manera

    manual, precisan de sistemas automáticos para poder ser realizadas a las escalas de producción que se

    demanda actualmente. Es aquí donde los robots agrícolas, entendidos como maquinaria con capacidad de

    desenvolverse en el entorno agrícola para capturar información o actuar sobre el terreno de manera autónoma o semiautónoma, encuentran su justificación.

    La robótica agrícola está, a día de hoy, en fase de prototipo avanzado pero aún no alcanza la madurez

    necesaria como para abordar su implantación real y extendida en el sector [6]. A continuación se revisan

    algunas de las tecnologías críticas en el desarrollo de la robótica agrícola:

    Sistemas de Navegación: Puesto que se trata medir o actuar sobre localizaciones precisas, la primera

  • 14

    necesidad a ser cubierta por un robot que se mueve en un entorno agrícola es la de navegación. Aquí es

    significativamente diferente la tecnología a utilizar en el caso de agricultura de interiores o exteriores.

    Así, en el caso de robots para invernadero, puede contemplarse desde el uso de robots que se desplazan

    por railes, facilitando enormemente su localización, hasta la inclusión de marcas o balizas en el entorno

    (ópticas, RFID, etc.), que pueden simplificar la tareas de localización del robot. Por el contrario, el uso de

    los sistemas de navegación por satélite, como el conocido GPS, es normalmente insuficiente para el

    sistema de navegación de los robots agrícolas de exteriores.

    En ambos casos la navegación del robot suele verse apoyada por sistemas de medida inercial (IMU) y por

    sistemas de telemetría que, con los correspondientes algoritmos, consiguen precisiones suficientes para el

    posicionamiento del robot. Toda esta tecnología está implantada en otros sectores y en fuerte proceso de

    mejora y crecimiento.

    Sistemas de Visión por Computador: La visión por computador 2D y 3D, tanto en espectro visible

    como en otros espectros, constituye un pilar fundamental en el uso de robots en agricultura, tanto para las

    tareas de captura de información que permite la toma de decisiones (estado vegetativo, necesidades

    hídricas o de nutrientes, presencia de plagas, etc.), como para ser usado como instrumento de ayuda al

    posicionamiento que permite ubicar la posición relativa entre el robot y el entorno sobre el que debe

    actuar (cosechado, localización de maleza, seguimiento de línea de cultivo, etc.). Las oclusiones entre los

    objetos sobre los que actuar, como por ejemplo frutos dentro de la masa foliar, la falta de homogeneidad y

    por ello difícil clasificación de los objetos presentes en la imagen y la variabilidad de las condiciones de

    iluminación, suponen una notable dificultad que limita aún las posibilidades de los robots tanto en

    exteriores como en interiores.

    Plataformas: Mientras que en el caso de robots de interiores las plataformas que transportan y posicionan

    los sistemas de medida o actuación son similares a las utilizadas en otras aplicaciones (transporte en

    almacén, vigilancia etc.) en el caso de robots de exteriores, las características del terreno suponen un

    factor a considerar. Muchos de los sistemas robóticos para ser aplicados en agricultura de exteriores se

    han basado en la ‘robotización’ de determinada maquinaria agrícola, incorporando los sensores necesarios

    para su navegación autónoma (los ya citados GPS, IMU, telemetría, etc.). Sin embargo, la tendencia

    actual apunta al desarrollo de ‘pequeños’ robots agrícolas, más flexibles en cuanto a su cometido, con

    mejor capacidad de maniobra, robustez colectiva ante averías (el conjunto puede seguir operando aun si

    uno de ellos se detiene) y con un menor impacto en la compactación de terreno. Asimismo el trabajo en

    cultivos de difícil accesibilidad es mejor abordarlo con pequeños robots mejor que con máquina de medio

    o gran tamaño.

    Sistemas de Manipulación: La manipulación, generalmente asociada al cosechado, tanto en invernadero,

    como en frutales, supone uno de los retos más complejos por resolver, pues hay que combinar un agarre

    estable sobre objetos de geometría variable, con una adecuada velocidad que haga eficiente la

    automatización del proceso. Los avances que se están haciendo en el desarrollo de ‘soft robotics’ abren

    una nueva vía al considerar el uso de garras deformables de material no rígido, que pueden abrazar de

    manera delicada y firme a la vez frutos de diferentes formas. En todo caso este sigue siendo un tema

    abierto a la I+D.

    Seguridad: Los espacios de trabajo donde los robots agrícolas actuales deben trabajar, son compartidos

    por operarios y en algunos casos por animales. Además el entorno no está exento de obstáculos, en

    ocasiones ocultos, que ponen en riesgo al robot. Por ello es preciso incorporar en el robot sistemas que

    detecten los riesgos (presencia de objetos estáticos o móviles) y los minimicen. Este objetivo es

    plenamente compartido por la robótica industrial actual, en la que se ha pasado de compartimentar los

    espacios de trabajo de operarios y máquinas a trabajar de manera simultánea y colaborativa sobre las

    mismas piezas, recurriendo para ello a la captación e interpretación del entorno mediante sensores de

    visión, fuerza y distancia y a algoritmos que reaccionan de manera rápida ante un contacto.

    Al ser la robótica agrícola una tecnología todavía en desarrollo, pueden considerarse multitud de aplicaciones

    potenciales. Sin embargo, hay algunas que, habiendo alcanzado un mayor grado de madurez, pueden ser

    descritas de una manera tangible y realista:

    Robótica aérea: Los robots aéreos, conocidos popularmente Drones, ha experimentado una enorme evolución

  • 15

    en los últimos años y se ha permitido su incorporación de manera intensa de esta tecnología en la agricultura.

    Son varias las tareas que la robótica aérea puede realizar en este sector, pero su mayor uso se dedica a

    operaciones de captura de información. Para ello, se incorpora a la plataforma aérea instrumentos de captura

    de información, en la mayor parte de los casos consistentes en cámaras en diferentes espectros, pero también

    puede considerarse la utilización de sensores de parámetros ambientales como humedad, temperatura,

    concentración de gases, etc.

    Los robots, sobrevuelan la zona a explorar a la vez que capturan la información que, una vez procesada,

    permite conocer las necesidades de nutrientes de una sola planta, el estado de irrigación del cultivo, la

    presencia de malas hierbas, cómo detectar fugas en el sistema de riego o estimar las dimensiones de los

    cultivos leñosos. El uso de robots aéreos para estas tareas, que alternativamente podrían ser realizadas por

    vuelos tripulados o por imágenes de satélite, presenta frente a estas opciones las ventajas de la gran

    disponibilidad temporal, la disminución de costes, el vuelo a baja altura y por ello gran resolución y la

    posibilidad de tomar datos tanto sobre grandes áreas, como sobre zonas específicas, si así se precisa. Otra

    área en la que la inmediatez y resolución que aportan los robots aéreos en la captura de información desde

    el aire es ventajosa es en la evaluación de daños tras desastre, para hacer la correcta tasación de los seguros de riesgo.

    Por otro lado, es posible utilizar estos robots aéreos para tareas de fumigación a baja altura, lo que de

    nuevo aporta las ventajas de la precisión y la focalización del tratamiento.

    Robots terrestres: Los Vehículos Terrestres Autónomos (UGV) llevan aplicándose a la agricultura desde

    los años 90, basándose mayoritariamente en la ‘robotización’ de maquinaria agrícola convencional,

    abordando tareas de laboreo, fumigación y cosechado. Las nuevas tendencias apuntan a flotas de

    pequeños tractores robotizados o robots específicos que, adecuadamente coordinadas, pueden trabajar de

    manera ininterrumpida con mayor eficacia y robustez. Para ello, junto a los problemas de navegación,

    locomoción y otros ya comentados, se deben incorporar técnicas de comunicaciones y cooperación, que

    permitan pasar de un agregado de robots trabajando sobre el mismo espacio a un equipo bien integrado de

    robots (enjambres). Los principales fabricantes de maquinaria agrícola tienen prototipos en este sentido,

    pudiendo estar cerca su comercialización.

    2.2. Visión por Computador La visión por computador o visión artificial es el conjunto de herramientas y métodos que permiten obtener,

    procesar y analizar imágenes del mundo real con la finalidad de que puedan ser tratadas por un ordenador.

    Esto permite automatizar una amplia gama de tareas al aportar a las máquinas la información que necesitan

    para la toma de decisiones correctas en cada una de las tareas en las que han sido asignadas [7].

    Una de las ventajas que se obtienen del aprendizaje automático es que consigue llevar a cabo la distinción de

    forma automática de los patrones haciendo uso de algoritmos matemáticos. Este tipo de técnicas se usan para

    la clasificación de las imágenes o de la toma de decisiones y, a grandes rasgos, se pueden dividir en dos tipos

    principales, que son las supervisadas y las que no están supervisadas.

    Aprendizaje supervisado: En este caso, se trata de un tipo de aprendizaje que permite al ordenador aprender mediante los patrones

    que le han sido proporcionados de forma previa. Esto se lleva a cabo ofreciéndole a la

    computadora patrones que han sido previamente etiquetados, es decir, se le ofrece información que puede

    interpretar por sí mismo.

    Aprendizaje no supervisado: Por el contrario, en el caso del aprendizaje no supervisado, lo que se lleva a cabo es un entrenamiento de

    la computadora mediante patrones que no han sido etiquetados ni clasificados con anterioridad. Lo que

    implica un mayor esfuerzo, pero permite al ordenador identificar los patrones por sí mismo en el futuro.

    Las principales funciones de la Visión Artificial son:

  • 16

    Detección de objetos: Estos aprendizajes permite la detección de objetos ya que, cuando el ordenador recibe la información

    visual, puede relacionarla con los patrones aprendidos con anterioridad y, de esta forma, identificar los

    objetos y diferenciarlos.

    Análisis de vídeo: Así mismo, al tener la capacidad de identificar cada uno de los objetos, esta capacidad se puede utilizar

    para llevar a cabo un análisis de vídeo. Esto es especialmente útil a la hora de aplicarlo en estrategias de

    seguridad y control, como la identificación de patrones concretos y búsqueda de los mismos dentro de un

    sistema de video.

    Los sistemas de visión 3D artifical se ocupan de proporcionar a un ordenador un sistema que funciona de

    manera similar a como lo haría la visión humana pero en un proceso digitalizado. De hecho, estos sistemas

    pueden imitar la visión humana mediante la creación de un modelo tridimensional, ya se trate de un objeto

    aislado o de una escena que se muestra de manera conjunta.

    Aplicaciones de la visión artificial

    Automoción: En el sector de la automoción el uso de sistemas de visión artificial industrial se corresponde

    principalmente con las inspecciones en la fabricación y el ensamblaje de todas las piezas de los vehículos.

    Además, hay que tener en cuenta que tareas como la inspección de estampación, mecanizado, pintura y

    rebabas dependen directamente de equipos de visión artificial que supervisan todo el proceso.

    Alimentación: La visión artificial industrial es un elemento fundamental en el control de calidad de los productos

    alimenticios, especialmente en las fases finales. Tanto la selección de frutas como el correcto cierre de las

    latas de conserva, o la elaboración de productos cárnicos procesados, dependen directamente de sistemas

    de visión artificial que supervisan el desarrollo en todas sus fases.

    Envases y embalajes: Las tareas más habituales que lleva a cabo la visión artificial en el packaging están referidas a los trabajos

    de inspección de presencia o ausencia de marcadores.

    Electrónica: El sector de la electrónica es uno de los que más se beneficia del uso de la visión artificial industrial en

    sus procesos de fabricación. La manipulación e identificación de los distintos componentes corren a su

    cuenta. La visión artificial tiene la capacidad de comprobar de forma eficiente la correcta soldadura y

    ensamblaje de piezas.

    Logística e identificación: Todas las industrias requieren de procesos de logística e identificación de cada una de las partes y

    productos implicados en su trabajo.

    2.3. Conclusión La aplicación de la robótica a la agricultura es una tecnología que ha alcanzado un grado de madurez cercano a

    la comercialización, siendo en gran medida condicionantes de precio los que limitan su aplicación frecuente.

    Algunos tipos de robots, como es el caso de los aéreos, impulsados por su empleo en otros sectores, son en la

    actualidad plenamente operativos para tareas como la adquisición precisa, local e instantánea de información

    muy valiosa para mejorar la eficiencia del ciclo productivo agrícola. Dentro de invernaderos, o plantaciones

    con cierto grado de estructuración, los robots pueden desarrollar con seguridad tareas de medida y actuación a

    nivel de planta. En agricultura abierta la menor estructuración del entorno dificulta el uso de robots autónomos,

    pero, aun así, existen sistemas eficaces. Frente o además del uso de grandes máquinas agrícolas robotizadas, la

  • 17

    tendencia de futuro puede estar orientada a pequeños robots, versátiles y con capacidad de colaboración que se

    repartan de manera autónoma las tareas a realizar.

    Al ser aún un mercado que se está empezando a expandir, muy necesario para la humanidad porque la

    agricultura nos provee de un elevado porcentaje de toda la alimentación mundial y además debido a que es

    muy diverso y por lo tanto hay muchos tipos de aplicaciones, es una muy buena oportunidad de invertir en el

    desarrollo de la robótica en este sector.

  • 18

    Capítulo 3

    Técnicas de Reconocimiento de Imágenes

    3.1. Características de Haar

    Las características de Haar son características de imagen digital utilizadas en el reconocimiento de objetos.

    Deben su nombre a su similitud intuitiva con wavelet de Haar y se usaron en el primer detector facial en

    tiempo real [8].

    Históricamente, trabajar únicamente con intensidades de imagen, es decir, los valores de píxel RGB en

    cada píxel de imagen, hacía que la tarea de cálculo de características fuera costosa desde el punto de vista

    de la computación. Una publicación de Papageorgiou [9] discutió el trabajo con un conjunto de

    características alternativas basado en Haar wavelets en lugar de las intensidades de imagen habituales.

    Viola y Jones adaptaron la idea de usar Haar wavelets y desarrollaron las llamadas ‘características de

    Haar’ [10]. Las características de Haar se obtienen como resultado de aplicar por toda la imagen un

    conjunto de filtros de Haar [11].

    Como podemos observar un filtro de Haar es una combinacion de varios rectángulos (entre 2 y 4) que son

    adyacentes en la dirección horizontal o vertical. Los rectángulos en negro representan zonas con una

    contribución positiva al filtro mientras que los rectangulos en blancos representan zonas con una

    contribución negativa al filtro.

    Figura 3.1: Filtros de Haar

    Así que aplicando estos filtros en una imagen, el resultado final va a ser la diferencia entre la suma de

    intensidad de todos los píxeles que están situados en el rectángulo negro menos la suma de intensidad de todos

    los píxeles que están situados en el rectángulo blanco:

    ∑ 𝐼(𝑥, 𝑦)

    (𝑥,𝑦) ∊ 𝑁𝑒𝑔𝑟𝑜

    − ∑ 𝐼(𝑥, 𝑦)

    (𝑥,𝑦) ∊ 𝐵𝑙𝑎𝑛𝑐𝑜

    Para esta imagen digital:

    Figura 3.2: Imagen digital

  • 19

    Obtenemos ∑ 𝐼(𝑥, 𝑦)(𝑥,𝑦) ∊ 𝑁𝑒𝑔𝑟𝑜 − ∑ 𝐼(𝑥, 𝑦)(𝑥,𝑦) ∊ 𝐵𝑙𝑎𝑛𝑐𝑜 = 900-300=600.

    Este valor puede ser necesario normalizarlo por el tamaño de la ventana del filtro para conseguir que los

    valores sean invariantes al cambio del tamaño de los objetos y también para que características aplicadas a

    diferentes escalas en toda la imagen tengan valores comparables. Igualmente puede ser necesario normalizar la

    imagen para conseguir también invarianza ante cambios de iluminación.

    Aplicando los filtros de Haar podemos obtener los siguientes resultados:

    Figura 3.3: Interpretación filtros de Haar

    La respuesta de los filtros se concentra principalmente en las zonas donde existe un mayor contorno. De

    hecho, el cálculo que realizan los filtros de Haar es bastante similar al cálculo del gradiente. Las características

    de Haar no se concentran únicamente en el contorno, sino que también nos permitirá detectar otros cambios de

    intensidad que se producen en la imagen.

    Cada uno de los filtros básicos se va a aplicar en la imagen en todas las posibles escalas tanto en la dirección

    horizontal como en la vertical como se muestra en las siguientes imágenes:

    a) b) c) d)

    Figura 3.4: Diferentes escalas filtros de Haar

    Cada uno de estos filtros recorre la imagen entera y el resultado de aplicar cada filtro en cada escala y posición

    es una característica de Haar. De esta forma, la descripción global de la imagen es la concatenación de todas

    estas características.

    En una imagen de 24x24 píxeles podemos obtener 162336 características.

  • 20

    3.1.1. Imagen Integral

    El número de características que se pueden obtener en una imagen es muy elevado. Con el concepto de imagen

    integral, podemos calcular cada una de estas características de forma muy eficiente por lo que el tan elevado

    número de características va a dejar de ser un problema.

    La imagen integral es una transformación de la imagen original que nos va a dar como resultado una nueva

    imagen, del mismo tamaño en el que el valor de cada píxel va a ser la suma de todos los píxeles situados a la

    izquierda y arriba en la imagen original [12].

    Para un píxel de coordenadas (x,y) el valor del mismo píxel en la imagen integral va a ser la suma de los

    valores de todos los píxeles que se encuentran en el recuadro gris:

    Figura 3.5: Aplicación Imagen Integral

    Es una transformación muy simple pero nos va a permitir calcular rápidamente la suma de todos los píxeles de

    cualquier rectángulo en la imagen, que es la base del cálculo de las características de Haar. Podemos calcular

    el valor de cualquier píxel en la imagen integral a partir de esta expresión:

    Figura 3.6: Ecuación de la intensidad de un píxel en la imagen integral

    Donde vemos que el valor depende del valor del píxel situado una posición por encima que es el valor de

    II(x,y-1), es decir, el valor de dicho píxel nos va a dar la suma de todo el rectángulo situado arriba y a la

    izquierda de él. También hay que sumarle la acumulación de píxeles situados a la izquierda del píxel, es decir,

    el valor de s(x,y):

    Figura 3.7: Descripción del cálculo del valor de un píxel en la imagen integral

  • 21

    Como ya hemos comentado, la gran ventaja del uso de la imagen integral, es que nos va a permitir calcular de

    una forma rápida la suma de intensidades de cualquier rectángulo de la imagen independientemente del

    tamaño debido a que al aplicar los filtros de Haar a la imagen no hay que ir sumando el valor de los píxeles

    uno a uno, sino que cogiendo el valor de un solo píxel en la imagen integral ya podemos saber el valor de todo

    el rectángulo que encierra.

    3.1.2. Adaboost

    Hemos generado un conjunto muy elevado de características de Haar pero no todas son válidas. Para ello se

    necesita de un método muy eficiente para tratar con este número tan elevado de características y acabar

    obteniendo un clasificador muy robusto que utilice únicamente un subconjunto de estas características y el

    método idóneo es Adaboost [13].

    Adaboost es una combinación de clasificadores muy simples. El rendimiento individual de cada uno de estos

    clasificadores no va a ser muy elevado, de hecho, es ligeramente superior al de una clasificación aleatoria, sin

    embargo, la forma que tiene Adaboost de aprender y combinar estos clasificadores nos va a acabar dando un

    clasificador global que minimizará el error de clasificación y con buena capacidad de generalización.

    Cada clasificador simple se aprende dando un peso diferente a cada ejemplo. Se da un peso mayor a los

    ejemplos mal clasificados y un peso menor a los ejemplos bien clasificados por los clasificadores previos; así

    para cada nuevo clasificador que se va a aprender, se va a incrementar el peso de aquello ejemplos que se han

    clasificado mal en los clasificadores anteriores mientras que se va a disminuir el peso de los ejemplos bien

    clasificados. De esta forma vamos a ir forzando a los clasificadores simples a centrarse en aquellos ejemplos

    que no hemos sido capaces de clasificar en los pasos anteriores.

    Suponiendo que tenemos este conjunto de características:

    Figura 3.8: Ejemplo de un conjunto de características

    Otros tipos de clasificadores intentarían encontrar una línea que separe las características positivas de las

    negativas, aunque vemos que en este caso es imposible. Adaboost lo hace de una forma distinta. Suponiendo

    que tenemos clasificadores simples que se basan en una única característica y que por lo tanto podemos

    aprender un clasificador simple donde a partir de un determinado valor, las muestras que tienen un umbral

    mayor las clasificamos como negativas y las de un umbral menor, como positivas.

    Figura 4.9: Primer clasificador

    Podemos ver que hay varias positivas que han quedado mal clasificadas. Cuando aprendemos un nuevo

    clasificador, a estos ejemplos que han quedado mal clasificados Adaboost les da un peso mayor mientras que

  • 22

    al resto le ha disminuido el peso.

    Figura 3.10: Nuevo peso de las muestras

    De esta forma cuando aprendemos este segundo clasificador simple la frontera de decisión va a quedar

    condicionada por estos ejemplos que tienen mayor peso.

    Figura 3.11: Segundo clasificador

    Igualmente vemos que han quedado ejemplos mal clasificados y en el tercer clasificador estos ejemplos

    vuelven a tener un mayor peso.

    Figura 3.12: Nuevo peso de las muestras

    Así que este tercer clasificador vuelve a centrarse en estos ejemplos y vuelve a poner la frontera condicionada

    a éstos.

    Figura 3.13: Tercer clasificador

    Finalmente, todos los clasificadores simples se combinan en un único clasificador global y al combinar las

  • 23

    diferentes fronteras de decisión aplicadas en los anteriores clasificadores, nos crea una nueva frontera donde

    separa los ejemplos en los que la mayoría de los anteriores clasificadores nos han dado una clasificación

    positiva a diferencia de donde la mayoría de los anteriores clasificadores nos han dado una clasificación

    negativa.

    Figura 3.14: Combinación de clasificadores

    Pero, ¿Cómo decide un clasificador simple si un ejemplo es negativo o positivo? En la terminología de

    Adaboost, un clasificador simple se denomina como clasificador débil y puede tomar diferentes formas.

    Un árbol de decisión binario calcula una función de características para cada imagen de entrada y también fija

    un umbral θ que permite distinguir los ejemplos positivos de los negativos. Esto nos da como resultado el

    clasificador que vimos antes. La función f(x) es el resultado de evaluar un filtro de Haar en una posición de la

    imagen y escala determinada.

    Figura 3.15: Árbol de decisión binario Figura 3.16: Resultado del árbol de decisión

    La función f(x) es el resultado de evaluar solo un filtro de Haar en una posición de la imagen y escala

    determinada.

    Sin embargo, hay que tener en cuenta que la función de decisión óptima puede ser la inversa, es decir, valores

    menores que este umbral.

    Figura 3.17: Árbol de decisión binario Figura 3.18: Resultado del árbol de decisión inversa

    Para distinguir estas dos situaciones en la formulación del clasificador débil se introduce un parámetro alfa que

    nos va a permitir distinguir en qué situación nos encontramos.

  • 24

    Figura 3.19: Parámetro alfa

    Si alfa es igual a 1 nos encontramos en la situación que muestra la figura 3.20:

    Figura 3.20: Resultado si α=1

    Y si alfa es igual a -1 nos encontramos en esta otra.

    Figura 3.21: Resultado si α=-1

    Con esta formulación de un clasificador débil, fijada una característica de Haar, los parámetros que nos

    determinan el clasificador son dos: el umbral θ y el signo de la decisión α. Para fijarlos, Adaboost examina de

    forma exhaustiva todos los valores posibles del umbral para acabar seleccionando aquel que tenga un error de

    clasificación mínimo.

    En un conjunto de muestras a clasificar, cada muestra tiene asociado un peso relativo que va a ser mayor para

    ejemplos mal clasificados en los clasificadores anteriores. Para encontrar el umbral óptimo de forma eficiente,

    lo que se hace es ordenar las muestras a entrenar en función del valor de la característica de Haar que estamos

    utilizando para ese clasificador, es decir, en función de f(x). Una vez tenemos las muestras ordenadas,

    podemos ir evaluando fácilmente todos los posibles valores del umbral, calcular el error de clasificación para

    cada uno de ellos y acabar seleccionando el umbral que tenga un error mínimo.

    Figura 3.22: Muestras extraídas de los filtros de Haar y ordenadas en función de f(x)

  • 25

    En este ejemplo de la figura 3.23, el primer umbral que podemos evaluar sería el de θ=50 que nos fijaría esta

    frontera de decisión.

    Figura 3.23: Umbral para θ=50

    En la figura 3.24 podemos ver que algunos ejemplos han quedado mal clasificados:

    Figura 3.24: Ejemplos mal clasificados

    A partir de estos ejemplos podemos calcular el error de clasificación sumando el peso relativo (ponderación)

    de cada uno de estos ejemplos mal clasificados dividido entre el número total de ejemplos. En este caso, el

    error de clasificación sería de 0,42. Así podemos ir evaluando todos los posibles umbrales moviendo la

    frontera de decisión.

    En este segundo caso el umbral sería de θ=44 y el error de clasificación 0,375.

    Figura 3.25: Umbral para θ=50

    Si continuamos moviendo el umbral hasta acabar evaluando todos los umbrales posibles, el caso que menor

    error es para θ=44 con un error de 0,33 que fija esta frontera de decisión:

  • 26

    Figura 3.26: Umbral para θ=40

    Este resultado es para el caso de tomar solo un filtro de Haar, sin embargo Adaboost utiliza muchas

    características de Haar, no solo uno y también selecciona aquellas características calculadas que son más

    relevantes por lo tanto en cada iteración del proceso de aprendizaje vamos a entrenar un clasificador débil

    diferente para cada una de las características de Haar. Cada característica va a ser la base para entrenar un

    clasificador débil. Cada uno de estos clasificadores débiles se entrenará igual que se explicó anteriormente, es

    decir, ordenando las muestras en función del valor de la característica y selecciona el umbral que menor error

    nos da. De esta forma, cada característica nos da un clasificador diferente y cada uno con un error diferente.

    Aquí podemos observar un ejemplo para el caso de reconocimiento de caras:

    Figura 3.27: Resultado de aplicar muchos filtros de Haar

    Al final como resultado de esta iteración concreta del proceso de aprendizaje, nos quedamos con aquel

    clasificador débil asociado a la característica que tenga un error mínimo de clasificación. Así que a la vez que

    aprendemos los parámetros de un nuevo clasificador débil también estamos seleccionando una única

    característica de Haar de entre las muchas que hay.

    Otro concepto clave de Adaboost es la actualización del peso relativo que se da a cada ejemplo después de

    aprender cada nuevo clasificador débil. Adaboost es un proceso iterativo y en cada iteración aprende un nuevo

    clasificador débil. En cada una de estas iteraciones el peso relativo de un ejemplo wi(t+1) se va a actualizar en

    función del peso relativo que tiene en la iteración anterior wi(t) y de un factor de actualización que dependerá

    del error de clasificación del último clasificador débil que hemos aprendido.

    Figura 3.28: Actualización del peso relativo

    Como suponemos que cada clasificador débil aprendido va a ser mejor aunque sea poco que un clasificador

    aleatorio, podemos suponer que el error de clasificación ∊t va a ser siempre menor que 0,5 y por lo tanto en los

  • 27

    casos en que los ejemplos han quedado mal clasificados, es decir, h(xi) ≠yi este factor de actualización 1

    2∊t va a

    ser mayor que 1; mientras que en los casos en los que los que los ejemplos están bien clasificados h(xi) =yi , el

    factor de actualización 1

    2(1−∊t) va a ser menor que 1.

    Suponemos que hemos aprendido este clasificador débil de la figura 3.29:

    Figura 3.29: Ejemplo clasificador débil

    Como podemos observar el error final es 0,33 con lo que el factor de actualización para las muestras mal

    clasificadas va a ser 1

    2∗0,33 = 1,5 y para las muestras que han quedado bien clasificadas será

    1

    2(1−0,33) = 0,75.

    Así podemos ver que en la siguiente iteración del proceso de aprendizaje, el peso de las muestras bien

    clasificadas ha disminuido por el factor 0,75 mientras que las muestras que habían sido mal clasificadas su

    peso ha aumentado por el factor 1,5:

    Figura 3.30: Actualización peso relativo

    Como ya se ha dicho, Adaboost es un proceso iterativo donde el número de iteraciones se fija al principio

    (variable ‘T’) y así en cada iteración aprende un clasificador débil en el que vamos a seleccionar la mejor

    característica de Haar y el mejor umbral posible en función del peso relativo de los ejemplos en esa iteración

    en concreto. Como resultado final vamos a tener un clasificador fuerte que se define como la suma de todos los

    clasificadores débiles que hemos aprendido al final del número total de iteraciones. El resultado de la

    clasificación es el signo de la suma de todos los clasificadores débiles de manera que si la suma es mayor que

    0 el ejemplo será positivo y si la suma es menor que 0 el ejemplo lo clasificamos como negativo.

    Figura 3.31: Resultado de la clasificación

    Podemos ver que no todos los clasificadores se combinan de la misma forma, sino que vamos a dar más

    importancia a los clasificadores débiles que han funcionado mejor, es decir, a los que tienen un menor error de

    clasificación.

    Los clasificadores débiles se combinan utilizando un factor de ponderación αt que es el resultado de esta

    ecuación: αt = 1

    2 log

    1−∊t

    ∊t . Cuando ∊t tiende a 0, el factor de ponderación αt tiende a infinito y sin embargo

    cuando ∊t tiende a 0.5, que es similar a un clasificador aleatorio, αt tiende a 0.

    En resumen, Adaboost crea un clasificador fuerte como una combinación de clasificadores muy simples que

  • 28

    únicamente requieren un umbral para una determinada característica de Haar. Al aprender cada clasificador

    débil hace una selección de las características de Haar y como el error del clasificador sirve para modificar el

    peso relativo de los ejemplos de entrenamiento para la siguiente iteración. De esta forma lo que conseguimos

    es entrenar un conjunto de clasificadores simples pero con una gran variedad entre ellos de manera que cuando

    los combinamos de forma ponderada acabamos obteniendo un clasificador que se denomina clasificador fuerte

    que tiene un alto rendimiento y que se puede demostrar que tiene una buena capacidad de generalización y de

    minimización del error de clasificación.

    Para poder tratar de forma eficiente con tan elevado número de características de Haar se utiliza la cascada de

    clasificadores que se realiza a partir de entrenar un conjunto de clasificadores con Adaboost como se acaba de

    explicar.

    La principal motivación para introducir una cascada de clasificadores viene de observar que el número de

    objetos que queremos reconocer y que podemos encontrar en una imagen es muy limitada. Sin embargo, el

    detector se va a evaluar utilizando el método de ventana deslizante y por lo tanto, va a generar un número muy

    elevado de hipótesis que van a corresponder a desplazar la ventana por toda la imagen a múltiples escalas.

    Vamos a explicar primero qué es el método de la ventana deslizante:

    3.1.3. Método de la Ventana Deslizante

    La clasificación de ventanas se basa en saber si una ventana de una imagen contiene o no uno de los objetos

    que nos interesa. Dada una ventana que tenemos colocada en una cierta posición de la imagen, lo que se hace

    es colocar otra ventana del mismo tamaño desplazada con respecto a la anterior a una distancia Δx para el eje x

    e Δy para el eje y [14].

    Figura 3.32: Desplazamientos ventana deslizante

    Así que tenemos los parámetros Δx e Δy que nos va a servir para generar un patrón de desplazamiento de la

    ventana situada arriba a la izquierda en la imagen que recorre toda la imagen, donde en este ejemplo, a medida

    que el algoritmo avanza por las distintas ventanas, el clasificador las clasifica como conteniendo un peatón o

    no:

  • 29

    Figura 3.33: Ventanas donde se encuentra el objetivo

    En este caso, tres de todas las ventanas examinadas han sido clasificadas como peatón. Así pues, hemos visto

    como dada una imagen de entrada podemos generar una serie de ventanas en esa imagen que hemos de

    clasificar como conteniendo o no, en este caso peatones.

    Unas cuestiones interesantes a tener en cuenta respecto a la ventana deslizante es que la altura y anchura de la

    ventana canónica determina el tamaño que detectaremos los objetos. En este ejemplo, si queremos detectar

    peatones y este es el tamaño de la ventana canónica, podremos detectar a este peatón porque son tamaños

    iguales o muy parecidos. No podremos detectar a este segundo peatón porque es mucho más grande que el

    tamaño de la ventana canónica.

    Figura 3.34: Tamaño de la ventana canónica

    En el proceso de aprendizaje, para clasificar objetos necesitamos un modelo de esos objetos y ese modelo se

    aprende de un conjunto de muestras. Para el ejemplo de la figura 3.35, el objetivo es reconocer peatones así

    que los enmarcamos para generar su modelo. Como podemos ver, cada ventana tiene un tamaño diferente. Lo

    que sucede es que para el proceso de aprendizaje todas las ventanas han de tener el mismo tamaño canónico

    por lo que hay que hacer un reescalado de cada una de esas ventanas y esto es un proceso muy importante ya

    que si se hace mal los clasificadores podrían ser peores de lo que realmente podrían ser.

  • 30

    Figura 3.35: Diferentes tamaños del objetivo

    3.1.4. Cascada de Clasificadores

    El resultado que nos debe dar nuestro clasificador es una ventana en la pantalla principal que nos indique

    donde se encuentra la planta a reconocer en el caso de que hubiese alguna. Como en una imagen la mayoría de

    las posibles ventanas que puede haber no corresponden con nuestro objeto a reconocer se precisa de una

    ‘cascada de clasificadores’ que nos ayude a descartar todas esas ventanas que no corresponden con nuestro

    objeto. Por ejemplo, para el caso de reconocer una cara sería así:

    Figura 3.36: Todas las posibles ventanas

    La cascada de clasificadores tiene por objetivo descartar muchas de estas ventanas para disminuir el coste

    computacional y concentrar el esfuerzo en las ventanas que tienen una mayor probabilidad de ser nuestro

    objeto. La cascada de clasificadores nos va a permitir alcanzar este objetivo mediante una combinación

    secuencial de clasificadores de forma que una ventana solo será detectada como nuestro objeto si es

    reconocida de forma correcta por todos los clasificadores. Si uno de estos clasificadores rechaza la ventana

    como nuestro objeto, la ventana quedará rechazada [15].

    Figura 3.37: Cascada de clasificadores

  • 31

    El primer clasificador va a recibir todas las posibles ventanas de una imagen. Todas aquellas que rechace el

    primer clasificador quedarán descartadas y las que acepte se pasarán como entradas al segundo clasificador y

    así hasta llegar al último clasificador. Solo las ventanas que sean reconocidas como nuestro objeto en este

    último clasificador y por lo tanto han sido reconocidas en los demás clasificadores va a ser la detección final

    de nuestro objeto que va a producir nuestro detector.

    La reducción de tiempo de procesamiento es menor debido a que a medida que avanzamos por la cascada el

    número de ventanas se va reduciendo y porque el número de características que se va a utilizar en los primeros

    clasificadores va a ser muy bajo con lo que podemos descartar muchas ventanas de forma muy rápida.

    La clave del funcionamiento de la cascada va a estar en cómo se entrena cada clasificador para conseguir

    rechazar un buen número de ventanas negativas mientras aceptamos también todas o casi todas las ventanas

    positivas. Cada clasificador en un nivel de la cascada va a ser un clasificador entrenado por Adaboost de la

    forma anteriormente explicada sin embargo en el aprendizaje de la cascada el objetivo no va a ser minimizar el

    error de clasificación global sino que cada clasificador tendrá como objetivo cumplir con un número máximo

    de falsos positivos que corresponden a falsas detecciones de nuestro objeto y con un número máximo de falsos

    negativos que corresponden a plantas que no son detectadas. Por lo tanto, hay que modificar ligeramente la

    forma en la que se construirá el clasificador fuerte a partir de los clasificadores débiles.

    Para cada clasificador vamos a fijar un objetivo respecto al número máximo falsos positivos y falsos negativos

    que debería producir y que se va a evaluar sobre un conjunto de validación.

    En la figura 3.38 a partir de esta frontera de decisión nos encontramos que hay un falso negativo y cuatro

    falsos positivos:

    Figura 3.38: Frontera de decisión para un conjunto de muestras

    Si estos valores están por encima del objetivo que no hemos fijado hay que reducir estos valores. La solución

    es mover la frontera de decisión a la izquierda o a la derecha según convenga por lo que vamos a introducir en

    la formulación del clasificador un factor de margen ‘s’ que vamos a tener que encontrar de una forma iterativa

    y que nos va a permitir modular el número de ventanas rechazadas y aceptadas.

    Figura 3.39: Factor de margen ‘s’

    Vamos a suponer que el número de falsos positivos es superior al objetivo y para reducirlo vamos a tener que

    mover la frontera hacia la derecha y para ello fijaremos un valor del factor ‘s’ negativo, de forma que

    imágenes que antes tenían una predicción positiva pasen a tener una predicción negativa. De la misma forma,

    si lo que se supera es el objetivo marcado para el número de falsos negativos, vamos a mover la frontera hacia

    la izquierda fijando un valor ‘s’ positivo de forma que ejemplos que antes tenían una respuesta negativa ahora

    pasen a tenerla positiva.

    Nos podemos encontrar en la forma en la que no es posible encontrar un único valor ‘s’ que cumpla a la vez

    con los dos objetivos propuestos de falsos positivos y falsos negativos así que vamos a considerar que el

    clasificador fuerte no es suficientemente robusto como para cumplir con el objetivo propuesto y lo que vamos

    a hacer es entrenar un nuevo clasificador fuerte aumentando el número de características de Haar.

  • 32

    Figura 3.40: Nuevo clasificador aumentando las características de Haar

    Donde T’ va a ser mayor que T que corresponde al número de características de Haar del clasificador fuerte.

    Ahora esperamos conseguir un clasificador mejor que pueda cumplir con los objetivos marcados. Nos puede

    pasar que por mucho que incrementemos el número de características el objetivo para ese nivel de la cascada

    sea demasiado restrictivo y no podamos encontrar un clasificador que lo pueda cumplir por lo tanto vamos a

    fijar también un número máximo de características por clasificador.

    Con todo esto, para entrenar un clasificador vamos a fijar como parámetros de entrada para el objetivo de

    falsos positivos y de falsos negativos que queremos conseguir y también el número máximo de características

    que permitimos para ese clasificador. Con estos parámetros fijados vamos a empezar a entrenar un clasificador

    fuerte con un número inicial de características muy bajo. Una vez entrenado este clasificador, vamos a adaptar

    el margen de la frontera para intentar cumplir con el objetivo de falsos positivos y falsos negativos. Si no es

    posible cumplir con este objetivo, incrementamos el número de características permitidas en el clasificador y

    reentrenamos un nuevo clasificador con un número mayor de características. El aprendizaje del clasificador

    solo lo vamos a dar por finalizado bien si conseguimos cumplir con el objetivo de falsos positivos y falsos

    negativos fijados o bien si acabamos alcanzando el número máximo de características que permitimos para el

    clasificador. Este proceso se va a repetir para todos los niveles de la cascada, sin embargo, el primer

    clasificador ya ha rechazado un buen número de ventanas negativas por lo tanto no queremos que los nuevos

    clasificadores vuelvan a evaluar estas mismas ventanas para que se concentren en ventanas negativas que el

    anterior clasificador haya considerado como positivas. Así que antes de entrenar un nuevo clasificador vamos

    a evaluar el clasificador anterior con un conjunto de imágenes negativas para seleccionar un nuevo conjunto de

    ejemplos negativos que sean falsos positivos en el paso anterior así que de esta forma vamos a conseguir que

    el nuevo clasificador se concentre en ventanas que son más difíciles que en el paso anterior.

    En el proceso de aprendizaje se van añadiendo clasificadores hasta que bien alcanzamos un número fijado de

    niveles que queremos tener en la cascada o bien alcanzamos un objetivo de rendimiento en relación a falsos

    positivos y falsos negativos.

    3.1.5. Detalles para la Implementación

    La primera consideración que tenemos que tener en cuenta es la normalización de las imágenes que se usan

    como entrada al clasificador. En el proceso de aprendizaje y para reducir la variabilidad de todas estas

    imágenes se normalizan a un tamaño fijo de 20x20 píxeles, por lo tanto esta va a ser la escala mínima que

    vamos utilizar como base para la detección del objeto deseado. A partir de este tamaño se pueden detectar el

    objeto a escalas superiores [16].

    Por otro lado, durante el proceso de aprendizaje también va a ser necesario normalizar las imágenes para

    reducir el efecto de diferentes iluminaciones que podrían dar lugar a valores bastantes diferentes en las

    características de Haar. Para disminuir estas diferencias de iluminación a las imágenes se les aplica una

    normalización bastante simple que consiste en restar a la intensidad de cada píxel I(x,y) la media de

    intensidades de toda la imagen µ(I) y dividir entre la desviación estándar θ(I).

  • 33

    Figura 3.41: Ecuación de normalización de las imágenes

    De esta forma conseguimos imágenes que tienen una media igual a 0 y una desviación estándar igual a 1.

    Esto también hay que aplicarlo cuando se evalúan todas las ventanas que se van a generar como hipótesis

    durante la detección. Sin embargo, tenemos que tener en cuenta que durante el proceso de detección se van a

    generar un gran número de ventanas y normalizar cada una por separado puede ser muy costoso. Dado que

    cada filtro de Haar solo realiza sumas de intensidades de píxeles se puede comprobar que normalizar la imagen

    por la varianza y después calcular las características de Haar es equivalente al proceso inverso, es decir,

    calcular primero las características de Haar y después normalizar por la varianza. Por lo tanto, la normalización

    se puede incluir en el cálculo de las características de Haar dividiendo el resultado de aplicar el filtro calculado

    como ya se explicó, por la desviación estándar de todas las subventanas.

    3.2. LBP Existen otros tipos de descriptores de características a diferencia de Haar. Uno de ellos es el Local Binary

    Pattern conocido como LBP [17].

    Vamos a ver como se calcula el código LBP para cada uno de los píxeles de la imagen. Supongamos que la

    siguiente figura es una imagen y cada cuadrado es un píxel de la imagen:

    Figura 3.42: Ejemplo para el cálculo del código LBP

    Vamos a realizar el cálculo LBP para el píxel central. Para ello, vamos a definir una vecindad alrededor del

    píxel y vamos a comparar el valor de cada uno con el valor del píxel central de forma que:

  • 34

    Figura 3.43: Resultado para la comparación de los píxeles

    Por lo que obtenemos el siguiente código:

    Figura 3.44: Cálculo del código LBP para el píxel central

    Por lo tanto, el código LBP de ese píxel central es 182:

    Figura 3.45: Resultado del código LBP en un píxel

    De igual forma se obtiene un valor LBP para cada píxel excepto en las esquinas ya que al introducir una

    vecindad en una de ellas hay ciertos píxeles de la vecindad que en la imagen no van a existir y para ello lo más

    común es ignorar los bordes de las imágenes.

    LBP es invariante a niveles de gris:

  • 35

    Figura 3.46: LBP invariante ante nieles de gris

    Y ante traslación:

    Figura 3.47: LBP invariante ante traslación

    Hay diferentes variantes como puede ser el uso de otra vecindad [18]. Es muy común la vecindad circular:

    Figura 3.48: Vecindad circular

    Ahora vamos a ver como se utiliza el código LBP calculado para definir descriptores para su posterior

    clasificación [19].

    Se basa en la idea de que una ventana dentro de diferentes imágenes que contienen el objeto deseado a

    reconocer siguen un cierto un patrón en su histograma y que es muy diferentes a ventanas donde no se

    encuentra el objeto. Los histogramas son normalizados, es decir, que cada entrada está comprendidos entre 0 y

    1 y sumando todas las entradas nos darán el valor 1.

    Este descriptor no es suficientemente discriminativo ya que las imágenes de la figura 3.49 tendrían el mismo

    histograma.

  • 36

    a) b)

    Figura 3.49: Histograma LBP

    Y puede provocar reconocimientos indeseados como ocurre en la figura 3.50 enmarcados por las ventanas

    amarillas, que reconoce la parte superior de una persona con la inferior de otra persona diferente:

    Figura 3.50: Reconocimientos indeseados en LBP

    Para mejorar el descriptor vamos a dividir la ventana en bloques y cada uno se le calcula su histograma:

  • 37

    Figura 3.51: Histograma de cada bloque

    Así que para el caso anterior el histograma de cada bloque es diferente, que es lo que buscamos:

    a) b)

    Figura 3.52: Diferencias en los histogramas de los bloques en cada imagen

    Para conseguir unos descriptores más robustos se añade cierta redundancia mediante bloques solapados como

    podemos ver en la siguiente ilustración:

  • 38

    Figura 3.53: Adicción de bloques para el cálculo del histograma

    Donde el descriptor final es resultado de la concatenación de todos los histogramas correspondientes a cada

    uno de los bloques.

    Una vez obtenido los descriptores para cada ventana, se usa Adaboost y la cascada de clasificadores al igual

    que en Haar para generar el fichero encargado del reconocimiento del objeto deseado.

    En la siguiente tabla vamos a exponer las ventajas y desventajas que hay entre LBP y las características de

    Haar [20]:

    Algoritmo Ventajas Desventajas

    Haar Mayor exactitud de reconocimiento.

    Menor tasa de falsos positivos.

    Alto coste computacional.

    Tiempo de entrenamiento alto.

    Limitaciones en condiciones de iluminación difíciles.

    LBP Bajo coste computacional.

    Tiempo de entrenamiento bajo.

    Robusto a cambios de iluminación.

    Menor exactitud.

    Alto tasa de falsos positivos.

    Tabla 4.1: Diferencias entre Haar y LBP

  • 39

    Capítulo 4

    Diseño hardware

    4.1. Introducción

    Para que nuestro robot pueda reconocer las malezas y a la persona a la que debe realizar el seguimiento, vamos

    a necesitar dos cámaras, una para cada función. Vamos a utilizar el chasis de un coche para dotar al sistema de

    la capacidad de trasladarse a lo largo de los surcos de algodón. Precisamos de motores para aplicar el

    movimiento así como de un controlador de motores para poder proporcionarle las intensidades que se deseen.

    Como suministro de energía para los motores vamos a usar una batería de 12 voltios. Todo esto es controlado

    por Raspberry Pi a la que vamos a suministrarle energía por medio de una batería portátil para móviles.

    Figura 4.1: Esquema conexionado

    4.2. Raspberry Pi

    Como ya hemos dicho, el componente encargado del control de todo el proyecto será el mini ordenador

    Raspberry Pi 3 model b.

    Raspberry Pi es una placa base con unas dimensiones reducidas y permite una gran cantidad de

    aplicaciones. Se puede convertir en casi cualquier cosa, desde un mini pc, hasta un servidor de datos,

    centro de ocio o la base de un robot.

    El principal atractivo de este mini PC no es otro que el precio. Bajo la premisa de ofrecer la potencia de

    un ordenador a bajo precio, la Raspberry es una de las formas más asequibles de disponer de un hardware

    especialmente eficiente y dinámico accesible para cualquier bolsillo.

  • 40

    Este modelo de Raspberry ensambla en su circuito un chipset Broadcom BCM2387 con cuatro

    núcleos ARM Cortex-A53 a 1.2 GHz. Dicho procesador es capaz de mover con soltura videojuegos y

    aplicaciones, además de disponer de una gran potencia de procesado para otro tipos de tareas [21].

    El ‘giga’ de ram DDR2 que incorpora le permite mover con soltura bastantes sistemas operativos, como

    Windows 10 lot Core o Ubuntu Snappy, versiones Slim de los sistemas operativos a los que emulan.

    Además, disponemos de 4 puertos USB para ampliar el dispositivo con todo tipo de periféricos, que a día

    de hoy son muchos.

    Entre otras de las mejoras que encontramos en el modelo Pi 3 se cuenta la llegada de la conectividad Wi-

    Fi y Bluetooth integradas. La entrada HDMI permite la visualización de contenidos en alta definición en

    un gran número de dispositivos, como pueden ser pantallas, ordenadores portátiles o televisores,

    suponiendo uno de los principales atractivos de este dispositivo.

    Eficiencia es la palabra que mejor describe a la Raspberry Pi 3. Basta con un simple cargador de móvil

    para alimentar a esta placa.

    Tiene unas dimensiones de 85 x 56 x 17 mm, perfecta utilizarla como base de un kit de robótica.

    Tiene 40 pines, de los cuales 27 son pines GPIO y de los restantes algunos suministran 3.3v, otros 5v y

    algunos son GND. En este esquema vemos las características de cada pin:

    Figura 4.2: Esquema de pines Raspberry Pi 3 model b

  • 41

    Especificaciones de Raspberry Pi 3 model b:

    Procesador:

    o Chipset Broadcom BCM2387.

    o 1,2 GHz de cuatro núcleos ARM Cortex-A53

    GPU

    o Dual Core VideoCore IV ® Multimedia Co-procesador. Proporciona Open GL ES 2.0, OpenVG acelerado por hardware, y 1080p30 H.264 de alto perfil de decodificación.

    o Capaz de 1 Gpixel / s, 1.5Gtexel / s o 24 GFLOPs con el filtrado de texturas y la

    infraestructura DMA

    RAM: 1GB LPDDR2.

    Conectividad

    o Ethernet socket Ethernet 10/100 BaseT

    o 802.11 b / g / n LAN inalámbrica y Bluetooth 4.1 (Classic Bluetooth y LE)

    o Salida de vídeo

    HDMI rev 1.3 y 1.4

    RCA compuesto (PAL y NTSC)

    o Salida de audio

    jack de 3,5 mm de salida de audio, HDMI

    USB 4 x Conector USB 2.0

    o Conector GPIO

    40-clavijas de 2,54 mm (100 milésimas de pulgada) de expansión: 2x20 tira

    Proporcionar 27 pines GPIO, así como 3,3 V, +5 V y GND líneas de suministro

    o Conector de la cámara de 15 pines cámara MIPI interfaz en serie (CSI-2)

    o Pantalla de visualización Conector de la interfaz de serie (DSI) Conector de 15 vías plana

    flex cable con dos carriles de datos y un carril de reloj

    o Ranura de tarjeta de memoria Empuje / tire Micro SDIO

    4.3. Cámaras

    Para tanto el reconocimiento de las malas hierbas como para el seguimiento del trabajador, vamos a utilizar

    cámaras web.

    La cámara encargada de las malezas es una webcam de la marca Tecknet de alta definición con conector capaz

    de tomar 30 fotogramas por segundo. Tiene 5 mega píxeles, con una resolución de 2560 x 1920 píxeles y su

    DPI es de 1280x720 [22].

    La cámara encargada de seguir al jornalero es WebCam Live! Ultra Notebook de la marca Creative y destaca por el brillo, excelente definición y detalle que ofrecen sus sensores CCD complementados con un objetivo

    gran angular que ofrece un campo visual capaz de capturar un 50 por ciento más de imagen por fotograma.

    Conexión USB 2.0 de alta velocidad que permite almacenar en el disco duro más de 30 fotogramas por

    segundo de vídeo. Tiene 1,3 Mega píxeles de resolución [23].

    La diferencia entre ambas es que la segunda tiene un campo de visión mucho más amplio, lo que está más

    acorde a la función de seguimiento ya que al tener un mayor ángulo de visión, es más difícil perder al

    trabajador. La segunda cámara tiene un muy buen zoom y será más eficaz para el reconocimiento de las

    malezas.

  • 42

    4.4. Chasis

    El chasis del proyecto es el de un coche pequeño de cuatro ruedas con un motor para cada una. Se ha elegido

    este chasis suponiendo que las condiciones en las que va a trabajar son ideales, es decir, que el suelo va a ser

    liso, sin piedras y que no va a haber barro.

    Figura 4.3: Chasis del vehículo

    Obviamente, estas condiciones no son realistas debido a que la superficie en el campo es irregular con

    numerosas piedras de todos los tamaños, puede que se haya regado el cultivo incluso días atrás y siga el

    terreno embarrado o la existencia de desniveles en la superficie que puede provocar que nuestro robot no sea

    capaz de superarlos.

    Para estas condiciones más realistas necesitaríamos otro tipo de chasis, como por ejemplo podría ser el de tipo

    tanque ya que su sistema de tracción le permite atravesar terrenos complicados y diferentes obstáculos.

    4.5. Controlador de Motores

    El dispositivo encargado del control de los motores es el módulo L298N. El módulo L298N posee dos

    canales de Puente H, pudiéndolos utilizar para controlar dos motores DC o un motor Paso a Paso,

    controlando el sentido de giro y velocidad. Está conformado por un driver L298N, sus diodos de

    protección y un regulador de voltaje de 5v [24].

    Especificaciones:

    Voltaje de alimentación, mínimo de 5v. Posee dos entradas, una de 5v para controlar la parte lógica y

    otra para alimentar las salidas al motor, que pueden ser de 5v o más.

    La tarjeta tiene la opción de habilitar un regulador LM7805 integrado en ella para alimentar la parte

    lógica con lo que se puede alimentar la tarjeta con 12v por ejemplo.

    Corriente máxima 2 Amperios.

    Posee 6 entradas de control

    Admite entradas de señal PWM para el control de velocidad.

    Dimensiones: 43 mm x 23,9 mm x 43 mm.

    Salidas: para 2 motores de DC o para un motor bipolar paso a paso

    Partes:

  • 43

    Figura 4.4: Partes del módulo L298N

    4.6. Zumbador Un Zumbador o buzzer, es un transductor electroacústico que produce un sonido o zumbido continuo o

    intermitente de un mismo tono generalmente agudo. Sirve como mecanismo de señalización o aviso y se

    utiliza en múltiples sistemas [25].

    La parte encargada de avisar a la persona encargada de quitar las hierbas que ha dejado alguna sin quitar es el

    zumbador. Tiene un voltaje de entrada de 5v.

    Tendrá dos funciones:

    La primera es la ya comentada y para ello dará 3 pitidos intermitentes de medio segundo con una pausa de

    medio segundo entre una y otra.

    La segunda función será también la de avisar al jornalero pero en caso de que esté 10 segundos o más sin

    haber reconocido a la persona a la que debe de seguir. En este caso se producirá un fuerte pitido hasta que

    vuelva a reconocer a dicha persona.

    4.7. Baterías

    El proyecto está compuesto por dos baterías. Una de ellas, de 12v suministra la potencia necesaria a los 4

    motores los cuales requieren 5v para su funcionamiento.

    La otra batería se dedica exclusivamente a mantener encendida la Raspberry Pi. Es una batería portátil para

    móviles con un voltaje de salida de 5v y 1000mA, al igual que la potencia que suministran los cargadores de

    móviles, así que también sirve para esta función.

  • 44

    Capítulo 5

    Diseño Software

    5.1. Introducción

    Nuestro robot está compuesto por dos partes que destacan del resto: el reconocimiento de las malezas y el

    seguimiento al jornalero. Para ambas partes vamos a utilizar la biblioteca de visión artificial OpenCV (Open

    Source Computer Vision) que contiene múltiples funciones que abarcan una gran gama de áreas en el proceso

    de visión.

    También contiene un sistema de alarmas. El entorno de desarrollo utilizado es Raspbian y Python como

    lenguaje de programación.

    5.2. Raspbian

    Como ya se ha comentado anteriormente, Raspberry Pi puede soportar varios sistemas operativos. Para este

    proyecto se ha elegido Raspbian.

    Raspbian es una distribución del sistema operativo GNU/Linux y por lo tanto de software libre para Raspberry

    Pi, orientado a la enseñanza de informática con soporte optimizado para cálculos en coma flotante por

    hardware, lo que permite dar más rendimiento en según qué casos. Contiene herramientas de desarrollo como

    IDLE para el lenguaje de programación Python. Destaca también el menú "raspi-config" que permite

    configurar el sistema operativo sin tener que modificar archivos de configuración manualmente [26].

    Al ser una distribución de GNU/Linux las posibilidades son infinitas. Todo software libre puede

    ser recompilado en la propia Raspberry Pi para que pueda ser utilizado en el propio dispositivo. Además esta

    distribución, como la mayoría, contiene repositorios donde el usuario puede descargar multitud de programas.

    Todo esto hace de Raspberry Pi un dispositivo que además de servir como placa con microcontrolador clásica,

    tenga mucha de la funcionalidad de un ordenador personal.

    5.3. Python

    Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca

    un código legible [27]. Básicamente, Python es un lenguaje de programación de alto nivel, interpretado y

    multipropósito. En los últimos años su utilización ha ido constantemente creciendo y en la actualidad es

    uno de los lenguajes de programación más empleados para el desarrollo de software [28].

    Se trata de un lenguaje potente, flexible y con una sintaxis clara y concisa. Además, no requiere dedicar

    tiempo a su compilación debido a que es interpretado.

    Python es open source, cualquiera puede contribuir a su desarrollo y divulgación. Además, no es

    necesario pagar ninguna licencia para distribuir software desarrollado con esté lenguaje. Hasta su

    intérprete se distribuye de forma gratuita para diferentes plataformas.

    https://es.wikipedia.org/wiki/Sistema_operativohttps://es.wikipedia.org/wiki/Software_librehttps://es.wikipedia.org/wiki/Raspberry_Pihttps://es.wikipedia.org/wiki/Raspberry_Pihttps://es.wikipedia.org/wiki/Inform%C3%A1ticahttps://es.wikipedia.org/wiki/C%C3%A1lculoshttps://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3nhttps://es.wikipedia.org/wiki/Pythonhttps://es.wikipedia.org/wiki/GNU/Linuxhttps://es.wikipedia.org/wiki/Software_de_c%C3%B3digo_abiertohttps://es.wikipedia.org/wiki/Raspberry_Pihttps://es.wikipedia.org/wiki/Raspberry_Pihttps://es.wikipedia.org/wiki/Ordenador_personal

  • 45

    5.4. Reconocimiento Automático de las Malas Hierbas

    5.4.1. Introducción

    Para el desarrollo de esta aplicación utilizaremos el módulo “Object Detection” de la librería OpenCV. Este

    detector de objetos utiliza los conceptos propuesto por Paul Viola [29]. La librería OpenCV es una biblioteca

    de visión artificial y de aprendizaje automático iniciada por Intel en 1999. Esta biblioteca multiplataforma se

    centra en el procesamiento de imágenes en tiempo real e incluye implementaciones libres de patentes de los

    últimos algoritmos de visión computarizada [30].

    Esta librería está escrita en el lenguaje de programación C y C++ y cuenta con aproximadamente quinientas

    funciones que abarcan diferentes procesos de la visión artificial. OpenCV fue diseñado para la eficiencia

    computacional y con un fuerte enfoque en aplicaciones en tiempo real. La librería permite el manejo eficiente

    de imágenes y matrices, reconocimiento de objetos y análisis de imágenes.

    Vamos a crear nuestros propios clasificadores con la ayuda de OpenCV para el reconocimiento de las malezas

    y se va a comparar el resultado aplicando el método de las Características de Haar y LBP (Local Binary

    Pattern).

    5.4.2. Características de Haar

    Basándose en las cualidades descritas en el apartado 3.1, OpenCV crea el clasificador para el objeto deseado,

    pero para ello hay que definir ciertos aspectos.

    Para el aprendizaje automático basado en las características de Haar, es necesario recopilar una gran cantidad

    de imágenes positivas y negativas. Las imágenes positivas son aquellas en las que se encuentra el objeto que

    queremos reconocer y las negativas son aquellas en las que no está dicho objeto [31].

    En primer lugar, solo se van a reconocer dos