• No se han encontrado resultados

Reconstrucción de Imágenes 3D a partir de un sensor LiDAR de bajo costo.

N/A
N/A
Protected

Academic year: 2020

Share "Reconstrucción de Imágenes 3D a partir de un sensor LiDAR de bajo costo."

Copied!
67
0
0

Texto completo

(1)

Reconstrucción de Imágenes 3D a partir de un Sensor

LiDAR de Bajo Costo

Luis Fernando Mora Rios

Facultad Ingeniería

Ingeniería Electrónica

(2)
(3)

Reconstrucción de Imágenes 3D a partir de un Sensor LiDAR de Bajo Costo

Tesis. Ingeniería Electrónica, 2019. III

Reconstrucción de Imágenes 3D a partir de un Sensor

LiDAR de Bajo Costo

Luis Fernando Mora Rios

Trabajo de grado que se presenta como requisito parcial para optar al título de:

Ingeniero Electrónico

Director:

MSc. Ing. Harold Fabián Murcia Profesor Universidad de Ibagué

Facultad de Ingeniería

Ingeniería Electrónica

(4)
(5)

Reconstrucción de Imágenes 3D a partir de un Sensor LiDAR de Bajo Costo

Tesis. Ingeniería Electrónica, 2019. V

Dedicatoria

Este trabajo de grado está especialmente

dedicado a la memoria de mis padres que aún

en su ausencia siempre me acompañaron en

este proceso de aprendizaje, a mi familia y

amigos por su apoyo y su acompañamiento

durante la realización de este trabajo. Y a la

Fundación Arte a la Vida por brindarme una

oportunidad de trabajar con ellos, enseñarme

sobre la humildad, el trabajo en equipo, la

tolerancia, por abrirme las puertas al mundo

(6)
(7)

Reconstrucción de Imágenes 3D a partir de un Sensor LiDAR de Bajo Costo

Tesis. Ingeniería Electrónica, 2019. VII

Resumen

El presente informe de tesis es el producto de un trabajo de grado para la obtención del título de ingeniero electrónico. Presenta el desarrollo de un sistema de reconstrucción 3D a partir de un sensor LiDAR 2D y haciendo uso de dos actuadores. El documento describe un proceso de caracterización de los dispositivos, modelamiento de la capa mecánica, diseño electrónico y diseño e implementación de software mediante la plataforma ROS. Con ayuda del modelo cinemático se logra obtener una matriz de transformación que tras calibrarse experimentalmente da origen a una nube de puntos tridimensionales. Se obtuvo un sistema con dos grados de libertad de bajo costo aplicable en una alta gama de Hokuyo 2D. Adicional, la inteligencia artificial es fundamental para la resolución de problemas o en el ámbito investigativo.

Palabras clave:

inteligencia artificial, nubes de puntos 3D, reconstrucción

tridimensional, LiDAR terrestre.

Abstract

This thesis report is the product of a degree project to obtain the degree of electronic engineer. It presents the development of a 3D reconstruction system using a 2D LiDAR sensor and two actuators. The document describes a process of characterization of the devices, modeling of the mechanical layer, electronic design and design and implementation of software using the ROS platform. With the help of the kinematic model it is possible to obtain a transformation matrix that, after being experimentally calibrated, gives rise to a cloud of three-dimensional points. It was obtained a system with two degrees of freedom of low cost applicable in a high range of Hokuyo 2D. In addition, artificial intelligence is essential for solving problems or in the field of research

Keywords: artificial intelligence, 3D point clouds, three-dimensional reconstruction,

(8)
(9)

Reconstrucción de Imágenes 3D a partir de un Sensor LiDAR de Bajo Costo

Tesis. Ingeniería Electrónica, 2019. IX

Contenido

Resumen………VII

Capítulo 1. Generalidades ... 3

1.1 Marco Teórico ... 3

1.1.1 Light Detection and Ranging o Laser Imaging Detection and Ranging, LiDAR 3 1.1.2 Sensor Hokuyo ... 4

1.1.3 Calibración de cámara... 5

1.1.4 Point Cloud ... 5

1.1.5 Robotic Operative System ROS ... 8

1.1.6 Estimación de Parámetros ... 8

1.2 Estado del arte ... 9

1.3 Descripción del Problema y Justificación ... 10

1.4 Objetivos ... 11

1.4.1 Objetivo General ... 11

1.4.2 Objetivos Específicos ... 11

1.5 Metodología ... 11

Capítulo 2. Diseño del Sistema ... 15

2.1 Capa Mecánica del sistema ... 15

2.1.1 Parámetros de diseño mecánico ... 15

2.1.2 Diseño mecánico ... 15

2.2 Capa Electrónica del sistema ... 19

2.2.1 Parámetros de diseño electrónico ... 19

2.2.2 Diseño electrónico ... 19

2.3 Capa de Software del sistema ... 23

2.3.1 Diseño del sistema de reconstrucción ... 23

2.3.1.1 Parámetros de diseño ... 23

2.3.1.2 Nodo de reconstrucción en ROS ... 24

2.3.1.3 Interfaz de Usuario ... 24

2.3.2 Modelo Cinemático del Sistema ... 25

2.3.3 Reducción de distorsión ... 26

2.3.3.1 Caracterización del Sensor ... 26

2.3.3.2 Mejoramiento de precisión ... 26

2.3.3.3 Distorsión debida a la incertidumbre ... 27

2.3.3.4 Estimación optima de los parámetros de sistema ... 27

Capítulo 3. Resultados Experimentales... 29

3.1 Implementación Electrónica del sistema ... 29

3.2 Interfaz de Usuario ... 29

3.3 Fabricación del Sistema de reconstrucción ... 30

3.4 Resultados de calibración del sistema ... 31

3.5 Resultados de reconstrucción... 33

3.5.1 Test 1 de reconstrucción en interiores (Laboratorios de Ingeniería) ... 33

3.5.2 Test 2 de reconstrucción en exteriores (Campus Unibague) ... 33

3.5.3 Test 3 de reconstrucción en diferentes intensidades de Luz (Campus Unibague) ... 34

(10)

Reconstrucción de Imágenes 3D a partir de un Sensor LiDAR de Bajo Costo

Conclusiones y Recomendaciones ... 37

4.1 Conclusiones ... 37

4.2 Recomendaciones ... 38

(11)

Reconstrucción de Imágenes 3D a partir de un Sensor LiDAR de Bajo Costo

Tesis. Ingeniería Electrónica, 2019. XI

Lista de figuras

Pág.

Figura 1. Ondas características de un LiDAR multi-eco Fuente: [6] ... 4

Figura 2. A) sensor LiDAR. B) rango de alcance Fuente:[7] ... 4

Figura 3. A) imagen sin calibrar. B) imagen después de calibrar. Fuente: [9] ... 5

Figura 4. A) monitoreo de vegetación en las redes eléctricas, B) digitalización de líneas de alta tensión C) monitoreo del cauce de un rio. Fuente: [13] ... 7

Figura 5. Ejemplos de la librería Optomap. Fuente: [17] ... 7

Figura 6. Diagrama de flujo del desarrollo del sistema de reconstrucción. Fuente: Autor 12 Figura 7. conversión de coordenadas cartesianas a esféricas. Fuente: [40] ... 15

Figura 8. paso a paso del montaje del acople directo. Fuente: Autor. ... 16

Figura 9. montaje del segundo motor. ... 18

Figura 10. Prototipo escáner. Fuente: autor ... 18

Figura 11. Diagrama esquemático. Fuente: Autor ... 20

Figura 12 Diseño de PCB. Fuente: autor ... 20

Figura 13. Unidad controladora de movimiento. Fuente: autor ... 22

Figura 14. Diagrama de flujo del software en el Arduino Nano. Fuente: Autor ... 23

Figura 15. diagrama del modelo. Fuente: [31] ... 25

Figura 16. descripción haz de luz LiDAR. Fuente: autor ... 26

Figura 17. Paso a paso construcción placa de control. Fuente: autor ... 29

Figura 18. diseño de página web mediante framework Flask. A) interfaz de escaneo. B) Menú principal. Fuente: autor ... 30

Figura 19. Sistema de reconstrucción de un grado de libertad. Fuente: autor ... 30

Figura 20. A) imagen sin calibrar, B) imagen calibrada, C) superposición de la imagen calibrada y no calibrada. D) puerta de acceso al laboratorio de software Fuente: autor .. 31

Figura 21. vista plana de un escaneo de un suelo. Fuente: Autor ... 32

Figura 22. A) reconstrucción tridimensional de un pasillo. B) pasillo de laboratorios de ingeniería mecánica. Fuente: autor ... 33

Figura 23. A) reconstrucción tridimensional de una escena exterior. B) vista exterior de una de las entradas al bloque 8. Fuente: autor... 33

Figura 24. A) reconstrucción zona verde exterior de noche. B) reconstruccion zona verde exterior de dia. C) zona verde exterior entre los bloques 7 y 8. Fuente: autor ... 34

Figura 25. Reconstrucción de nubes de puntos de la referencia del objeto con el sistema desarrollado y con un MS Kinect V2. Fuente: [31] ... 35

(12)
(13)

Reconstrucción de Imágenes 3D a partir de un Sensor LiDAR de Bajo Costo

Tesis. Ingeniería Electrónica, 2019. XIII

Lista de tablas

Pág.

Tabla 1. Características del sensor Hokuyo ... 4

Tabla 2. Proceso de calibración en sistemas de cámara 3D... 10

Tabla 3. Dispositivos y elementos mecánicos ... 16

(14)

Reconstrucción de Imágenes 3D a partir de un Sensor LiDAR de Bajo Costo

Lista de Símbolos y abreviaturas

Símbolos con letras latinas

Símbolo Término Unidad SI Definición

A Área m2 ∬ 𝑑𝑥 𝑑𝑦

L Longitud m DF

r Longitud radial m Figura 7

Símbolos con letras griegas

Símbolo Término Unidad SI Definición

 Ángulo de inclinación ° Figura 7

φ Angulo de rotación ° Figura 7

Ѱ Angulo de deriva ° Pág. 25

Abreviaturas

Abreviatura Término

DOF Degree Of Freedom (grados de libertad)

(15)

Reconstrucción de Imágenes 3D a partir de un Sensor LiDAR de Bajo Costo

Tesis. Ingeniería Electrónica, 2019. 1

Introducción

Para los humanos, la rica comprensión de nuestro mundo está guiada principalmente por la percepción visual que nos permite distinguir objetos, colores, texturas, formas y ubicación espacial. Al ser procesada esta información, se puede determinar la cantidad de objetos percibidos en la escena, el tipo de materiales, la detección de obstáculos, las distancias y el tamaño de los objetos, que afectan la forma en que interactuamos con la escena. La imitación de estas capacidades humanas permite a los sistemas inteligentes "percibir" información importante del mundo real de esta manera podría ser usada para muchas aplicaciones tales como: batimetría, agricultura, entre otras. En la implementación se usan diferentes tipos de sensores, como imágenes convencionales, imágenes térmicas, multiespectrales. Imágenes y nubes de puntos 3D. Considerando una escena del mundo real escaneada con un sensor cualquiera, que genera datos específicos, es posible utilizar diferentes técnicas de procesamiento computacional dependiendo de las tareas y aplicaciones.

(16)

Reconstrucción de Imágenes 3D a partir de un Sensor LiDAR de Bajo Costo

(17)

Capítulo 1. Generalidades

1.1 Marco Teórico

El uso de tecnologías láser como elemento de percepción y reconstrucción de espacios tridimensionales implica el manejo, comprensión y el conocimiento pertinente de todos y cada uno de los siguientes conceptos, para dar al lector una visión más clara del contenido encontrado en este documento. Los conceptos son los siguientes:

1.1.1 Light Detection and Ranging o Laser Imaging Detection and

Ranging, LiDAR

La tecnología LiDAR es utilizada para métodos no invasivos de mapeo de superficies, para obtener una digitalización rápida y precisa en formato de nube puntos o point cloud. El funcionamiento de un sensor LiDAR consiste en la emisión y recepción de un haz de luz, de manera un rayo láser es generado por un emisor se dispara sobre un espejo con inclinación cambiando su trayectoria. El haz generado viaja por el espacio hasta encontrar un primer objeto que refleja una cantidad de luz; cada haz de luz reflejado determina la distancia desde sensor hasta el objeto encontrado a partir del tiempo de vuelo entre transmisión y recepción y la constante de la velocidad de la luz [5], tal y como lo indica la siguiente ecuación.

X =t × C

2 ; donde C es la velocidad de la luz

(18)

Capítulo 1. Reconstrucción 3D con LiDAR 2D 4

Figura 1. Ondas características de un LiDAR multi-eco Fuente: [6]

En la Figura 1. Ondas características de un LiDAR multi-eco, se pueden apreciar las ondas de la señal trasmitida que al viajar y rebotar en alguna superficie dentro de su rango de visión reciben una señal análoga. De la señal recibida, se compara con un nivel umbral en donde si la señal está por encima del umbral crea una señal digital de salida.

1.1.2 Sensor Hokuyo

El sensor utilizado es el Hokuyo URG-04LX-UG01 [7] mostrado en la Figura 2.A. El cual dispone de un alcance angular de 240° (ver la Figura 2.B) a una distancia de aproximante 4 m tal y como lo indican sus características en la tabla 1.

Figura 2. A) sensor LiDAR. B) rango de alcance Fuente:[7]

Tabla 1. Características del sensor Hokuyo

Distancia de medición 20-5.6000mm

Resolución 1 mm

(19)

Capítulo 1. Reconstrucción 3D con LiDAR 2D 5

Tesis. Ingeniería Electrónica, 2019. 5

Resolución angular 0.36 grados (360 grados/1024 pasos) Exactitud 30mm (para distancias

inferiores a 1000mm) Tiempo de escaneo 100ms/escaneo Fuente de alimentación VDC ± 5% (alimentación

del bus USB)

1.1.3 Calibración de cámara

A razón de que podrían existir desviaciones en diferentes segmentos del sistema como lo son: montaje, modelo cinemático y adquisición de datos, condiciones que desfavorecen la reconstrucción de una nube de puntos. Se hace necesario realizar un ajuste sobre los datos adquiridos a razón de calibrar la imagen y obtener una reconstrucción tridimensional fidedigna a la realidad. Este proceso de calibración consta de matrices de transformación y rotación, utilizadas en un algoritmo de calibración que mediante un método iterativo calcular una función de costo “J” dada por la ecuación J = (Y − M × L)2, donde Y

representa un plano referencia previamente y el producto M × L lo podemos apreciar en la sección 2.3.2. Función que representa el costo del algoritmo para ajustar los datos adquiridos a una referencia, en donde a medida que la función de costo J tiende a 0 el resultado final es una estimación de parámetros correcta [8].

Figura 3. A) imagen sin calibrar. B) imagen después de calibrar. Fuente: [9]

Como se puede observaren la Figura 3.A tenemos una representación 3D sin calibrar, es decir con errores espaciales de objetos y distorsión en la representación 3D reconstruida. Por otro lado, en la Figura 3.B luego de haber tratado la nube de puntos con un algoritmo de calibración se puede observar una imagen correcta y más fiel a la realidad del escenario escaneado.

1.1.4 Point Cloud

(20)

Capítulo 1. Reconstrucción 3D con LiDAR 2D 6

mayor resolución más puntos por unidad de longitud. Mencionado lo anterior es conveniente elegir un sensor que se adapte a las necesidades del problema y a las capacidades del sistema. Es decir, si se escoge un sensor con una resolución alta, la densidad de datos puede afectar el sistema de adquisición ralentizándolo y aumentando el tiempo de muestreo. Por el contrario, un sensor con una resolución relativamente baja, el sistema de adquisición y el tiempo de muestreo no serían afectados. Por el contrario, la calidad y densidad de la nube de puntos obtenida se vería afectada notoriamente. Para finalizar, a partir de un sensor LiDAR bidimensional con un barrido en forma vertical y horizontal se logra obtener los datos necesarios para que mediante un software reconstruir una escena en forma de nube de puntos [10].

Vale la pena resaltar que existe una librería de programación para tratar e interpretar estas nubes de puntos, la cual se llama Point Cloud Library o por sus siglas en inglés (PCL), la cual consiste en una librería diseñada para el procesamiento tridimensional de nubes de puntos, soportando varios sistemas operativos como Windows, MacOS y Linux. La finalidad de PCL es integrar varios algoritmos de procesamiento de nubes de datos tridimensionales tales como: filtrado, estimación de características, reconstrucción de superficies, ajuste de modelos, segmentación, registro entre otros [11].

Así como existen librerías para el procesamiento de nubes de datos o Point Cloud, existen también herramientas creadas por rapidlasso GmbH una compañía especializada en la creación de herramientas de alta precisión, robustez e implementación de memorias inteligentes para lograr un alto rendimiento de procesamiento de conjuntos de datos con alta densidad de puntos [12]. Su paquete de software más popular es el LAStools, que consiste en un amplio conjunto de herramientas de líneas de comandos de múltiples núcleos y secuencias de comandos por lotes altamente eficientes. donde se pueden encontrar herramientas para clasificar, mosaico, convertir, filtrar, trazar, triangular, contornear, recortar y poligonalizar datos LiDAR, entre otras [13].

En la actualidad existe una empresa llamada DELAIRTECH, dedicada a usar la tecnología LiDAR equipado a un dron para así sobrevolar cualquier escenario y obtener la información pertinente en forma de nubes de puntos del espacio sobrevolado [14].

(21)

Capítulo 1. Reconstrucción 3D con LiDAR 2D 7

Tesis. Ingeniería Electrónica, 2019. 7

Figura 4. A) monitoreo de vegetación en las redes eléctricas, B) digitalización de líneas de alta tensión C) monitoreo del cauce de un rio.Fuente: [13]

Como se puede observar en la Figura 4.A, el Drone de esta empresa hace un escaneo aéreo de una zona donde las torres de alta corriente y vegetación creciendo entre ellas. Lo cual implica riesgos en el cableado y gracias a esta tecnología predecir futuros daños debido al roce de la vegetación con estas líneas de alto voltaje [15]. A su vez, otra aplicación en electricidad es digitalizar las redes eléctricas, polos y tierra [16]. Además de monitorear redes eléctricas y sus alrededores, estos drones sobrevuelan espacios de alta probabilidad de desastre natural como lo es el cauce de un rio y sus alrededores así como su nivel de erosión y vegetación existente [17].

Así como existe LAStools, también existe Optomap otra librería de mapeo probabilístico que es aplicado a la robótica y proporciona estructuras de datos y algoritmos de programación en lenguaje C++ [18]. Con esta librería se puede obtener el mapa de estructuras de planta física de cualquier escena, submuestrean las nubes de puntos como los mostrados en la Figura 5. donde claramente se nota una óptima clasificación de elementos y estructuras dentro de un espacio previamente escaneado.

(22)

Capítulo 1. Reconstrucción 3D con LiDAR 2D 8

1.1.5 Robotic Operative System ROS

El Robotic Operative System es un marco flexible de trabajo, que al igual que Linux es un sistema de código abierto donde existen gran cantidad de colaboradores que continuamente realizan desarrollos con esta plataforma. Equipado con una amplia variedad de librerías y herramientas que facilitan la implementación de tareas complejas propias de un robot. Caracterizado por su modularidad, ROS facilita la detección, corrección y prevención de errores de carácter lógico y computacional [19].

Debido a su gran capacidad y complejidad, ROS se convierte en la mejor herramienta aplicada a las tareas de reconocimiento de dispositivos, adquisición y procesamiento de datos entre otros. Es por esto por lo que ROS, ha tomado fuerza y popularidad en el campo de la robótica al facilitar la implementación de algoritmos robustos para sistemas robóticos de alta complejidad equipado con sensores, actuadores, sistemas de posicionamiento, adquisición y procesamiento de datos y señales.

1.1.6 Estimación de Parámetros

En un sistema de escaneo tridimensional que dispone de dos grados de libertad existe un gran número de variaciones que afectan a la fidelidad de la imagen reconstruida. Es decir, existen desviaciones espaciales “rotacionales y traslacionales”, algunos de estos más notorios que otros, como lo son las traslaciones producto de las características físicas de los dispositivos y la construcción del sistema. Dichas desviaciones se deben corregir en la mayor magnitud posible. Para esto, existe el modelo cinemático que es una herramienta matemática que describe los movimientos mecánicos de cualquier sistema móvil, este contempla las desviaciones y errores espaciales propias del prototipo mecánico [20]. La estimación de parámetros es el proceso en el que se realiza el escaneo de una escena netamente plana “suelo o pared” donde, probablemente existan errores de reconstrucción y se compara con un plano referencia. Mediante el método de error medio cuadrado y usando el modelo cinemático y un algoritmo iterativo en el cual se maneja una función de costo “J” con la cual se busca obtener el mínimo error posible y la función de costo tienda a cero, para obtener parámetros de error espacial aplicados al modelo cinemático con lo que se obtendrá un modelo preciso calibrado para obtener datos de reconstrucción más fieles a la realidad.

(23)

Capítulo 1. Reconstrucción 3D con LiDAR 2D 9

Tesis. Ingeniería Electrónica, 2019. 9

1.2 Estado del arte

En la literatura se encuentran trabajos sobre la reconstrucción 3D basada en sensores 2D LiDAR [21], [22]. Algunos, no obstante, ciertostrabajos reportados no usan el proceso de calibración como un método para mejorar las nubes de puntos. Algunos autores han detectado cero desviaciones de referencia y desviaciones angulares con respecto a la información del fabricante, corrigiendo los errores de medición mediante experimentos de laboratorio como en [23]. No obstante, esta idea implica la necesidad de tener unas

condiciones de laboratorio adecuadas para los elementos, un error milimétrico puede generar una mala calibración. Otros autores utilizan diferentes técnicas y objetivos para modificar los parámetros de ajuste. La mayoría de ellos parten de un conjunto de parámetros de calibración extrínsecos inexactos medidos a mano, que mediante algoritmos iterativos actualizar los parámetros de calibración comparando datos de escaneo y un entorno real.

(24)

Capítulo 1. Reconstrucción 3D con LiDAR 2D 10

Tabla 2. Proceso de calibración en sistemas de cámara 3D

Fuente:[31]

Sensor Objetivo de

calibración

Titulo referencia

Hokuyo UBG-04LX-F0 y Chameleon CMLN13S2M

Bandas móviles en blanco y negro.

Escena planar

An analytical least-squares solution to the line scan LIDAR-camera extrinsic calibration problem [24] Hokuyo UTM30LX-EX pequeña habitación con escaleras

Construction and Calibration of a Low-Cost 3D Laser Scanner with 360 Field of View for Mobile Robots.

[25]

Hokuyo UTM-30LX Boresight Calibration of Construction Misalignments for 3D Scanners Built with a 2D Laser Rangefinder

Rotating on Its Optical Center

[26]

Hokuyo UTM-30LX simple, sin objetivo especifico

Full-DOF Calibration of a Rotating 2-D LIDAR with a Simple Plane Measurement

[30]

1.3 Descripción del Problema y Justificación

(25)

Capítulo 1. Reconstrucción 3D con LiDAR 2D 11

Tesis. Ingeniería Electrónica, 2019. 11

aplicaciones de escaneo tridimensional de elementos y reconstrucción de escenarios para sistemas en tierra.

Aunque comercialmente existen un gran número de unidades disponibles para la reconstrucción tridimensional de escenarios en tierra empleando tecnología LiDAR, su acceso se ve limitado por sus altos costos de adquisición como lo es el Velodyne VLP-32C [39] cuyo costo ronda los 8,000 USD y su baja accesibilidad dado que han sido fabricados con propósitos comerciales específicos, lo que implica un acceso limitado a su información y uso.

Dicho lo anterior, se encuentra la necesidad de sistemas de adquisición a base de dispositivos de bajo costo. Como solución a esto se desarrolló un sistema compuesto de motores genéricos y un sensor LiDAR de bajo costo, capaz de trabajar en una gran variedad de campos de acción, brindar facilidad de operabilidad y portabilidad. Es decir, con relación al Velodyne este sistema abarca más áreas del conocimiento e investigación, es fácil de maniobrar y es fabricado con dispositivos de más bajo costo.

1.4 Objetivos

1.4.1 Objetivo General

▪ Desarrollar un sistema de adquisición 3D de bajo costo a partir de un sensor LiDAR 2D y un dispositivo rotacional de dos grados de libertad.

1.4.2 Objetivos Específicos

▪ Integrar los dispositivos de hardware para manipular el movimiento controlado del sensor LiDAR 2D en dos grados de libertad: Inclinación y rotación

▪ Desarrollar un software de sincronización entre la unidad de rotación y el sensor láser para la adquisición y generación de nubes de puntos tridimensionales.

▪ Desarrollar un método de calibración automático que sintonice los parámetros del modelo del sistema.

▪ Validar experimentalmente el desempeño de los algoritmos de adquisición y calibración en función de parámetros de error espacial en escenas de referencia.

1.5 Metodología

(26)

Capítulo 1. Reconstrucción 3D con LiDAR 2D 12

desplazamientos angulares. Para posteriormente implementar un algoritmo de calibración que optimice la reconstrucción tridimensional a partir de una estimación de parámetros. Todo esto obedeciendo al diagrama expuesto en la Figura 6.

Figura 6. Diagrama de flujo del desarrollo del sistema de reconstrucción. Fuente: Autor En la primera etapa se diseñó y construyó el hardware del sistema compuesto por dos motores paso a paso, un microcontrolador con conexión USB y un sensor Láser 2D. A partir de esta estructura se procedió con el modelamiento cinemático del sistema, de manera que puedan trasladarse las mediciones del Láser con las variaciones rotacionales sobre un punto de referencia específico. Comenzando con el software de adquisición empleando ROS y el modelo cinemático, se efectuó una estimación de parámetros que sintonice la mejor precisión de la nube de puntos sobre un plano de referencia.

Durante la segunda etapa del proyecto, se estableció un método de calibración implementado en MATLAB, que permite optimizar la reconstrucción reduciendo al mínimo posible los errores de reconstrucción debido a desviaciones de parametrización. Para satisfacer esto se establecieron escenas de referencia como superficies planas tales como paredes y suelos, y se establecieron algoritmos de optimización de manera que se efectuó una estimación de parámetros del modelo por ajuste de error. Adicionalmente, se evaluaron técnicas simples de reducción de dispersióncomo promedios, filtrado de las nubes de puntos o técnicas de mejoramiento de exactitud. Los resultados de esta sección consisten en un modelo cinemático ajustado para reconstrucción tridimensional y una metodología de calibración para este tipo de aplicaciones de escaneo Laser. Al concluir esta etapa, una interfaz de usuario fue desarrollada para manipular el escáner desde una configuración por celular, evitando el uso de computadores que dificulten las labores en campo.

(27)

Capítulo 1. Reconstrucción 3D con LiDAR 2D 13

Tesis. Ingeniería Electrónica, 2019. 13

a nivel de código, en donde la programación principal no se vea posiblemente afectada por el usuario mismo. Es decir, la programación principal solo será operada a través de una interfaz de usuario, evitando un mal funcionamiento del sistema de adquisición o alteraciones de comandos que afecten el correcto funcionamiento de este.

(28)
(29)

Capítulo 2. Diseño del Sistema

En este capítulo se pueden evidenciar todos los parámetros y criterios de diseño óptimos para la puesta en marcha del proyecto, se dividió el diseño de por etapas de desarrollo del prototipo donde encontramos la capa mecánica, electrónica y de software, todas igual de importantes y necesarias para el correcto funcionamiento del sistema. Estas capas se describirán una a una a continuación:

2.1 Capa Mecánica del sistema

2.1.1

Parámetros de diseño mecánico

Figura 7. conversión de coordenadas cartesianas a esféricas. Fuente: [40]

▪ Movimiento en θ: partiendo de que el sensor LiDAR es bidimensional, se hace necesario inclinar el sensor de manera que se pueda obtener la tercera dimensión para lograr la correcta reconstrucción de la escena.

▪ Movimiento en φ: debido a que la apertura del sensor se limita a 240°, es pertinente rotarlo para obtener el set de datos de los 120° no capturados en la primera toma.

▪ Sistema desmontable y portable: por su nivel generalidad y amplio campo de acción, se diseñó el sistema para ser desmontado con facilidad, y lograr posicionarlo sobre cualquier unidad fija o para ubicarlo sobre un vehículo terrestre no tripulado.

2.1.2 Diseño mecánico

(30)

Capítulo 2. Diseño del Sistema

realizar un empalme directo mediante un acople al motor tipo brida como se muestra en la Figura 8. Sin exponer el eje del motor a algún tipo de daño.

Figura 8. paso a paso del montaje del acople directo. Fuente: Autor. Dispositivos y elementos utilizados

Tabla 3. Dispositivos y elementos mecánicos

ítem características

Motor paso a paso [41]

▪ 1.2 ~ 3.6RPM

▪ Voltaje: 12V

▪ Corriente: 750mA

▪ Relación de reducción: 100

▪ Torque: 9.4Kgf•cm

Lamina de acrílico

▪ Espesor: 5mm

Rodamiento

▪ Diámetro interno: 40mm

(31)

Capítulo 2. Diseño del Sistema

Tesis. Ingeniería Electrónica, 2019. 17

Acople de acero

▪ Diámetro interno: 16mm

▪ Diámetro externo: 40mm

Como se observa en el anexo D las piezas están diseñadas con pestañas y aberturas donde otras pestañas empatan y facilitan la implementación de tornillos y tuercas que ayudan a la culminación, integración y fortaleza de este. También se muestra el diseño de la estructura que alberga el sensor, esta al igual que el diseño del primer motor, tiene pestañas y aberturas, con la única diferencia que se diseñó una abertura de la medida del lente del sensor y otra para dar acceso al puerto USB del sensor.

(32)

Capítulo 2. Diseño del Sistema

Figura 9. montaje del segundo motor.

El diseño mecánico para el prototipo escáner está propuesto en la Figura 10.

Figura 10. Prototipo escáner.Fuente: autor

(33)

Capítulo 2. Diseño del Sistema

Tesis. Ingeniería Electrónica, 2019. 19

2.2 Capa Electrónica del sistema

2.2.1

Parámetros de diseño electrónico

A continuación, se listan los criterios y restricciones para tener en cuenta para el diseño de la capa electrónica del sistema:

• Sistema computo: El sistema de cómputo que controla el sistema debe tener características de almacenaje superior 2 GB debido a que una sola nube de puntos puede llegar a ocupar grandes espacios de memoria. Adicionalmente debe tener características de memoria volátil mayor a 1 GB y procesamiento mayores a 500 MHz estimando la velocidad inferior a los cálculos que debe realizar para las operaciones matriciales. Se prefiere un sistema con conectividad en red para ser accedido vía ssh.

• El sistema debe tener un sistema de alimentación por baterías, de manera que su uso sea portable sin depender de una conexión fija de energía.

• El software del sistema a desarrollar debe ejecutarse y configurarse en sus parámetros básicos desde una interfaz de usuario intuitiva y que pueda ejecutarse en un dispositivo portátil como un celular.

2.2.2 Diseño electrónico

Como respuesta inicial a la sección anterior, y luego de un proceso de evaluación de alternativas se definen los siguientes puntos:

▪ Sistema digital de control: para el sistema de control se seleccionó un sistema maestro esclavo, conformado por un Arduino Nano debido a su facilidad de uso tamaño reducido y bajo costo, el cual opera en un rango de voltajes de 3 a 5 Voltios y una Raspberry pi 3 model B V 1.2 como elemento maestro, debido a su tamaño apropiado y consumo energético de 5V a 2.1A.

▪ Drivers de potencia: debido a que la señal de control ronda los 5V a 40mA en consideración a la alimentación de los motores que operan 12V a 750mA, donde al implementar los niveles de corriente y voltaje de la señal de control, los motores no alcanzarían sus niveles nominales para ejecutar movimiento alguno. Por otro lado, si se implementa los niveles propios de los motores, se corre el riesgo de estropear la unidad de control, puesto que estos niveles sobrepasan los nominales de la misma. Por esto, es necesario escalar estas dos magnitudes mediante drivers de potencia.

(34)

Capítulo 2. Diseño del Sistema

otros. Para el diseño de las pistas se consideró que se manejan tensiones de control pistas delgadas y tensiones de potencia pistas gruesas, esto con la finalidad de prevenir perdidas de corriente por calentamiento.

Figura 11. Diagrama esquemático. Fuente: Autor

Como se muestra en la Figura 11, se tiene conexión directa donde se operan señales de control que como ya se mencionó antes comprenden un rango de 3.3 a 5V. el voltaje de alimentación de 12V y el Arduino se encuentran aislados eléctricamente ya que la diferencia de tensiones arruinaría el Arduino por completo, es por esto que la alimentación es controlada por dos drivers con capacidad de operar hasta 30V. el Arduino envia señales de control a los drivers y estos distribuyen el voltaje de alimentación a los motores de manera que estos operen correctamente.

(35)

Capítulo 2. Diseño del Sistema

Tesis. Ingeniería Electrónica, 2019. 21

Como se muestra en la Figura 12. El diseño PCB consta tanto de pistas delgadas como gruesas, pines de conexión para los componentes y para las borneras, y una capa de serigrafia donde se especifica la ubicación de las componentes desmontables, polaridad del voltaje de potencia, los colores cada línea de los motores entre otros encabezados adicionales.

Dispositivos y elementos utilizados

Tabla 4. Dispositivos y elementos electrónicos

Item Características

Driver “EasyDriver V44 A3967” [42]

▪ Voltaje de funcionamiento: 5V o 3.3V

▪ Voltaje para el motor:7-30V

▪ Control ajustable de corriente:150mA-750mA/phase

Arduino Nano [43]

▪ Velocidad de procesamiento 16MHz

▪ Interfaz: USB

▪ 14 entradas/salidas digitales (incluye 6 salidas PWM)

▪ 8 entradas análogas

▪ 32 KB de memoria Flash

▪ Alimentación: 7-12V

Raspberry Pi [44]

▪ Velocidad de procesamiento 1.4 GHz

▪ 1 GB LPDDR2 SDRAM

▪ 4 puertos USB 2.0

▪ Cabezal GPIO de 40 pines extendido

▪ Gigabit Ethernet

Placa personalizada

▪ 2 campos para drivers “EasyDriver V44 A3967”

▪ 1 campo para Arduino Nano

▪ 1 entrada 12V

▪ 2 salidas de voltaje para motor paso a paso

(36)

Capítulo 2. Diseño del Sistema

La capa electrónica del sistema contempla todos aquellos dispositivos “Drivers, microcontroladores, etc.” Utilizados de manera específica para el cumplimiento de las tareas relacionadas con esta capa, en la Figura 13. Se observa el montaje electrónico completo sobre una placa diseñada exclusivamente para este sistema.

Figura 13. Unidad controladora de movimiento. Fuente: autor

(37)

Capítulo 2. Diseño del Sistema

Tesis. Ingeniería Electrónica, 2019. 23

Figura 14. Diagrama de flujo del software en el Arduino Nano. Fuente: Autor

2.3 Capa de Software del sistema

2.3.1 Diseño del sistema de reconstrucción

2.3.1.1 Parámetros de diseño

A continuación, se tiene un listado de requerimientos y criterios tomados en cuenta para el diseño de la capa de software del sistema:

▪ ROS: el Robotic Operative System es importante en el funcionamiento de esta capa pues, debido a que este es un marco de trabajo ideal para diseñar e implementar software de realización de tareas propias de un mecanismo robótico. B

▪ El sistema operativo montado en el sistema de cómputo debe contar con características compatibles con sistemas basados en Linux, ya que el ya mencionado ROS requiere este tipo de sistemas, para este caso se implementó

(38)

Capítulo 2. Diseño del Sistema

(https://www.raspberrypi.org/downloads/raspbian/) el cual es un sistema operativo para Raspberry basado en Linux.

▪ Protocolo de comunicación serial USB: indispensable para comunicar el sistema de cómputo y los drivers, de este modo este protocolo se encarga de convertir una cadena de caracteres a dos señales de control recibidas por los drivers para la locomoción de los motores.

2.3.1.2 Nodo de reconstrucción en ROS

En términos del ROS, un nodo es un proceso que cumple una tarea específica. Los nodos en ROS se desarrollaron principalmente para aislar tareas de distintas funciones y capacidades, con esto dar la facilidad de aislar también los errores y dar una correcta y rápida solución a los mismos. Para que un sistema robótico implementado en ROS es necesario disponer de dos o más nodos, donde cada uno de ellos realizara una tarea específica y completa [45].

En este sistema en especial se utilizaron dos nodos urg_node que es un nodo que controla de los escáneres laser del LiDAR. Es decir, sin la utilización de este nodo no se podría acceder a la información tomada desde el sensor. Y el nodo scan que es el encargado de la lectura de los datos tomado por el sensor LiDAR, el software se suscribe a este nodo lee los datos en coordenadas esféricas y los procesa para convertirlos a coordenadas cartesianas, para su posterior manejo en un programa de graficación en 3D.

2.3.1.3 Interfaz de Usuario

(39)

Capítulo 2. Diseño del Sistema

Tesis. Ingeniería Electrónica, 2019. 25

2.3.2 Modelo Cinemático del Sistema

Figura 15. diagrama del modelo. Fuente: [31]

El modelo cinemático es una herramienta matemática, cuya función es describir los movimientos de cada una de las componentes de un sistema mecánico en conjunto, en este caso el sistema mecánico está representado en la Figura 15. Para este sistema mecánico propuesto se tiene un modelo cinemático que abarca características físicas propias de cada componente como la traslación, dada por la longitud existente entre el láser del sensor y el eje del primer motor y la distancia entre el primer motor y la base del sistema. Y la rotación, dada por los movimientos rotacionales ocasionados por los motores. En el modelo cinemático también se contemplan errores espaciales implícitos en la construcción del sistema. El modelo esta dado por matrices de rotación y traslación como lo muestra la siguiente ecuación, vista como un producto M × L, donde L es la matriz de entrada (𝑋𝑖, 𝑌𝑖, 𝑍𝑖, 1).

( 𝑋𝑜 𝑌𝑜 𝑍𝑜 1 ) = (

1 0 0 0

0 cos (𝑝𝑖𝑡𝑐ℎ) −sin (𝑝𝑖𝑡𝑐ℎ) 0 0 sin (𝑝𝑖𝑡𝑐ℎ) cos (𝑝𝑖𝑡𝑐ℎ) 0

0 0 0 1

) ∗ (

cos (φ) −sin (φ) 0 0 sin (φ) cos (φ) 0 0

0 0 1 0

0 0 0 1

) ∗ (

cos (Ѱ) 0 sin (Ѱ) 0

0 1 0 0

−sin (Ѱ) 0 cos (Ѱ) 0

0 0 0 1

)

∗ (

1 0 0 0

0 cos (𝜃) −sin (𝜃) 0 0 sin (𝜃) cos (𝜃) 0

0 0 0 1

) ∗ (

1 0 0 𝑡𝑥 0 1 0 𝑡𝑦 0 0 1 𝑡𝑧 0 0 0 1

) ∗ ( 𝑋𝑖 𝑌𝑖 𝑍𝑖 1 )

Resumidas de la siguiente manera:

( 𝑋𝑜 𝑌𝑜

𝑍𝑜

) = ( 𝑀𝑅𝑌 )* ( 𝑀𝑅𝑍 )* ( 𝑀𝑅𝑋 ) ∗ ( 𝑇𝑋,𝑌,𝑍 ) ∗ (

𝑋𝑖

𝑌𝑖

𝑍𝑖

)

(40)

Capítulo 2. Diseño del Sistema

las desviaciones en esta rotación. La matriz MRX es una matriz de rotación en el eje X donde se contemplan la rotación y de parámetro de entrada el ángulo de rotación . La matriz Tx,y,z corresponde a las desviaciones lineales sobre cada uno de los ejes comprendidos en el plano cartesiano.

2.3.3 Reducción de distorsión

2.3.3.1 Caracterización del Sensor

El sensor utilizado para este proyecto fue el Hokuyo mostrado en la Figura 2.A con las características expuestas en la Tabla 1. El sensor entrega un arreglo de datos que corresponden a las medidas tomadas dentro de los 240° de vista del sensor. Como se muestra en la Figura 16, el primer dato de este arreglo se encuentra en 120° y el último dato en -120° tomando como referencia el segmento en rojo el cual representa el cruce por 0.

Figura 16. descripción haz de luz LiDAR. Fuente: autor

2.3.3.2 Mejoramiento de precisión

(41)

Capítulo 2. Diseño del Sistema

Tesis. Ingeniería Electrónica, 2019. 27

2.3.3.3 Distorsión debida a la incertidumbre

En el sistema mecánico existen gran cantidad de variables consecuencia de su construcción que de un modo u otro afectarán en la toma de datos del sensor. Es decir, no existe solución mecánica para estas desviaciones implícitas en el sistema, en donde el sensor no estaría totalmente nivelado en ninguno de los tres ejes del plano. Por lo tanto, estas desviaciones imperceptibles al ojo humano se vieron reflejadas como distorsiones en la reconstrucción de las imágenes tridimensionales, en donde cualquier superficie plana presentaba curvaturas y formas anormales, disminuyendo la fidelidad y calidad de cada reconstrucción tomada.

2.3.3.4 Estimación optima de los parámetros de sistema

(42)
(43)

Capítulo 3. Resultados Experimentales

3.1 Implementación Electrónica del sistema

Para la implementar la capa electrónica del sistema se diseñó una placa de doble cara para facilitar el menor tamaño posible de la misma, teniendo en cuenta la creación de pistas gruesas para evitar calentamiento de estas debido a la potencia manejada por cada uno de los motores y una correcta distribución de las pistas que transportan las señales de control desde la unidad de control que en este caso es un Arduino Nano hasta los drivers de los motores.

Figura 17. Paso a paso construcción placa de control. Fuente: autor

En la Figura 17 se observa la construcción paso a paso de la placa controladora de los motores. En donde se implementaron pin header fila hembra en cada una de las ranuras donde se posicionan los componentes, esto para tener la posibilidad de extraer o reemplazar los componentes. Además, se implementaron borneras en las pistas que conducen potencia, con la finalidad de obtener un sistema de acople removible y robusto.

3.2 Interfaz de Usuario

(44)

Capítulo 3. Resultados Experimentales 30

Figura 18. diseño de página web mediante framework Flask. A) interfaz de escaneo. B) Menú principal. Fuente: autor

3.3 Fabricación del Sistema de reconstrucción

En las primeras fases de desarrollo del proyecto, se comenzó con la idea de obtener un sistema de reconstrucción de un grado de libertad, de este modo realizar una correcta caracterización de los elementos utilizados y obtener la resolución de los motores y corroborar las características del sensor. Tal y como se muestra en la Figura 19.

(45)

Capítulo 3. Resultados Experimentales 31

Tesis. Ingeniería Electrónica, 2019. 31

De esta implementación se determinó que era necesario realizar algoritmos de calibración de datos, ajustar precisión del sensor y la implementación de un modelo cinemático para corregir las distorsiones causadas por los errores espaciales del sistema.

Al contemplar la apertura del haz de luz del sensor, se notó que existen 120° que el sensor no captura datos consecuencia de construcción propias de el mismo. Debido a esto se adicionó un segundo motor en la base del sistema, para dar rotación al sensor y realizar una segunda captura de aquellos datos no tomados en la primera. El resultado de esto se muestra en la Figura 10.

3.4 Resultados de calibración del sistema

Figura 20. A) imagen sin calibrar, B) imagen calibrada, C) superposición de la imagen calibrada y no calibrada. D) puerta de acceso al laboratorio de software Fuente: autor En la Figura 20.A se tiene una imagen que contiene tres paredes, una puerta, y dos botes de basura como aparece en la imagen de la Figura 20.D, donde se evidencia una curvatura en las paredes laterales a razón de que esta imagen no se encuentra calibrada. En la Figura 20.B se puede observar la misma imagen que en la Figura 20.A, en esta ocasión tomando los datos y calibrarlos con ayuda del modelo cinemático del sistema. En la Figura 20.C se encuentra una superposición de la Figura 20.A y Figura 20.B. Esta representa un contraste en donde la imagen en rojo constituye la reconstrucción sin calibrar y la azul la reconstrucción calibrada, haciéndose evidente el efecto de la calibración de los datos para obtener un resultado más fiel a la realidad.

(46)

XYZ(-Capítulo 3. Resultados Experimentales 32

0.88m,2,214m,2.118) y su correspondiente en la nube de puntos roja ubicado en el punto XYZ (-0,3632m,2.27m,2.27m). para obtener la desviación de la imagen calibrada con respecto a la imagen descalibrada usamos la siguiente ecuación para distancia entre dos puntos tridimensionales.

𝐴𝐵 = √(𝑋2− 𝑋1)2+ (𝑌2− 𝑌1)2+ (𝑍2− 𝑍1)2

Al usarla tenemos que la desviación es de 0.7301m el cual es un indicador de que el proceso de calibración es importante y necesario para obtener una reconstrucción fidedigna y real a la imagen original.

Otro resultado de la calibración se muestra a partir del escaneo de una superficie plana, como en este caso el suelo. En donde se evidencia claramente el nivel de desviación entre la nube de puntos azul “calibrada” y la nube de puntos de puntos roja “descalibrada” como se ilustra en la Figura 21 en donde al tomar la dispersión en Z tenemos que la grafica azul tiene una varianza de 0.000204 metros, por otro lado la grafica roja tiene una varianza de 0.0043 metros. la varianza es un indicador de la desviación de un arreglo de datos con respecto a su media, en donde a menos varianza menor desviación habrá entre sus datos. Es decir, la varianza de ambas graficas nos demuestra que la calibración de los datos es optima y mejora la calidad de la nube de puntos.

(47)

Capítulo 3. Resultados Experimentales 33

Tesis. Ingeniería Electrónica, 2019. 33

3.5 Resultados de reconstrucción

3.5.1 Test 1 de reconstrucción en interiores (Laboratorios de Ingeniería)

Figura 22. A) reconstrucción tridimensional de un pasillo. B) pasillo de laboratorios de

ingeniería mecánica. Fuente: autor

A continuación, en la Figura 22.A se puede apreciar la reconstrucción de un recinto cerrado como lo es el pasillo presentado en la Figura 22.B Donde, es perceptible la presencia de un tablero a la izquierda, al igual que la imagen de una columna, los casilleros no se aprecian en la reconstrucción ya que la columna a la derecha hace sombra sobre estos impidiendo que en sensor tome datos de ellos.

3.5.2 Test 2 de reconstrucción en exteriores (Campus Unibague)

(48)

Capítulo 3. Resultados Experimentales 34

En la Figura 23.A, se puede observar una escalera dos paredes, la parte interior del pasillo de acceso al bloque, la abertura de un ventanal en el segundo piso, un árbol, arbustos y un camino de piedras. Tal y como corresponde a la imagen vista en la Figura 23.B.

3.5.3 Test 3 de reconstrucción en diferentes intensidades de Luz (Campus

Unibague)

(49)

Capítulo 3. Resultados Experimentales 35

Tesis. Ingeniería Electrónica, 2019. 35

3.6 Comparación con otro sistema

Una vez finalizada la estimación de los parámetros, se realizó un proceso de comparación. El proceso consistió en escanear un objeto de referencia con un segundo escáner 3D desde distancias diferentes para comparar ambas nubes de puntos reconstruidas.

El Kinect V2 fue elegido el segundo escáner, ya que es un sistema de fácil calibración y bajo coste. Para ello, se realizaron mediciones cada 50 centímetros entre 0,5 y 4,5 metros respecto al objeto de referencia. El objeto de referencia fue fabricado cortando una ventana cuadrada en una ventana de profundidad de 50 centímetros de sección con un cortador láser sobre una superficie de madera, la Figura 25 muestra un ejemplo de una reconstrucción en 3D del objeto de referencia. con ambos sistemas. El Kinect V2 tiene una limitación en los ángulos de apertura y la gama, 60 grados para el ángulo vertical y 70 grados para el horizontal con un rango R: 0.5 > R4.5 metros. Por otro lado, este sistema basado en LiDAR tiene una apertura horizontal de 240 grados y 360 grados para la apertura vertical con un rango R: 0,02 > R5,6 metros. Además, las reconstrucciones en 3D con el sensor LiDAR presentaron mucho menos medición de ruido en las nubes de puntos generadas [31].

(50)

Capítulo 3. Resultados Experimentales 36

(51)

Conclusiones y Recomendaciones

4.1 Conclusiones

El presente informe documenta las diferentes etapas de diseño, implementación y validación de un sistema de reconstrucción 3D. Se logró obtener un sistema mecánico de dos grados de libertad conformado por dos motores y un sensor LiDAR 2D, en donde existe un conjunto de hardware conformado por un microcontrolador que contiene un protocolo programado para dar movimientos sincronizados de inclinación y rotación al sensor. Asimismo, se realizó un modelamiento del sistema en torno a la obtención de parámetros de error espacial, luego de obtener estos parámetros se sometió el modelo cinemático a un algoritmo iterativo que calibrara estos parámetros y así obtener una nube de puntos más fiel a la realidad. Paralelo a esto se desarrolló un software de captura procesamiento y publicación de los datos proporcionados por el sensor LiDAR y un sistema electrónico de control de locomoción de los motores que dan rotación e inclinación al sensor, mediante el cual se tiene en cuenta la lectura del movimiento síncrono de los motores. Por último, se llevaron a cabo pruebas de campo donde se adquirieron datos en distintos escenarios como lo son espacios abiertos y cerrados, en distintas condiciones de iluminación ambiental tanto en la noche como en el día. De los resultados expuestos en el capítulo 3 se puede concluir que los algoritmos de adquisición y calibración funcionan correctamente, teniendo como resultado reconstrucciones fieles a la realidad.

Según los resultados expuestos las pruebas de distintas intensidades de luz, la calidad de la nube de puntos aumenta a medida que disminuye la intensidad de luz de la escena a escanear. En casos extremos con altas temperaturas el sensor LiDAR falla temporalmente impidiendo la toma de datos e interrumpiendo el proceso de adquisición y procesamiento de estos mismos. Adicionalmente se evidenció que, en las escenas con mayor incidencia de luz, las reconstrucciones incrementan su dispersión debido al ruido inducido en el LiDAR. Por lo tanto, en el caso del sensor Hokuyo empleado en este proyecto, son las escenas en interiores, o en exteriores en horarios nocturnos las situaciones con mejores condiciones para realizar los escaneos 3D.

(52)

Conclusiones y recomendaciones

4.2 Recomendaciones

A continuación, una serie de recomendaciones alusivas al proyecto y sus funcionalidades

▪ mejoras en el protocolo de comunicación, con la finalidad de obtener un algoritmo más reducido y preciso.

▪ Mejorar la interfaz gráfica de manera que el sistema no inicialice si el usuario ingreso mal uno o varios datos requeridos por el mismo.

▪ Cambiar la fuente de alimentación las amigable con el medio ambiente y duradera como una batería LiPo.

▪ Optimizar el algoritmo de calibración de parámetros para obtener una nube de puntos más fiel a la realidad.

▪ Por último, optimizar el algoritmo de adquisición y reconstrucción de manera que el proceso de escaneo sea de menor duración.

4.3 Aportes

▪ Participación en la categoría investigación en curso en el XVI Encuentro departamental de semilleros de Investigación RedColsi Nodo Tolima 2018 en la ciudad de Ibagué, Tolima. Fecha: 18 y 19 de mayo de 2018

▪ Participación en la categoría investigación en curso en el XVII Encuentro departamental de semilleros de Investigación RedColsi Nodo Tolima 2019 en la ciudad de Honda, Tolima. Fecha: 11 de mayo de 2018

▪ Participación en The First International Conference on Applied Informatics en la ciudad de Bogotá, Cundinamarca. Fecha: 1 de noviembre de 2018

▪ Participación en 42ª Muestra Estudiantil de Trabajos de Ingeniería Electrónica en la universidad de Ibagué, ciudad de Ibagué, Tolima. Semestre 2018B

▪ Participación en 43ª Muestra Estudiantil de Trabajos de Ingeniería Electrónica en la universidad de Ibagué, ciudad de Ibagué, Tolima. Semestre 2019ª

(53)

Conclusiones y recomendaciones

(54)
(55)

Referencias Bibliográficas

[1] J. Levinson et al., “Towards fully autonomous driving: Systems and algorithms,” in 2011 IEEE Intelligent Vehicles Symposium (IV), 2011, pp. 163–168.

[2] C. Reymann and S. Lacroix, “Improving LiDAR point cloud classification using intensities and multiple echoes,” in 2015 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 2015, pp. 5122–5128.

[3] M. G. Ocando, N. Certad, S. Alvarado, and A. Terrones, “Autonomous 2D SLAM and 3D mapping of an environment using a single 2D LIDAR and ROS,” in 2017 Latin American Robotics Symposium (LARS) and 2017 Brazilian Symposium on Robotics (SBR), 2017, pp. 1–6.

[4] A. Wehr and U. Lohr, “Airborne laser scanning—an introduction and overview,” ISPRS J. Photogramm. Remote Sens., vol. 54, no. 2–3, pp. 68–82, Jul. 1999.

[5] M. Dassot, T. Constant, and M. Fournier, “The use of terrestrial LiDAR technology in forest science: application fields, benefits and challenges,” Ann. For. Sci., vol. 68, no. 5, pp. 959–974, Aug. 2011.

[6] C. Mallet and F. Bretar, “Full-waveform topographic lidar: State-of-the-art,” ISPRS J. Photogramm. Remote Sens., vol. 64, no. 1, pp. 1–16, 2009.

[7] “Scanning Rangefinder Distance Data Output/URG-04LX-UG01 Product Details | HOKUYO AUTOMATIC CO., LTD.” .

[8] K. Kwak, D. F. Huber, H. Badino, and T. Kanade, “Extrinsic calibration of a single line scanning lidar and a camera,” in 2011 IEEE/RSJ International Conference on Intelligent Robots and Systems, 2011, pp. 3283–3289.

[9] H. F. Murcia, “Memories of Specialized Research Stay LAAS/CNRS,” 2017.

[10] I. García-Gómez, M. Fernández de Gorostiza, A. Mesanza Moraza, and A. M. Moraza, “Láser escáner y nubes de puntos. Un horizonte aplicado al análisis arqueológico de edificios,” Arqueol. la Arquit., vol. 0, no. 8, pp. 25–44, Dec. 2011.

[11] R. B. Rusu and S. Cousins, “3D is here: Point Cloud Library (PCL),” in 2011 IEEE International Conference on Robotics and Automation, 2011, pp. 1–4.

[12] “rapidlasso GmbH | fast tools to catch reality.” . [13] “LAStools | rapidlasso GmbH.” .

(56)

Conclusiones 42

[16] “Drone Inspection : UAV-Photogrammetry Inspection - Delair Tech.” .

[17] “Emergency Mapping : Professional UAVs for Aerial Mapping - Delair Tech.” . [18] A. Hornung, K. M. Wurm, M. Bennewitz, C. Stachniss, and W. Burgard, “OctoMap: an efficient probabilistic 3D mapping framework based on octrees,” Auton. Robots, vol. 34, no. 3, pp. 189–206, Apr. 2013.

[19] “ROS.org | About ROS.” [Online]. Available: https://www.ros.org/about-ros/. [Accessed: 09-May-2019].

[20] H. Zhuang, Z. S. Roth, and F. Hamano, “A complete and parametrically continuous kinematic model for robot manipulators,” IEEE Trans. Robot. Autom., vol. 8, no. 4, pp. 451– 463, 1992.

[21] J. Morales et al., “Design and development of a fast and precise low-cost 3D laser rangefinder Navegación de un robot móvil sobre terreno irregular con contacto de su brazo con el suelo View project Design and Development of a Fast and Precise Low-Cost 3D Laser Rangefinder C,” pp. 621–626, 2011.

[22] D. Klimentjew, M. Arli, and J. Zhang, “3D Scene Reconstruction Based on a Moving 2D Laser Range Finder for Service-Robots.”

[23] C.-S. Park, D. Kim, B.-J. You, and S.-R. Oh, “Characterization of the Hokuyo UBG-04LX-F01 2D laser rangefinder,” in 19th International Symposium in Robot and Human Interactive Communication, 2010, pp. 385–390.

[24] C. X. Guo and S. I. Roumeliotis, “An analytical least-squares solution to the line scan LIDAR-camera extrinsic calibration problem,” in 2013 IEEE International Conference on Robotics and Automation, 2013, pp. 2943–2948.

[25] J. L. Martínez, J. Morales, A. J. Reina, A. Mandow, A. Pequeño-Boter, and A. García-Cerezo, “Construction and Calibration of a Low-Cost 3D Laser Scanner with 360 Field of View for Mobile Robots.”

[26] J. Morales, J. Martínez, A. Mandow, A. Reina, A. Pequeño-Boter, and A. García-Cerezo, “Boresight Calibration of Construction Misalignments for 3D Scanners Built with a 2D Laser Rangefinder Rotating on Its Optical Center,” Sensors, vol. 14, no. 11, pp. 20025– 20040, Oct. 2014.

[27] Y. Zeng et al., “An Improved Calibration Method for a Rotating 2D LIDAR System,” Sensors, vol. 18, no. 2, p. 497, Feb. 2018.

(57)

Conclusiones 43

Tesis. Ingeniería Electrónica, 2019. 43

[30] J. Kang and N. L. Doh, “Full-DOF Calibration of a Rotating 2-D LIDAR with a Simple Plane Measurement,” IEEE Trans. Robot., vol. 32, no. 5, pp. 1245–1263, Oct. 2016. [31] H. Murcia, M. Monroy, and L. Mora, “3D Scene Reconstruction Based on a 2D Moving LiDAR,” p. 15, 2018.

[32] M. J. Lato, M. S. Diederichs, and D. J. Hutchinson, “Bias Correction for View-limited Lidar Scanning of Rock Outcrops for Structural Characterization,” Rock Mech. Rock Eng., vol. 43, no. 5, pp. 615–628, Sep. 2010.

[33] C. E. Blenkinsopp, M. A. Mole, I. L. Turner, and W. L. Peirson, “Measurements of the time-varying free-surface profile across the swash zone obtained using an industrial LIDAR,” Coast. Eng., vol. 57, no. 11–12, pp. 1059–1065, Nov. 2010.

[34] C. Liu and Y. Zhang, “3D Trajectory Reconstruction from Monocular Vision Based on Prior Spatial Knowledge,” IEEE Sens. J., vol. 16, no. 3, pp. 817–822, 2016.

[35] T. Saito et al., “Using airborne LiDAR to determine total sapwood area for estimating stand transpiration in plantations,” Hydrol. Process., vol. 29, no. 24, pp. 5071–5087, Nov. 2015.

[36] K. Richter, H.-G. Maas, P. Westfeld, and R. Weiß, “An Approach to Determining Turbidity and Correcting for Signal Attenuation in Airborne Lidar Bathymetry,” PFG – J. Photogramm. Remote Sens. Geoinf. Sci., vol. 85, no. 1, pp. 31–40, Feb. 2017.

[37] R. Zhou, W. Jiang, W. Huang, B. Xu, and S. Jiang, “A Heuristic Method for Power Pylon Reconstruction from Airborne LiDAR Data,” Remote Sens., vol. 9, no. 11, p. 1172, Nov. 2017.

[38] T. Jones, L. Marzen, and A. Chappelka, “Mapping, Modeling, and Estimating Tree Measurements of Urban Tree Canopy Structure Using Terrestrial LiDAR Scanning,” Pap. Appl. Geogr., vol. 2, no. 2, pp. 236–242, Apr. 2016.

[39] “Ultra Puck VLP-32C.” [Online]. Available: https://velodynelidar.com/vlp-32c.html. [40] “Motores Paso a Paso: Motor paso a paso con reductor 1.2 ~ 3.6RPM.” [Online]. Available: https://didacticaselectronicas.com/index.php/elementos- electromecanicos/motores-y-solenoides-1/motores-paso-a-paso/motorreductor-1-2-3- 6rpm-motorreductor-planetario,-motor-paso-a-paso-36gp100bf-42h250b08-step-step-stepper-detail.

(58)

Conclusiones 44

[42] “Tarjeta compatible Nano. Con driver CH340.” [Online]. Available: https://didacticaselectronicas.com/index.php/sistemas-de-desarrollo/tarjeta-compatible-nano-incluye-cable-usb-coma0005-ch340-arduino-nano-detail.

[43] Raspberrypi.org, “Buy a Raspberry Pi 3.” [Online]. Available: https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/#c-find-reseller.

[44] Ros.org, “Nodes - ROS Wiki.” [Online]. Available: http://wiki.ros.org/Nodes.

(59)
(60)
(61)

B. Anexo: Tabla costos LiDAR vs Velodyne

LiDAR Velodyne

Ítem ref. cantidad precio

unitario subtotal cantidad

precio

unitario subtotal Motor paso a

paso

36GP100BF-42H250B08 2 USD 48 USD 96 0 0

Driver paso a

paso V44-A3967 2 USD 3 USD 6 0 0

Arduino Nano 1 USD 6 USD 6 0 0

Tarjeta

personalizada - 1 USD 22 USD 22 0 0

Rodamiento - 1 USD 9 USD 9 0 0

Acoples - 2 USD 8 USD 15 0 0

Raspberry Pi 3 1 USD 61 USD 61 0 0

Sensor LiDAR

URG-04LX-UG01 1

USD 1.000

USD

1.000 0 0

Batería plomo 1 USD 61 USD 61 0 0

Velodyne VLP-32C 0 USD - USD - 1 USD 8.000 USD 8000

total USD

1.276 total

(62)
(63)

C. Anexo: Programación del nodo de

reconstrucción

# -*- coding: utf8 - *-"""

Created on Mon Apr 30 15:58:14 2018 @author: mafe Xaira Mora & Harold """

import serial, time

import rospy, os, sys, time, math

import numpy as np

from std_msgs.msg import String

from sensor_msgs.msg import * from math import radians

import math

import matrices as mat

import urllib, httplib, smtplib, socket, fcntl, struct

from email.MIMEMultipart import MIMEMultipart

from email.MIMEText import MIMEText

from email.mime.base import MIMEBase

from email import encoders

import os.path

path_data = os.getcwd() + "/data/raw"

flag=0 flag2=0 p0=0

X = np.zeros([726,1]) cad=""

arduino = serial.Serial("/dev/ttyUSB0", 9600) time.sleep(2)

class scan(): global flag

def __init__(self):

global sub_scan

(64)

Conclusiones 50

sub_scan = rospy.Subscriber('/scan',LaserScan, self.read_data,

queue_size=1) rospy.spin()

def read_data(self,data):

global flag, flag2, X, sub_scan,p0 #ciclo repetitivo desde aca...

x = np.ones([len(data.ranges),1])

minNPitch=float(minPitch) #convertir de string a decimal

maxNPitch=float(maxPitch)

yaw_lim=360-(float(res_yaw)) #establecer un límite de incremento en yaw

if p0==0:

msj="dec_pitch:"+str(-1*minNPitch) #

arduino.write(msj) #algoritmo para llevar el sensor a la primera posicion

angulo=arduino.readline() #

p0=1 # para ignorar las instrucciones del if en las siguientes iteraciones

x[:,0]=data.ranges flag2 = flag2 +1;

X[:,0] = X[:,0]+x[:,0] #?

samples = 1.0

if flag2 == samples:

#resolucion_motor = round(442.294*angulo);

msj2="inc_pitch:"+res_pitch arduino.write(msj2)

ang = arduino.readline()

pos_dp=ang.find(":") #encontrar la posicion de : en el string de entrada

PIT=ang[0:pos_dp] #tomar el valor de pitch

YA=ang[pos_dp+1:len(ang)-1] # tomar el valor de yaw

YA=float(YA.rstrip('/n')) # eliminar salto de linea

print "Distancia centro: " + str(data.ranges[362])+ " en "+ang x[:,0]= X[:,0]/samples

X = np.zeros([726,1]) flag2 = 0

for i in range(len(data.ranges)): #x[i,0] = x[i,0]*data.ranges[i]

s=str(x[i,0])

ss=s.strip("["+"]") #elimina llaves cuadradas

(65)

Conclusiones 51

Tesis. Ingeniería Electrónica, 2019. 51

aux=mat.rconstr(i,angulo,ss,YA) # reconstruye los datos recibidos del LiDAR

Xf=float(aux[0])*-1 #toma datos de coordenada en X

Yf=float(aux[1]) #toma datos de coordenada en Y

Zf=float(aux[2]) #toma datos de coordenada en Z

dataLine = str(Xf)+"\t"+str(Yf)+"\t"+str(Zf)+"\n"

f.write(dataLine) if angulo >= maxNPitch: flag=1

p0=0 #habilitar el algoritmo de llevar a la primera posicion

arduino.write("pitch:0") #llevar el primer motor a posicion inicial

ang = arduino.readline() angulo=0

arduino.write("inc_yaw:"+res_yaw) ang = arduino.readline()

if YA >=yaw_lim:

arduino.write("pitch:0") ang = arduino.readline()

arduino.write("yaw:0") #llevar el segundo motor a posicion inicial

ang = arduino.readline() sub_scan.unregister()

sendEmail(email,'escaneo Rpi','Escaneo completado

satisfactoriamente...'+'\n'+'Límite Mínimo: '+min+'°'+'\n'+'Límite Máximo:

'+max+'°'+'\n'+'Resolución Inclinación: '+res_pitch+'°'+'\n'+'Resolución

Rotación: '+res_yaw+'°',completeName)

rospy.signal_shutdown("stop spin") # detener ciclo infinito rospy.spin

exit() #cerrar el script

def saveCloud_txt(fileName): global completeName

fileName= fileName + "_" + time.strftime("%d-%m-%y")+ '-'+time.strftime("%I-%M-%S")

completeName = os.path.join(path_data, fileName + '.txt')

f = open(completeName,"a") #opens file with name of "[fileName].txt"

dataFile="%"+"\t"+"X"+"\t"+"Y"+"\t"+"Z"+"\n"

(66)

Conclusiones 52

def sendEmail(toaddr,subject,body,fileData): msg = MIMEMultipart()

fromaddr='[email protected]'

msg['From']=fromaddr msg['To']= toaddr msg['Subject']=subject

msg.attach(MIMEText(body ,'plain')) filename=os.path.basename(fileData) attachment=open (fileData,"rb")

part=MIMEBase('application','octet-stream') part.set_payload(attachment.read())

encoders.encode_base64(part)

part.add_header('Content-Disposition',"attachment; filename=%s"%

filename)

msg.attach(part)

mailer= smtplib.SMTP('smtp.gmail.com',587) mailer.starttls()

mailer.login(fromaddr,"raspberryscan") text=msg.as_string()

mailer.sendmail(fromaddr,toaddr,text) mailer.quit()

if __name__ == "__main__":

fileName =nombre = sys.argv[1] minPitch=sys.argv[2]

maxPitch=sys.argv[3] res_pitch=sys.argv[4] res_yaw=sys.argv[5] email=sys.argv[6]

f = saveCloud_txt(fileName) try:

rospy.init_node('scanner_py') cv = scan()

except rospy.ROSInterruptException:

Referencias

Documento similar

dente: algunas decían que doña Leonor, "con muy grand rescelo e miedo que avía del rey don Pedro que nueva- mente regnaba, e de la reyna doña María, su madre del dicho rey,

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

El quincenario de los frailes de Filipinas, condena para el Archipiélago los propósitos de nivelación jurídica que para todo territorio español, peninsular o ultramarino, se

Las manifestaciones musicales y su organización institucional a lo largo de los siglos XVI al XVIII son aspectos poco conocidos de la cultura alicantina. Analizar el alcance y

Este acercamiento entre Roma y la Gran Bretaña lo atribuía Azara al Padre Ricci, general de los jesuítas (1758-73), quien, siempre ateniéndonos al juicio del agente, había

 Para recibir todos los números de referencia en un solo correo electrónico, es necesario que las solicitudes estén cumplimentadas y sean todos los datos válidos, incluido el

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de