AgroFieldDetect2 ha sido uno de los proyectos seleccionados en la convocatoria de los Premios Cátedra Telefónica de la UEx en 2021 para Proyectos IoT, BigData, Machine Learning y Blockchain para el Sector Agroganadero.
Este proyecto es la continuación del desarrollo de AgroFieldDetect, comenzado en la edición de 2020 y en el que se acometieron las primeras fases de un sistema robotizado para la poda automática de viñedos. En aquella primera parte se desarrolló un sistema de guiado automático basado en un robot móvil con un sistema de detección de sarmientos mediante técnicas de Deep Learning aplicadas a la visión artificial. En esta segunda parte se pretende abordar el desarrollo de los algoritmos para la detección, ya no del sarmiento en sí, si no de la zona y de la orientación para el correcto corte del sarmiento por un brazo robotizado.
Para la localización de la zona de corte y de la orientación hemos de trabajar en un espacio RGBD, donde la información visual se complementa con un mapa de profundidad. De esta forma es posible conocer la posición y orientación de los objetos en el espacio tridimensional.
Para la captura de estas imágenes RGBD empleamos la cámara de profundidad Intel Realsense D435i (https://www.intelrealsense.com/depth-camera-d435i/), que combina una cámara RGB con otra de profundidad y una unidad de medida inercial (IMU), integrados mediante un procesador de Intel especialmente diseñado para tareas de visión. Además, es completamente compatible con ROS (https://www.ros.org/), que es el framework sobre el que desarrollamos todo el sistema de navegación en la primera fase del proyecto.
El movimiento hacia el sarmiento de la herramienta de corte se ha prototipado mediante un pequeño brazo robótico de cinco grados de libertad, con servos de tipo bus y un controlador basado en STM32, también integrable en ROS (https://www.hiwonder.hk/products/xarm-1s-hiwonder-intelligent-bus-servo-robotic-arm-for-programming).
Para la ejecución de algunas pruebas se ha diseñado un entorno controlado en el que colocamos la cámara y el robot en posiciones fijas precisas, y sobre el que haremos las calibraciones y medidas que sean necesarias. En la figura 1 podemos observar este entorno de laboratorio.
Para el desarrollo de los algoritmos de localización espacial y de movimientos hacia las zonas de corte se ha decidido explorar dos vías diferentes, la primera de ellas se basa en una localización en RGB, ampliando el conjunto de prototipos desarrollado en la primera parte del proyecto, y una posterior determinación de la posición y orientación mediante el mapa de profundidad, lo que llamaremos localización mediante pipeline RGB+D. En la segunda vía, la localización se realiza directamente sobre el espacio RGBD, lo que implica una dificultad añadida a la hora de la creación de prototipos. Veamos de forma más detallada estas dos vertientes de estudio.
Localización mediante pipeline RGB+D
En el anterior proyecto se construyó un conjunto de prototipos con 140 imágenes, que se pretende ampliar ahora, teniendo que entrenar de nuevo la red Mask_RCNN.
El resultado de esta red de detección es una máscara para cada objeto detectado, y estas máscaras serán las que alimentarán la segunda parte de este pipeline, de manera que extraeremos los valores de profundidad correspondientes a cada máscara.
Para eliminar ruido de la imagen de profundidad y evitar que objetos que se puedan superponer en la máscara den lugar a puntos que realmente no pertenezcan al objeto, la detección se hará de manera iterativa, cambiando la posición de la cámara, de manera que podamos hacer una inferencia bayesiana y determinar los puntos del espacio pertenecientes al objeto con un cierto grado de creencia. El esquema del proceso completo se muestra en la figura 2.
Localización en el espacio RGBD
Una de las tareas más costosas en cuanto a tiempo se refiere, pero de importancia vital dentro del desarrollo de aplicaciones basadas en Deep Learning, es la creación de un conjunto suficientemente amplio de prototipos de imágenes con sus anotaciones correspondientes. En el caso de este proyecto, esta dificultad se ve agravada, además, por la necesidad de trabajar en el mapa de profundidades. Para solventar este problema se ha decidido buscar una alternativa que permita automatizar el proceso de marcado de prototipos, y que además nos dé la posibilidad de generar un conjunto mucho más amplio. Esta solución es la creación de un conjunto de prototipos sintético.
Exploraremos dos alternativas para la creación de este conjunto. En la primera alternativa realizamos una proyección homográfica de imágenes recortadas de sarmientos sobre el fondo elegido. La proyección se hace partiendo de la matriz intrínseca y de los coeficientes de distorsión de la cámara con la que se captura el fondo, de manera que la proyección homográfica simula de forma precisa cómo veríamos cada sarmiento con una traslación y rotación determinada, y así tendremos por una parte una imagen con los sarmientos sobre el fondo, y por otro lado las matrices de traslación y rotación de los sarmientos, es decir, sus posiciones y orientaciones en el espacio. La figura 3 resume esta metodología.
La otra alternativa es obtener directamente las imágenes RGBD de los sarmientos trabajando en un entorno 3D simulado en Gazebo (https://gazebosim.org/), que es un simulador para diseño, desarrollo e investigación de aplicaciones robóticas, completamente compatible con ROS, por lo que para este proyecto nos proporciona un entorno ideal para la creación del conjunto de prototipos.
En concreto usaremos el paquete gazebo_dataset_generation, que permite la creación de un conjunto de prototipos a partir de modelos CAD (https://ieeexplore.ieee.org/abstract/document/9659336). En la figura 4 se muestra un ejemplo del funcionamiento de este paquete, donde la posición de la cámara RGBD se va modificando mientras se guardan las máscaras de los distintos modelos dispuestos en el escenario.