desarrollo de un sistema de percepciÓn para …

101
DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA DETECCIÓN DE CARRIL Y GENERACIÓN DE TRAYECTORIAS PARA VEHÍCULOS AUTÓNOMOS JOSE MIGUEL CORREA SANDOVAL 2140935 MANUEL ALEJANDRO DÍAZ ZAPATA 2130287 UNIVERSIDAD AUTÓNOMA DE OCCIDENTE FACULTAD DE INGENIERÍA DEPARTAMENTO DE AUTOMATICA Y ELECTRONICA PROGRAMA INGENIERÍA MECATRÓNICA SANTIAGO DE CALI 2019

Upload: others

Post on 24-Jun-2022

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA DETECCIÓN DE CARRIL Y GENERACIÓN DE TRAYECTORIAS PARA VEHÍCULOS

AUTÓNOMOS

JOSE MIGUEL CORREA SANDOVAL 2140935

MANUEL ALEJANDRO DÍAZ ZAPATA 2130287

UNIVERSIDAD AUTÓNOMA DE OCCIDENTE FACULTAD DE INGENIERÍA

DEPARTAMENTO DE AUTOMATICA Y ELECTRONICA PROGRAMA INGENIERÍA MECATRÓNICA

SANTIAGO DE CALI 2019

Page 2: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA DETECCIÓN DE CARRIL Y GENERACIÓN DE TRAYECTORIAS PARA VEHÍCULOS

AUTÓNOMOS

JOSE MIGUEL CORREA SANDOVAL MANUEL ALEJANDRO DÍAZ ZAPATA

Proyecto de grado para optar al título de Ingeniero Mecatrónico

Director JUAN CARLOS PERAFÁN VILLOTA

PhD en Ingeniería Eléctrica

Co-Director VÍCTOR ADOLFO ROMERO CANO

PhD en Robótica

UNIVERSIDAD AUTÓNOMA DE OCCIDENTE FACULTAD DE INGENIERÍA

DEPARTAMENTO DE AUTOMATICA Y ELECTRONICA PROGRAMA INGENIERÍA MECATRÓNICA

SANTIAGO DE CALI 2019

Page 3: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

3

Nota de aceptación:

Aprobado por el Comité de Grado en cumplimiento de los requisitos exigidos por la Universidad Autónoma de Occidente para optar al título de Ingeniero Mecatrónico

Jesús Alfonso López Sotelo Jurado

Edgar Francisco Arcos Jurado

Santiago de Cali, 12 de Agosto de 2019

Page 4: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

4

“Sólo podemos ver poco del futuro, pero lo suficiente para darnos cuenta de que hay mucho que hacer.”

Alan Turing

Page 5: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

5

AGRADECIMIENTOS

Agradezco principalmente a mi familia y en especial a mi madre, mi padre y mi hermano por su apoyo incondicional durante todo este tiempo en la universidad. A mis tías por su ayuda y apoyo durante todos mis estudios.

A mi director de proyecto de grado Juan Carlos Perafán y a mi co-director Víctor Adolfo Romero Cano por toda su paciencia, apoyo y disposición durante todo el proceso, por ayudarme y darme tanto ideas como retroalimentación frente a mis ideas durante todo el proyecto. También, un grande agradecimiento al docente Walter Mayor por su ayuda con la explicación e implementación del Filtro de Kalman. A mis compañeros del semillero Ana María Pinto Vargas y Miguel Ángel Saavedra Ruiz, primeramente, por darme la bienvenida junto con los demás miembros al semillero y también por ayudarme a depurar ideas a medida que iban surgiendo.

Manuel Alejandro Díaz Zapata

Dedico mis agradecimientos principalmente a mi familia, a mi madre, mi padre y mi hermano, que siempre han sido un apoyo a lo largo de la carrera y vivieron junto a mi alegrías y momentos difíciles, sin duda, esta meta que hoy se transforma en logro, no hubiese sido posible sin ellos.

También agradezco a mi director de proyecto de grado Juan Carlos Perafán y a mi co-director Víctor Adolfo Romero Cano, por poner frente a mi este proyecto y guiarme durante esta etapa de aprendizaje, que culmina, pero da paso a muchas más.

Jose Miguel Correa Sandoval

Page 6: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

6

CONTENIDO pág.

RESUMEN 14

ABSTRACT 15

INTRODUCCIÓN 16

1. PLANTEAMIENTO DEL PROBLEMA 18

2. JUSTIFICACIÓN 20

3. OBJETIVOS 21

3.1 OBJETIVO GENERAL 21

3.2 OBJETIVOS ESPECÍFICOS 21

4. ANTECEDENTES 22

4.1 SEGUIMIENTO DE CARRIL 22

4.2 PLANEACIÓN DE TRAYECTORIAS 24

4.2.1 Path Planning 24

4.2.2 Maneuver Planning 25

4.2.3 Trajectory Planning 26

5. MARCO TEÓRICO 29

5.1 CARRO AUTÓNOMO 29

5.2 SISTEMAS DE PERCEPCIÓN ROBÓTICA 29

5.3 VISIÓN COMPUTACIONAL 30

5.4 PLANEACIÓN DE TRAYECTORIAS 32

Page 7: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

7

6. SOFTWARE Y HARDWARE UTILIZADO 34

6.1 SOFTWARE UTILIZADO 34

6.1.1 Ubuntu 34

6.1.2 Robot operating system (ROS) 34

6.1.3 Unified Robot Description Format (URDF) 37

6.1.4 Gazebo 38

6.1.5 Open Source Computer Vision Library (Opencv) 39

6.1.6 Python 40

6.2 HARDWARE UTILIZADO 40

6.2.1 Robot Autónomo Uno 40

6.2.2 Computadores utilizados 40

7. RESULTADOS 41

7.1 DESARROLLO DEL SISTEMA DE VISIÓN ARTIFICIAL 41

7.1.1 Recolección de datos 42

7.1.2 Selección y evaluación de algoritmos existentes de detección y seguimiento de carril 42

7.1.3 Desarrollo del módulo para la planeación de trayectorias 62

7.1.4 Solución final 65

7.2 DESARROLLO DE LA SIMULACIÓN 69

7.2.1 Generación del modelo 3D 70

7.2.2 Generación de la descripción URDF 70

7.2.3 Controladores para el entorno virtual en gazebo 76

7.2.4 Simulación del robot Autónomo Uno 79

7.2.5 Integración del sistema de visión artificial con el entorno de simulación 83

Page 8: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

8

7.3 VALIDACIÓN EN UNA PLATAFORMA REAL 85

8. CONCLUSIONES Y TRABAJO A FUTURO 89

REFERENCIAS 91

Page 9: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

9

LISTA DE FIGURAS

Pág.

Fig. 1. (a) Path planning, (b) maneuver planning, (c) trajectory planning (adaptado de Lee and Vasseur (2014)). [27] 24

Fig. 2. Transformada de Hough para líneas. (a) imagen inicial, (b) imagen resultante del gradiente de umbral de la imagen con supresión no máxima, (c) líneas encontradas por Hough, (d) representación de las líneas encontradas en el espacio de Hough [52]. 31

Fig. 3. Detección de ojos y nariz. (a), imagen inicial, (b), detección de la región de ojos usando una característica Haar-like horizontal, (c), detección de la región de nariz usando una característica Haar-like vertical [52]. 32

Fig. 4. ROS Equation. [64] 34

Fig. 5. Representación de los elementos en un robot siguiendo la descripción URDF.[72] 37

Fig. 6. Descripción de los elementos en un joint.[75] 38

Fig. 7. Pipeline del sistema completo 41

Fig. 8. Procedimiento final realizado. 43

Fig. 9. Ubicación del punto (xh,yh) y la línea de horizonte. 44

Fig. 10. Demarcación de carriles, línea de centro y de horizonte. 45

Fig. 11. Comunicación usando el topic ‘/steeringControl’ 46

Fig. 12. Características Haar-Like utilizadas por Chao et al.[91] 51

Fig. 13. Características Haar-Like utilizadas como filtros para la zona izquierda y derecha 51

Fig. 14. a. Imagen original. b. Imagen filtrada 52

Fig. 15. Umbralizaciones mediante el método: a. de Otsu. b. Adaptativo. 53

Fig. 16. a. Escena con sombra. b. Umbralización mediante método de Otsu. c. Umbralización mediante método adaptativo. 53

Page 10: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

10

Fig. 17. a. Resultado de operación AND entre los dos métodos de umbralización. b. Resultado de operación AND aplicando la operación de apertura. 54

Fig. 18. Algoritmo de búsqueda mediante ventanas deslizantes 55

Fig. 19. Resultado de la búsqueda mediante ventanas deslizantes para los carriles izquierdo (azul) y derecho (rojo). 56

Fig. 20. Procedimiento para hallar el área de interés de manera automática. 57

Fig. 21. ROI hallada con base en las demarcaciones de carril. 57

Fig. 22. Resultado de la transformación de perspectiva con base en las demarcaciones de carril. 58

Fig. 23. Transformación de Perspectiva con ROI manual. 58

Fig. 24. Búsqueda de las demarcaciones de carril en la imagen transformada, mediante el método de ventanas deslizantes. 59

Fig. 25. Carril y línea de centro hallados al realizar el ajuste polinómico y la transformada inversa del BEV. 59

Fig. 26. Detección de carril en sombra 60

Fig. 27. Primera aproximación del vector de dirección. 63

Fig. 28. Resultados de la primera aproximación del vector de dirección en curvas hacia la derecha, izquierda y tramo recto. 64

Fig. 29. Resultados de la segunda aproximación del vector de dirección en curvas hacia la derecha, izquierda y tramo recto. 64

Fig. 30. Imagen filtrada con la característica Haar-like vertical. 65

Fig. 31. Carril en BEV luego de ecualización de histograma y filtro promedio 66

Fig. 32. Imagen binaria del carril en BEV. 67

Fig. 33. Centroides que describen las demarcaciones izquierdas y derecha del carril, junto con el carril central hallado. 67

Fig. 34. Vector de dirección para el vehículo visto desde BEV. 68

Page 11: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

11

Fig. 35. Imagen mezclada del carril hallado sobre la imagen original 68

Fig. 36. Prueba del sistema bajo poca luminosidad. 69

Fig. 37. Modelo 3D del robot Autónomo Uno en SolidWorks 70

Fig. 38. Generación del árbol URDF 72

Fig. 39. Exportación del modelo 3D a URDF. 73

Fig. 40. Visualización del modelo URDF en V-Rep 73

Fig. 41. Visualización del modelo completo en el Software Blender 74

Fig. 42. Simulación de la descripción SDF utilizando el software Gazebo. 75

Fig. 43. Estructura de árbol URDF 75

Fig. 44. Controladores base de la clase ros_control. [98] 76

Fig. 45. Definición en el URDF de la interfaz y tipo de controlador para una rueda. 77

Fig. 46. Flujo de trabajo de un controlador. [73] 77

Fig. 47. Flujo de trabajo del gestor de controladores. [73] 78

Fig. 48. Descripción del PID para las uniones de dirección y tracción. 78

Fig. 49. (a) Respuesta del sistema sin controlador. (b) Respuesta del sistema con controlador PI. 79

Fig. 50. Estructura de comunicación del controlador Ackermann con Gazebo 80

Fig. 51. Visualización del modelo en Rviz 80

Fig. 52. Simulación del modelo generado a partir del plugin sw_urdf_export en Gazebo. A) Simulación ejecutando B) Simulación detenida en estado inicial 81

Fig. 53. Visualización del modelo generado en Rviz 82

Fig. 54.Visualización de todos los nodos involucrados en la simulación del robot tipo Ackermann Autónomo Uno. 84

Page 12: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

12

Fig. 55. Simulación completa del sistema 85

Fig. 56. Diagrama de flujo para la conexión cliente-servidor. 86

Fig. 57. Validación del sistema en: (a) Curva hacia la izquierda, (b) Carril recto, (c) Curva hacia la derecha. 87

Fig. 58. Validación del sistema de seguimiento de carril en el robot Autónomo Uno 87

Page 13: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

13

LISTA DE TABLAS pág.

TABLA I 49

TABLA II 62

TABLA III 71

Page 14: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

14

RESUMEN

En el documento presentado a continuación, se consigna el desarrollo de un sistema de percepción que permita a un vehículo autónomo terrestre tipo Ackermann desplazarse en ambientes urbanos, mediante consignas de control generadas a partir de una trayectoria a corto plazo. El trabajo se realizó en cinco etapas: revisión del estado del arte para los sistemas de seguimiento de carril y planeación de trayectorias, selección y comparación de las técnicas existentes, adaptación y evaluación de las técnicas seleccionadas, desarrollo del sistema y, por último, implementación en un entorno simulado y sobre la plataforma física seleccionada el robot Autónomo Uno.

El sistema de precepción desarrollado, para la detección y seguimiento de carril fue realizado utilizando técnicas de visión computacional. El sistema utiliza la técnica de características Haar-Like con el fin de filtrar la imagen y realzar características del carril. Adicionalmente, se utiliza un área de interés (ROI) y se genera una vista superior o vista de pájaro (BEV) sobre la cual se hacen las detecciones del carril del vehículo por medio de ventanas deslizantes. Finalmente, utilizando el filtro de Kalman se añade robustez para la estimación del carril frente a obstáculos.

En la generación de la trayectoria a corto plazo se hace uso de las estimaciones del modelo carril para generar un vector de dirección que corresponde con centro del carril. La trayectoria y el ángulo de giro que el vehículo debe de describir al desplazarse corresponde a este vector. En cuanto al control de la posición y velocidad del vehículo terrestre, se utiliza la cinemática inversa de un robot móvil tipo Ackermann y el controlador proporcional-integrativo, para la prueba de campo y en un entorno simulado, respectivamente.

En los resultados obtenidos durante la prueba de campo se evidenció que el sistema responde acorde a lo esperado la detección y seguimiento del carril bajo diferentes condiciones. Adicionalmente, los sistemas de control de posición y velocidad brindan un resultado aceptable, aunque con presencia de ruido leve en la señal de control. Por otra parte, en la plataforma física se observó un resultado admisible que concluye con un exitoso funcionamiento para el sistema.

Palabras clave: vehículo autónomo, robot terrestre, visión computacional, detección, seguimiento de carril, controlador, filtro de Kalman.

Page 15: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

15

ABSTRACT

This document present, the development of a perception system that enables an Ackermann-type autonomous vehicle move through urban environments using control commands based on short-term trajectory planning. This work was done on five stages: review of the state of the art for lane keeping and trajectory planning systems, selection and comparison of current techniques, adaptation and evaluation of selected techniques, system development and lastly, implementation on a simulated environment and the selected platform used: robot Autónomo Uno.

The perception system created for the lane keeping was based on computer vision techniques. This system uses Haar-like features with the purpose of filtering the image and to enhance lane features. Additionally, a region of interest (ROI) is used to generate a bird’s eye view (BEV) of the lane, which is used to do the detection of the markings using sliding windows. Finally, some robustness against shadows is given to the system by using the Kalman Filter.

For the short-term trajectory generation, the lane model estimations are used to generate a steering vector that points towards the lane center. The trajectory and steering angle that the vehicle must do is given by steering vector. Regarding the vehicle’s position and speed control, inverse kinematics of an Ackermann-type robot and a proportional-integral controller were used for the robot test and simulated test respectively.

The results shown that the lane detection and lane keeping systems work as expected under different circumstances. Additionally, the position and speed control systems executed an acceptable result, although with a slight presence of noise on the control signal. Moreover, on the physical platform, good result was observed; which leads to conclude with a successful functioning system.

Key Words: autonomous vehicle, ground robot, computer vision, lane detection, lane keeping, controller, Kalman filter.

Page 16: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

16

INTRODUCCIÓN

Los vehículos autónomos, son automóviles que han sido construidos o adaptados con sensores, sistemas de procesamiento y de actuación, que les permiten desplazarse sin la intervención de un usuario humano. Estos vehículos se desarrollan con la finalidad de aumentar la seguridad vial, disminuir la accidentalidad y relegar al ser humano de la tarea de conducir.

Para que un vehículo pueda transitar con total autonomía requiere de diferentes sistemas y elementos que puedan trabajar simultáneamente en tiempo real, con precisión y exactitud bajo diferentes condiciones ambientales ligadas a su entorno. El cumplimiento de dichos criterios se traduce en todo un reto para las entidades que investigan y desarrollan sobre este campo.

En particular, uno de los sistemas que requieren del trabajo con mayor exactitud en tiempo real es el seguimiento del carril, ya que junto con el sistema de dirección permiten modificar y corregir la trayectoria de conducción del vehículo, mediante la localización del mismo respecto a su carril y entorno. Es por este motivo que durante casi dos décadas se han enfocado gran cantidad de esfuerzos en el desarrollo de métodos que permitan cumplir con este objetivo de forma eficiente.[1]

En Colombia, se ha visto poco interés y desarrollo en este tipo de tecnologías, debido a las dificultades económicas y de infraestructura presentes en el país, como también debido a la dependencia económica a las energías fósiles, que para el 2016 aportó el 4.4 por ciento del incremento del PBI[2]. Esto se evidencia en la baja adopción y aceptación de las energías renovables aplicadas a los medios de transporte, no obstante, los estudios y el desarrollo en esta área por parte de las grandes potencias mundiales brinda un panorama prometedor, que traería consigo muchas ventajas al territorio colombiano[3], [4], [5].

Es por ello que se plantea desarrollar un sistema de percepción para vehículos que facilite la detección de carril y generación de trayectorias en ambientes urbanos, que pueda servir como software a plataformas que busquen desarrollar vehículos autónomos, con el fin de promover la investigación y desarrollo en esta área a nivel nacional.

Dado lo anterior, el desarrollo del proyecto será realizado en 5 etapas, las cuales son: primero, la investigación descriptiva y comparativa de los métodos existentes para el sistema de navegación y percepción en ambientes urbanos, segundo, la comparación de cada uno, tercero su adaptación y evaluación considerando el

Page 17: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

17

objetivo del sistema final, cuarto el desarrollo del sistema de generación de trayectorias a partir del seguimiento de carril y por último la implementación del sistema en una plataforma física existente. Con el fin de validar la eficiencia de la solución propuesta el desarrollo del sistema se hará utilizando bases de datos existentes enfocadas en este tipo de tareas de conducción autónoma. Finalmente, para facilitar la interfaz entre el software y hardware se hará uso del sistema operativo de robótica (ROS).

Page 18: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

18

1. PLANTEAMIENTO DEL PROBLEMA

Entre los años 1908 y 1927 la empresa conocida como Ford Motor Company (Ford), introdujo al mercado automovilístico el Ford modelo T, primer vehículo producido en serie con completa estandarización e intercambiabilidad de sus partes, en consecuencia para 1923 uno de cada dos vehículos en todo el planeta eran este modelo[6]. Posteriormente los primeros planteamientos de vehículos sin conductores como concepto se dieron en los años 20[7] y a finales de los años 30[8], [9], [10]; lo anterior demuestra que desde la existencia de los automóviles, el ser humano ha concebido la idea de que éstos se conduzcan solos.

Los vehículos autónomos han sido un tema de constante discusión e investigación, principalmente desde la segunda mitad del siglo XX[9]. Recientemente algunas de las potencias mundiales han demostrado tener un mayor desarrollo, ya sea a través de proyectos financiados de manera pública o privada[11], siendo las empresas privadas aquellas que impulsan la mayor parte de la innovación en este campo[4], [10].

Actualmente en Colombia no hay visibilidad de proyectos enfocados a desarrollar este tipo de tecnologías, Toyota[12], José Clopatofsky[13] y Ram Vasudevan[14], resaltan entre las posibles causas la demora en la adopción de vehículos híbridos y la falta de infraestructura necesaria para esta tecnología, así como también la falta de inversión por parte de los gobiernos.

Según un estudio realizado por The non-profit Eno Center for Transportation (Eno)[15], si en Estados Unidos el 90% de los autos que transitan por las carreteras fueran autónomos, se reduciría la accidentalidad anual de seis millones a 1.6 millones, además de reducir la mortalidad por accidentes de tránsito de 33000 a 11300. Durante el 2016 en el territorio colombiano se presentaron en promedio 18 muertes diarias a causa de los accidentes de tránsito, registrando un total de 6800 víctimas fatales en el transcurso del año. Estadísticamente las principales causas de estos accidentes fueron: con un 40.1% exceder el límite de velocidad, romper las normas y señales de tránsito (28.9%) y conducir bajo los efectos del alcohol (9.7%)[16]. Adicional a ello, la entidad RUNT brindó un estimado para el primer semestre del año 2016 del crecimiento en el parque automotor en Colombia, donde se registraron 5.77 millones de vehículos terrestres integrados por carros y remolques[17].

En consecuencia, este panorama presenta una gran posibilidad para la inclusión de vehículos autónomos, ya que propenden por la disminución de la tasa de accidentalidad, además de brindar prestaciones que favorecen a la disminución del

Page 19: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

19

consumo de combustible y reducción del tráfico vehicular como se plantea en el estudio realizado por la organización Eno[15]. También existen beneficios indirectos de la utilización de vehículos autónomos para las zonas urbanas, como el incremento de la capacidad en las autopistas mediante el uso de comunicación vehículo a vehículo (V2V)[3], [5].

Aspectos como: 1.) los grandes avances en la consecución de autonomía de los vehículos, como lo han demostrado empresas como Uber, Tesla, Volvo y Toyota entre otras; 2.) el panorama de la industria automovilística para el 2030 como es mostrado en el estudio de Mackinsey&Company[18] donde se hace evidente el alcance en ventas que tendrán los vehículos autónomos una vez los problemas referentes a tecnología y regulación estén resueltos, estimando que un 50% de los vehículos vendidos sean "altamente" autónomos mientras otro 15% sean "completamente" autónomos; y 3.) la infraestructura vial de los ambientes urbanos del país, motivan de manera contundente el desarrollo de tecnologías para dotar a vehículos con la capacidad de conducción autónoma. Tecnologías como el seguimiento del carril y la generación de trayectorias forman la base para un sistema de navegación autónomo como los ya presentes en algunos vehículos. Con base en ello se formula la pregunta que guiará el desarrollo de la investigación: ¿Cómo generar consignas de control a partir de un sistema de percepción y planeación para un robot autónomo tipo vehículo con ruedas, mientras se desplaza en un ambiente urbano?

Page 20: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

20

2. JUSTIFICACIÓN

Durante los últimos cinco años a nivel mundial se ha estado trabajando en la investigación, prototipado y creación de vehículos autónomos como la siguiente evolución de la forma en que los seres humanos nos transportamos[4]. Para ello se requiere de diferentes sistemas trabajando en conjunto que permitan a un automóvil, ya sea eléctrico o de combustión interna, generar comandos de acción para reaccionar a los cambios en su entorno, mientras realiza la tarea de desplazarse de una distancia entre dos puntos. Los principales sistemas requeridos para el correcto desarrollo de la tarea, son un sistema de percepción, un sistema de planeación de trayectorias y el sistema de accionamiento.

Mediante este proyecto se busca desarrollar el software para percepción y planeación de trayectorias de un vehículo autónomo, como también realizar su posterior validación en una plataforma robótica existente. Esto con el fin de demostrar que este tipo de tecnologías si pueden ser desarrolladas a nivel nacional, como también servir de base para futuros desarrollos que permitan plantar el camino para el primer carro autónomo colombiano.

Page 21: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

21

3. OBJETIVOS

3.1 OBJETIVO GENERAL

Desarrollar un sistema de percepción y planeación de trayectorias para la generación de consignas de control de un vehículo autónomo.

3.2 OBJETIVOS ESPECÍFICOS

Seleccionar y evaluar algoritmos existentes de seguimiento de carril y planeación de trayectorias.

Desarrollar una interfaz entre los algoritmos de seguimiento de carril y planeación de trayectorias.

Demostrar el funcionamiento del sistema en un ambiente simulado

Demostrar el funcionamiento en una plataforma real existente.

Page 22: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

22

4. ANTECEDENTES

4.1 SEGUIMIENTO DE CARRIL

Desde finales del siglo XX se han desarrollado estudios sobre sistemas que permitan disminuir la pérdida de vidas ocasionadas debido a los accidentes de tránsito, además de incrementar la seguridad en las carretas, los cuales son reconocidos como sistemas avanzados de conducción asistida (ADAS). De las principales soluciones planteadas para los ADAS, se encuentran los sistemas de seguimiento de carril (Lane Tracking), que como denota un estudio realizado por S.P. Narote et al. en 2017[1], a lo largo de casi dos décadas se han presentado diferentes avances y problemas asociados a la realización de esta tarea, recopilando 24 publicaciones realizadas entre 1998 y 2017, de las cuales se destacan las más recientes a continuación:

En el 2015 J. Son, H. Yoo, S. Kim, y K. Sohn en su artículo "Real-time illumination invariant lane detection for lane departure warning system" [19] plantean diferentes métodos trabajando en conjunto para realizar la detección del carril, de los cuales se destacan la detección del carril mediante la invariabilidad del color del carril expuesto a diferentes iluminaciones, la selección de región de interés (ROI) adaptativa basada en punto de fuga, Canny Edge Detectión para la detección de bordes y la agrupación de carriles y ajustes del mismo basado en el método de mínimos cuadrados. Aplicando estos métodos en un ambiente simulado obtuvieron un rendimiento rápido y potente para aplicaciones en tiempo real bajo varias condiciones de iluminación debido al cambio del clima (lluvia, niebla, etc.), las luces callejeras y faros de los vehículos. No obstante, cabe resaltar que la detección del carril se dificulta bajo agrietamiento de la vía y marcas de carril borroso.

Un año después N. Madrid, junto con P. Hurtik en "Lane departure warning for mobile devices based on a fuzzy representation of images", [20] presentan un sistema de advertencia de salida de carril a bajo costo para vehículos móviles, el cual es eficiente y asequible para la mayoría de personas. En esta propuesta utilizan el método de la transformada de Hough para la detección de líneas en conjunto con el sistema Fuzzy para la representación de imágenes, el cual presentó mejores resultados que la transformada Hough estándar con el operador Sobel y un comportamiento confiable y preciso para la tarea en tiempo real. Por otra parte, el sistema se vio limitado y proporcionó dificultades bajo trabajo durante la noche y presencia de vehículos blancos en la vía.

Page 23: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

23

A. Mammeri junto con su equipo[21], generaron en el 2016 un artículo dondepresentan un sistema de computación interna para el vehículo capaz de localizarlas líneas del carril y comunicárselas al conductor. Lo cual fue posible detectandoROI´s a través del método Región externa máximamente estable (Blobs MSER),que posteriormente se refina utilizando un algoritmo de computación derefinamiento de tres niveles, además para la detección de líneas en tiempo realaplicaron la transformada probabilística progresiva de Hough (PPTH). Basándoseen los resultados del MSER realizaron la identificación del espacio de color en HSVpara distinguir los colores del carril (blanco y amarillo) con la finalidad de lograr unmejor resultado y como última instancia mediante un filtro de Kalman se sigue latrayectoria de ambas líneas que conforman el carril. La única limitación del sistemase presenta en la detección durante la noche, debido a la densidad del tráfico y lailuminación de la carretera.

Para finalizar Zhu[22], presenta una revisión de diferentes técnicas aplicadas a vehículos inteligentes como detección de carril y carretera, además brinda información relevante sobre los grupos de datos comúnmente utilizados y análisis de rendimiento. De este estudio se encontró que método del ajuste de la línea RANSAC, tiene las tasas más altas de detecciones correctas y menor tasa de error, además que el modelo de línea recta es un modelo simple y efectivo para carreteras de corta distancia o autopistas, en carreteras con caminos curvos las splines son modelos viables para la detección del carril. Sin embargo, la unión de estos modelos es compleja, ya que se requiere de métodos basados en fusión.

Por otra parte, más recientemente se han dado avances en sistemas de detección de carril basados en redes neuronales. Kim y Lee [23] desarrollaron un sistema robusto de detección de carril basado en una mezcla de redes neuronales convolucionales (CNNs) y RANSAC. Donde dependiendo de la complejidad de la escena, el sistema utiliza la CNN para eliminar ruido y extraer características de la imagen que permitan la descripción del carril. Este método resulta en mejores resultados que otros algoritmos formales usando RANSAC y la transformada de Hough.

Xingang et al. [24] proponen “Spatial CNN”, una arquitectura de CNN cuyo objetivo es encontrar relaciones espaciales en la imagen mediante convoluciones ‘slice-by-slice’ o a través de los mapas de características de cada CNN. Mediante este método, en el dataset Cityscapes, logran mejores resultados que ReNet [25] y MRF+CNN [26].

Page 24: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

24

4.2 PLANEACIÓN DE TRAYECTORIAS

Investigaciones en el área de vehículos autónomos han aumentado rápidamente en los recientes años aplicados con diferentes enfoques y áreas del saber, como robótica, ciencias de la computación e ingeniería. En todas estas áreas la toma de decisión en tiempo real es el verdadero reto para la autonomía, la cual se logra mediante métodos de planeación trabajando en conjunto con middleware, sistemas de navegación y actuación de los vehículos [27].

El proceso de planeación autónomo se clasifica en cuatro clases jerárquicas [28], route planning, path planning, Manoeuvre choice y trajectory planning. Este modelo inicial fue reducido disminuyendo a tres niveles de planeación, relegando el route plalning, como se aprecia en Fig. 1. Con base a ello, se presenta el desarrollo de métodos más recientes para cada uno de las clasificaciones.

Fig. 1. Base a ello, se presenta el desarrollo de métodos más recientes para cada uno de las clasificaciones.

(a) Path planning, (b) maneuver planning, (c) trajectory planning (adaptado de Lee and Vasseur (2014)). [27]

4.2.1 Path Planning

Cuando se busca la mejor configuración geométrica para la generación de ruta óptima existen dos métodos principalmente utilizados rapidly-exploring Random Trees (RRTs) [29] y lattice Planners (LP) [30].

Page 25: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

25

LaValle en 1998 desarrolló la técnica de RRTs en la cual se construye una estructura de datos en forma de árbol, que se expande estocásticamente agregando nuevas configuraciones (vértices) en cada iteración. Esta técnica permite viabilidad cinética y en tiempo real, rápida ubicación de espacios libres, técnicas de decisión avanzadas para la verificación de colisión. No obstante, este método presenta algunas dificultades como lo son la generación de trayectorias intermitentes o dentadas, fuerte dependencia de la expansión heurística del vecino más cercano y continua revisión de cada nodo del árbol mientras se realiza la expansión para detectar colisiones.

Ziegler and Stiller en el 2009 desarrollaron el método LP el cual realiza una cuadricula construida por repeticiones de rectángulos, para la discretización de un espacio de búsqueda continuo. Esta cuadricula se genera mediante la repetición de trayectorias primitivas las cuales conectan posibles estados del vehículo. Además, esta metodología adquiere los estados del objetivo de forma determinista y satisface las limitaciones diferenciales del vehículo, haciendo uso de baja carga computacional genera una trayectoria suavizada y optima dentro de la cuadricula, la cual es generalmente acertada a los ambientes dinámicos reales.

4.2.2 Maneuver Planning

La planificación de maniobra se describe como:

La planificación de la maniobra, actúa como el cerebro del vehículo y trata de navegar de manera similar a la de un humano. La interacción con otros participantes del tráfico se interpreta a este nivel y luego se elige la mejor maniobra a ejecutar con respecto a la situación.[31]

En Hardy y Campbell [32], el método de corredores de conducción es construido a partir de los movimientos descritos por los objetos dinámicos, además de consider la presencia de los obstáculos estáticos. Los vehículos son clasificados y etiquetados para estimar su trayectoria, la distancia hacía ellos y el riesgo a colisiones asociado, mientras se la planeación se toma como un modelo de optimización no lineal restringido. Este método presenta una limitación referente al esfuerzo computacional que se genera en presencia de grandes números de obstáculos en el entorno.

También en el 2013 Kala y Warwick[33], plantearon un método que supone que el vehículo debe seguir cierto comportamiento tomando en consideración las condiciones del entorno, como el cambio de carril, el movimiento de cada

Page 26: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

26

obstáculos, la evasión de los mismo y el seguimiento de carril, entre otras. En este método se utiliza la distancia y velocidad como restricciones para definir la suposición del comportamiento, en adición su enfoque se centra en ambientes de calles sin carriles. Sin embargo, la problemática presente se debe a que solo se generan maniobras de conducción para caminos rectos, lo cual presenta inconvenientes en carreteras curvas y es computacionalmente pesado generando retraso en la toma de decisiones.

En el 2014 Ziegler junto con su equipo[34] desarrollaron un método similar basado en corredores de conducción y máquinas de estado jerárquico, utilizando como criterio la estática y dinámica de los obstáculos y el vehículo, además del comportamiento de los obstáculos y las reglas de rendimiento y fusión. Enfocados en secciones del ambiente de intersección y no intersección, las limitaciones de este modelo son, la estimación de que los obstáculos no presentan cambios en su aceleración y mantienen una distancia segura dentro de los límites de la carretera.

Brechtel y su equipo en el 2014[35] plantearon un método de observación parcial mediante el proceso de decisión de Markov (POMDP) asumiendo que el estado de creencia es infinitamente grande porque la conducción es un problema de espacio continuo. Para ello el criterio utilizado es suponer sumo con incertidumbres la velocidad y posición de los elementos en el entorno del tráfico, con el fin de planear maniobras de acción en ambientes fusionados y simultáneos que presentan visión ocluida. Sin embargo, este método presenta limitaciones debido al espacio de creencia continuo, el cual puede conducir a grandes números de muestras y gran carga computacional.

4.2.3 Trajectory Planning

Con base en un estudio realizado sobre los avances desarrollados en esta área se pueden listar de manera exacta los autores, métodos, enfoques y limitaciones encontrados para cada uno de ellos.

Delsart at al.[36] propuso un algoritmo de generación de trayectorias llamado Tiji, basándose en una optimización del polinomios de segundo orden que y utilizando la diferencia entre los estado inicial y final. Desarrolló su algoritmo considerando un modelo de posición del vehículo en 2D (x, y), orientación, velocidad, aceleración y ángulo de dirección, su principal limitación subyace en que no considera los obstáculos presentes en su entorno, además de generar cargas pesadas de procesamiento para posiciones alejados del punto de llegada.

Page 27: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

27

Sawodny et al.[37] usan polinomios de cuarto orden y un modelo de bicicleta dinámica en conjunto la “the flatness property”[38] para describir el movimiento del vehículo. Las restricciones se aplican a la aceleración máxima y a la fuerza motriz máxima del vehículo. Este enfoque también considera los escenarios de adelantamiento y seguimiento de automóviles con diferentes funciones de costos para cada caso, con base a los problemas como capacidad de presencia de un vehículo en el carril opuesto y restricción de distancia de seguridad. En los experimentos de simulación, se supone que los vehículos emplean una velocidad constante; algo que puede no ser aplicable a las condiciones del mundo real.

Ma et al.[39] desarrollan una trayectoria más suave y más controlable, donde los autores usan curvas cúbicas de Bézier para la planificación de trayectorias. Aplican una función de costo que incluye ponderaciones para la longitud de la trayectoria, su suavidad y el desplazamiento utilizado como ruta de referencia la línea central del carril. Los obstáculos se consideran círculos y la comprobación de colisión se realiza mediante trayectorias de colisión que pueden conducir a un gran esfuerzo computacional.

Bae et al.[40] presentan una comparación entre las curvas Bézier de tercer y quinto orden, para las maniobras de cambio de carril en la cual indica que las curvas de quinto orden construyen una ruta mucho más suave y más factible para entornos dinámicos en la carretera. Para la prueba de su postulado se utilizó un vehículo de tamaño miniatura, lo cual deja sin considerar la dinámica de un vehículo del mundo real, como sus dimensiones, el sistema de trasmisión que limita los movimientos que puede ejecutar, entre otras.

Las curvas de Bézier de cuarto grado se utilizan para obtener mejores resultados por González et al.[41], en donde se consideran las limitaciones de la carretera, además de las restricciones de carril que reflejan la ruta indicada por los planificadores de ruta. Este trabajo también incorpora una deformación de la curva si hay obstáculos. Sim embargo, en el desarrollo de pruebas y para efectos de comodidad, se limitan la velocidad y la aceleración, a la vez que se asumen solo velocidades bajas y consideran solo obstáculos estáticos.

Un enfoque más completo, en términos de maniobras y reglas de tránsito consideradas es propuesto por Wang et al. (2011)[42], donde la interpolación de splines de Akima se usa para generar las trayectorias que cumplen con los puntos de control del módulo de planificación de ruta, entre las cuales están: señales de alto, semáforos, giros, cambios de carril, intersecciones, señales de paso, conducción inversa y callejones sin salida. Las trayectorias se evalúan por su distancia y tiempo para llegar al siguiente punto de control, así como las colisiones con obstáculos. Las demostraciones se presentan en un entorno simulado, así como

Page 28: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

28

en un vehículo del mundo real, y se afirmó que eran suficientes para una conducción autónoma en el mundo real, aunque no se proporcionan resultados exhaustivos.

Gu y Dolan (2014)[43] proponen aprender patrones de trayectoria a partir de controladores humanos y luego aplicar estos patrones para la generación de trayectorias en línea. Los splines se utilizan para la representación de trayectorias con el fin de realizar una interpolación con los puntos de referencia dados desde los módulos de planificación superiores. Las trayectorias están limitadas en curvatura, velocidad y aceleración. Sin embargo, se considera siempre que el medio ambiente es libre de tráfico, y las regulaciones o factores externos como las condiciones climáticas no se toman en consideración, además que se debe usar gran cantidad de datos de conducción naturalista para aprender patrones de conducción humana.

Un enfoque diferente para la planificación de trayectoria, que combina aspectos de la ingeniería de control dentro del módulo de planificación, es el Modelo de Control Predictivo (MPC). Dentro de MPC, se usa un modelo dinámico para el vehículo y, a través de él, se toman muestras de las entradas del controlador sobre la evolución futura del movimiento del vehículo. A partir del modelo dinámico y las entradas del controlador, se resuelve el problema de optimización de encontrar la mejor trayectoria para el vehículo. MPC fue utilizado dentro de un corredor de conducción de Madas et al. (2013)[44] usando un modelo de bicicleta lineal con características de neumático lineal que también considera la dinámica lateral y de guiñada. Las restricciones se derivaron para el horizonte de control y predicción, así como también para el ángulo lateral de deslizamiento y dirección, la velocidad del ángulo de dirección y la posición lateral del vehículo. Los resultados mostraron una pequeña aceleración lateral; por lo tanto, más comodidad para los pasajeros, pero en comparación con los métodos spline y lattice, requiere más tirón. Una debilidad de la técnica radica en el hecho de que cuantas más variables se usen para modelar el vehículo, más difícil será optimizar sus trayectorias. Sin embargo, debido a que se realizó dentro del corredor de manejo, es más apropiado para dominios estructurados (por ejemplo, autopistas) y su desempeño no depende del aumento o disminución de la cantidad de obstáculos.

Page 29: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

29

5. MARCO TEÓRICO

5.1 CARRO AUTÓNOMO

También conocido como carro robótico, es un vehículo diseñado para operar sin la intervención de un conductor humano. Prototipos de este tipo de vehículos han sido diseñados desde 1920, pero su desarrollo moderno comenzó a finales de 1980.[45]

Para operar de forma autónoma, los vehículos deben obtener información del entorno en todo momento, posibilitando la planeación de trayectorias para su desplazamiento, además de la detección de otros vehículos en la vía, peatones, señales de tránsito y obstáculos que puedan estar a su alrededor. Esto se logra utilizando diferentes sistemas de localización y posicionamiento como el GPS y la odometría, sensores como el radar y el LIDAR; que en conjunto con la visión computacional, brindan información relevante a los sistemas de control y le permiten comprender el ambiente en el que se encuentra para así tomar las decisiones apropiadas[46].

5.2 SISTEMAS DE PERCEPCIÓN ROBÓTICA

Para la robótica una de las tareas más importantes de cualquier tipo de sistema autónomo es recolectar información acerca de su ambiente. Esto se logra mediante los sistemas de percepción, los que permiten adquirir información del entorno, tomando diferentes medidas mediante un conjunto de sensores, para luego extraer información de dichas mediciones[47, p. 68]. Existen cuatro clasificaciones principales para sensores, las cuales son:

Sensores Pasivos: Miden energía del ambiente que afecta al sensor.

Sensores Activos: Emiten energía al ambiente para luego medir su reacción.Usualmente estos logran una mejor respuesta debido a que pueden tenerinteracciones más controladas con el ambiente, pero también ofrecen una mayorsusceptibilidad al ruido.

Sensores Propioceptivos: Miden variables internas del sistema, como elacelerómetro, giroscopio, entre otros.

Sensores Exteroceptivos: Adquieren información acerca del ambiente delsistema como el radar, LIDAR, cámaras estéreo entre otros.

Page 30: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

30

Los sensores más utilizados en los vehículos autónomos son aquellos que le permiten al sistema “ver” su entorno (radar, LIDAR, cámara estéreo) y conocer la pose, posición y orientación, del vehículo (GPS, acelerómetro):

Radar: Dispositivo que transmite y recibe ondas electromagnéticas con el fin de detectar, localizar y medir la distancia de objetos distantes, por lo que se le puede considerar un sensor exteroceptivo activo. El término radar proviene de "radio detection and ranging" (en inglés, detección y medición por radio). Las ondas reflejadas son analizadas usando ecuaciones matemáticas, diseñadas para superar los fenómenos naturales que afectan la propagación de dichas ondas.[48]

LIDAR: Método de topografía que utiliza luz láser para medir distancias, también es un sensor exteroceptivo activo. La palabra LIDAR es una abreviación de "detección y telemetría de luz" en inglés. Este sistema funcionan enviando pulsos de luz hacia un destino y luego midiendo el tiempo que toman los pulsos en reflejarse de vuelta al sensor.[49].

GPS: El Sistema de Posicionamiento global es un servicio que pertenece al gobierno de los Estados Unidos de América (EEUU), este provee a sus usuarios servicios de posicionamiento, navegación y sincronización. Consiste de tres segmentos: segmento espacial, segmento de control y segmento del usuario, donde la Fuerza Aérea de EEUU mantiene y opera los segmentos espaciales y de control [50]. Es considerado un sensor exteroceptivo activo.

Acelerómetro: Transductor electromecánico que mide la tasa de cambio de la velocidad a lo largo del tiempo del objeto al cual se encuentra sujetado[51]. Haciéndole un sensor propioceptivo pasivo.

5.3 VISIÓN COMPUTACIONAL

Visión computacional es el análisis automático de imágenes y videos realizado por computadoras, con la finalidad de adquirir conocimiento sobre el mundo [52]. Éste fue inspirado inicialmente en sistema de visión humano y sus múltiples tareas asociadas como: la detección de bordes, de líneas, de profundidad, de color, de formas, entre otros. Algunos métodos altamente utilizados para estas tareas son:

Canny Edge Detector [53], es un método para la detección de bordes de múltiples etapas: reducción de ruido en la imagen, localización de la intensidad del gradiente de la imagen, supresión de valor no máximo y por último umbral de

Page 31: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

31

histéresis. Lo anterior brinda un algoritmo que fue diseñado para optimizar tres criterios principales: detección de todos los bordes, localización de bordes minimizando la distancia entre ellos y única respuesta para un borde. [52].

Transformada de Hough es una técnica que se puede utilizar para aislarcaracterísticas de una forma particular dentro de una imagen. La idea motivadoradetrás de la técnica de Hough para la detección de líneas es que cada medición deentrada (por ejemplo, un punto coordinado) indica su contribución a una soluciónglobalmente consistente (por ejemplo, la línea física que dio lugar a ese punto deimagen) [54].

Fig. 2. Transformada de Hough para líneas.

(a) imagen inicial, (b) imagen resultante del gradiente de umbral de la imagencon supresión no máxima, (c) líneas encontradas por Hough, (d)representación de las líneas encontradas en el espacio de Hough [52].

Haar-Like Features [55], son regiones de área rectangulares que permiten inferiry detectar sí la información de la imagen se asemeja o no a la imagen predefinidaen la región de búsqueda. Estas fueron definidas por Viola y Jones basadas en laOndícula de Haar (Haar wavelet), orientadas a la tarea de detección de rostros.

Page 32: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

32

Fig. 3. Detección de ojos y nariz. (a), imagen inicial, (b), detección de la región de ojos usando una característica Haar-like horizontal, (c), detección de la región de nariz usando una característica Haar-like vertical [52].

5.4 PLANEACIÓN DE TRAYECTORIAS

La identificación y planeación de una trayectoria permite que un robot o vehículo logre desplazarse de su posición actual a la ubicación deseada, siguiendo un camino seguro y libre de colisiones considerando la dinámica propia del vehículo. La planeación de trayectorias es una competencia estratégica de resolución de problemas, debido a que el robot debe decidir qué acciones ejecutar a largo plazo para alcanzar dicha meta [56, p. 254]. Esta estrategia requiere un mapa del ambiente y que el robot conozca su posición respecto al mapa [56, p. 73].

Esta es una tarea importante en la robótica móvil, ya que permite encontrar el camino más corto, o la ruta más óptima, entre dos puntos. Las rutas óptimas pueden ser aquellas que minimizan la cantidad de curvas, cantidad de veces que se debe frenar, entre otras.[56, p. 73].En la planeación de trayectoria están involucrados algunos conceptos básicos que se darán a entender a continuación:

Path: Secuencia continua de configuraciones geométricas que el vehículo debe de seguir para llegar a su destino sin colisionar con obstáculos, los cuales comienzan y terminan con la configuración de frontera

Path Planning: Es el problema de encontrar una configuración geométrica desde una configuración inicial hasta una configuración final determinada, asegurando que cada configuración y estado en la ruta, sea factible considerando las restricciones de movimiento como los límites de carretera, carril y las normas de tránsito.

Page 33: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

33

Maneuver: Es una caracterización de alto nivel del movimiento del vehículo conrespecto a su posición y velocidad en la carretera, la cual permite realizar accionestales como adelantar, avanzar o retroceder.

Maneuver Planning: Se encarga de la tarea de analizar la mejor maniobra deacción que el vehículo debe de seguir para alcanzar su destino, ya sea adelantando,retrocediendo o acelerando el vehículo, teniendo en cuenta los vehículos vecinos yla ruta trazada, de manera que pueda desplazarse en forma segura.

Trajectory: La trayectoria se representa como una secuencia de estadosvisitados por el vehículo, parametrizados por el tiempo y, posiblemente, por lavelocidad.

Trajectory Planning: Se encarga de la planificación en tiempo real de latransición del vehículo de un estado inicial al siguiente de manera factible,satisfaciendo los límites cinemáticos del vehículo en función de la dinámica delmismo y limitado por la comodidad de navegación, los límites de carril y las normasde tránsito.

Page 34: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

34

6. SOFTWARE Y HARDWARE UTILIZADO

6.1 SOFTWARE UTILIZADO

En esta sección se hablará del sistema operativo, software y librerías utilizadas para el desarrollo y simulación del sistema propuesto.

6.1.1 Ubuntu

Ubuntu es una distribución de Linux, la cual es gratis y open-source[57], [58] basada en Debian[59]. Ubuntu es distribuido en tres versiones oficiales: Ubuntu Desktop[60] para computadores personales, Ubuntu Server[61] para servidores y servicios en la nube y Ubuntu Core[62] para aplicaciones de internet de las cosas y robótica.

6.1.1.1 Ubuntu lts 16.04.

Versión de Ubuntu lanzada el 21 de abril de 2016 con soporte hasta abril de 2021[63]. Ésta será la versión a utilizar como sistema operativo.

6.1.2 Robot operating system (ROS)

Según la Open Source Robotics Foundation (OSRF) [64], “ROS es un framework para la escritura de software para robots. Es una colección de herramientas, librería y convenciones que busca simplificar la tarea de crear comportamientos complejos y robustos a través de una variedad de plataformas robóticas.”, ROS permite y facilita diferentes etapas de interacción, uso y comando de los robots, mediante un ambiente de estancias o ‘Nodes’ (nodos) y canales de comunicación entre los nodos llamados ‘Topics’ (tópicos), ‘Services’ (servicios) haciendo uso de ‘Messages’ (mensajes) o mediante el servidor de parámetros. Ver Fig. 4.

Fig. 4. ROS Equation. [64]

Page 35: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

35

6.1.2.1 Nodos.

Los nodos en ROS son definidos como:

Procesos que realizan computación. Los nodos se comunican entre sí utilizando tópicos, servicios y el servidor de parámetros. Éstos son pensados para tener una escala pequeña, donde un sistema de control robótico usualmente está compuesto por muchos nodos. Por ejemplo, un nodo controla un sensor de rango láser, un nodo controla las ruedas del robot, un nodo realiza localización, un nodo realiza path planning, un nodo provee una representación gráfica del sistema y así sucesivamente[65].

6.1.2.2 Tópicos.

Los tópicos en ROS son definidos como:

Buses con nombre mediante los cuales nodos intercambian información. Los tópicos utilizan métodos anónimos de publicador y subscriptor, lo cual desvincula la producción de la información de su consumo. En general, los nodos no saben con quiénes se están comunicando. En cambio, los nodos interesados en datos, se suscriben a un nodo relevante; nodos que generan datos, publican a un tópico relevante. Pueden existir múltiples publicadores y subscriptores a un tópico.[66]

6.1.2.3 Servicios.

Según la OSRF:

El modelo publicador-subscriptor es un paradigma de comunicación muy flexible, pero su transporte unidireccional muchos-a-muchos, no es apropiado para interacciones solicitud-respuesta de llamada a procedimiento remoto (RPC), las cuales son requeridas a menudo en un sistema distribuido. La solicitud-respuesta es hecha mediante un Servicio, el cual es definido por un par de mensajes: uno para la solicitud y otro para la respuesta. Un nodo de ROS ofrece un servicio mediante un nombre de tipo cadena (string), y un cliente llama el servicio al enviar la solicitud y esperar la respuesta. [67]

Page 36: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

36

6.1.2.4 Mensajes.

La OSRF define los mensajes en ROS como:

Una estructura de datos simple, compuesta de campos con tipos definidos. Los tipos básicos estándar (entero, punto flotante, booleano, etc.) son soportados, como también arreglos de tipos primitivos. Los mensajes pueden tener estructuras anidadas y arreglos, como estructuras de C. Los nodos se comunican entre sí publicando mensajes en tópicos. [68]

6.1.2.5 Servidor de Parámetros.

El servidor de parámetros se define según la OSRF como:

Un diccionario compartido y multivariable que puede ser accedido mediante una interfaz de programación de aplicaciones (API). Los nodos utilizan este servidor para almacenar y tomar parámetros durante el tiempo de ejecución. Como no es diseñado para un alto rendimiento, es mejor usarlo para datos no binarios estáticos, como parámetros de configuración. Está pensado para que sea globalmente visible de manera que herramientas puedan inspeccionar el estado de configuración del sistema, si es necesario.[69]

6.1.2.6 Bags.

De acuerdo a la OSRF “Un bag es un formato de archivo en ROS para almacenar datos de mensajes de ROS. Bags – nombrados así por su extensión .bag – tienen un rol importante en ROS […].”[70]. Estos archivos usualmente se utilizan para guardar cualquier tipo de mensaje que se desea posteriormente utilizar, permitiendo posteriormente recrear el mismo ambiente en ROS como si se estuviera en el mismo momento donde se tomaron los datos.

Page 37: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

37

6.1.2.7 ROS Kinetic Kame.

ROS Kinetic Kame será la versión de ROS a utilizar y de acuerdo a la OSRF:

ROS Kinetic Kame es la décima versión de lanzamiento de ROS. Fue lanzada el 23 de mayo de 2016. ROS Kinetic Kame está principalmente enfocada a la versión 16.04 de Ubuntu, aunque otros sistemas Linux como también Mac OS X, Android y Windows son soportados en diferentes grados.[71]

6.1.3 Unified Robot Description Format (URDF)

Tomando la definición dada por la OSRF “El formato de descripción de robot unificado (URDF) es una especificación XML usada para describir un robot”[72]. La principal limitación de este formato de descripción subyace en que, únicamente permite la representación de estructuras tipo árbol y siguiendo el concepto en el que dicho robot este compuesto de eslabones rígidos (links) conectados por uniones (joints), para recapitular, la descripción URDF permite definir la descripción cinemática y dinámica del robot, su representación visual y adicionalmente un modelo de colisión de dicho robot [72], ver Fig. 5.

Fig. 5. Representación de los elementos en un robot siguiendo la descripción URDF.[72]

Page 38: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

38

6.1.3.1 Link

El elemento “Link” es un eslabón que permite describir un único cuerpo rígido del robot, dentro de la descripción URDF se brinda la posibilidad de definir algunas propiedades como la inercia del elemento, características visuales y propiedades de colisión.[73][74]

6.1.3.2 Joint

El elemento “Joint” es la unión que permite la interacción entre dos cuerpos rígidos de un robot, dentro de la descripción URDF y siguiendo la estructura de árbol, se hace indispensable la definición del padre-hijo, así como el tipo de joint, adicionalmente se brinda la posibilidad de definir la cinemática y dinámica del joint así mismo como los límites de desplazamiento, velocidad y esfuerzo que este puede alcanzar [73][75], ver Fig. 6.

Fig. 6. Descripción de los elementos en un joint.[75]

6.1.4 Gazebo

Gazebo, el cual es el software definido para la simulación del proyecto, es definido según la OSRF como:

Un simulador desarrollado en 2002 en la universidad de California del Sur. Sus creadores originales fueron Dr. Andrew Howard y su estudiante Nate Koenig. El concepto de un simulador de alta fidelidad surgió de la necesidad de simular robots en ambientes externos bajo diferentes condiciones. […] En 2009, John Hsu un ingeniero investigador Senior en Willow, integró ROS y PR2 a Gazebo, el cual

Page 39: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

39

desde entonces se ha convertido en una de las herramientas principalmente utilizadas en la comunidad de ROS […].[76]

6.1.4.1 Simulation Description Format (SDF)

El formato de descripción Simulation Description Format (SDF), fue desarrollado principalmente para el entorno de simulación Gazebo y es una descripción XML completa de todos elementos necesarios para realizar una simulación, desde los elementos del mundo hasta la descripción del robot, por este motivo es utilizado para describir objetos y entornos para la simulación, realizar visualización y control de robots.[77][78]

6.1.5 Open Source Computer Vision Library (Opencv)

De acuerdo al equipo OpenCV:

Es una librería de software open source para visión computacional y machine learning. OpenCV fue construida para proveer una infraestructura para aplicaciones de visión computacional y para acelerar el uso de percepción en máquinas en productos comerciales. […].

La librería cuenta con más de 2500 algoritmos optimizados, los cuales incluyen un conjunto de algoritmos tanto clásicos y más recientes de visión computacional y machine learning. Estos algoritmos pueden ser utilizados para detectar y reconocer caras, identificar objetos, clasificar acciones humanas en videos […]. La librería es usada de manera extensiva en compañías, grupos de investigación y por cuerpos gubernamentales.

Cuenta con interfaces para C++, Python, Java y MATLAB. También soporta sistemas operativos como Windows, Linux, Android y Mac OS.[79]

La librería de OpenCV para Python 2.7 será la librería utilizada para realizar todas las operaciones de procesamiento de imagen y visión computacional requeridas para el proyecto.

Page 40: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

40

6.1.6 Python

Según Adalberto Rincón:

Python es un lenguaje de programación desarrollado bajo una aprobada OSI licencia open source, lo que lo convierte en una gratuita, usable y distribuible plataforma, incluso a nivel comercial. El lenguaje de programación Python es fácil de aprender ya sea un principiante en programación o tenga experiencia con otros lenguajes, además de esto cuenta con una comunidad grande que permite la colaboración para el desarrollo de código y la solución de problemas. Por último, Python cuenta con miles de módulos de terceros, es decir que las librerías de Python y los módulos que han sido contribuidos por la comunidad brindan un sinfín de posibilidades a desarrollar.[80]

6.2 HARDWARE UTILIZADO

6.2.1 Robot Autónomo Uno

De acuerdo a Pérez y Eraso el robot autónomo uno es “[…] un robot móvil terrestre en el cual su aplicación es servir de plataforma de investigación para la universidad Autónoma de occidente en el área de robótica móvil.”[81]. Y éste será el robot sobre el cual el sistema será probado, debido a su facilidad de trabajo sobre una morfología Ackermann.

Debido al trabajo de actualización realizado por los estudiantes Ana Pinto, Miguel Ruiz y Jose Correa como proyecto final del curso Diseño Mecatrónico II[82] y el trabajo de grado de Daniela Díaz[83] el robot autónomo Uno cuenta con un sistema que facilita la interfaz entre ROS y los motores del robot.

6.2.2 Computadores utilizados

Para el desarrollo del algoritmo de visión y la simulación del sistema en Gazebo se utilizaron dos computadores, uno con procesador Intel i5 de séptima generación, 8GB de RAM, tarjeta de gráficos dedicada NVIDIA 1050 4GB y Ubuntu 16.04.5 64bits; y otro con procesador Intel i7 de cuarta generación, 12GB de RAM, tarjeta de gráficos dedicada NVIDIA 770m 3GB y Ubuntu 16.04.5.

Page 41: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

41

7. RESULTADOS

Los resultados presentados a continuación se dividen en tres principales etapas: desarrollo del sistema de visión artificial, desarrollo de la simulación y, por último, validación en la plataforma real Autónomo uno. En Fig. 7, se muestra el diagrama general que describe el desarrollo del trabajo, en donde se observa los procesos principales realizados para las diferentes etapas.

Fig. 7. Pipeline del sistema completo

7.1 DESARROLLO DEL SISTEMA DE VISIÓN ARTIFICIAL

En esta sección se tratará el desarrollo del sistema de visión artificial del proyecto, cuyo fin es detectar las líneas que demarcan el carril tomadas desde una cámara monocular ubicada en el frente del vehículo y generar una trayectoria de corto plazo para que el vehículo se mantenga en el centro del carril. Para esto, se evaluaron cinco diferentes alternativas para la detección del carril basadas en métodos comúnmente utilizados, dentro de los cuales resaltan: detección de líneas mediante transformada de Hough[54], mediante métodos de Machine Learning, detección de las demarcaciones del carril utilizando características Haar-like[55]. Finalmente, de las diferentes combinaciones se desarrolló un modelo del carril mediante puntos tomados desde una transformación de perspectiva, junto con filtros de Kalman para

Page 42: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

42

añadir robustez frente a sombras. Una vez se obtiene una representación del carril, se genera un vector de dirección que describe la trayectoria a corto plazo, para mantener el vehículo en el centro del carril y posteriormente es enviada al sistema de control.

7.1.1 Recolección de datos

Antes de comenzar a indagar acerca de los diferentes métodos que pueden ser utilizados para detectar las demarcaciones de carril en la carretera, se decide recolectar diferentes videos con los cuales trabajar. Se toman varios videos en la vía entre Cali y Palmira, como también otros videos en la entrada a la ciudad de Cali.

En el momento de tomar los datos en los escenarios establecidos, se hace uso de dos tipos de archivos con extensiones bag y webm, de los cuales, el primero facilita la reproducción de datos dentro del ambiente de ROS, y el segundo con el fin de realizar pruebas utilizando Python.

Se tomaron un total de 66 muestras con extensión bag de 30 segundos de duración, capturando toda la información publicada por el nodo usb-cam en cada uno de sus tópicos. También se tomaron 17 videos con extensión webm con duraciones entre 10 y 61 segundos.

Una vez tomadas las muestras, se eliminaron los vídeos que no presentaban buena fluidez de cuadros por segundo o que fueron afectados por la vibración del automóvil durante la toma. Los vídeos restantes fueron separados entre dos clases, videos con líneas de carril demarcadas y vídeos sin líneas de carril demarcadas. Resultando con 22 muestras en la primera clase y 19 en la segunda, teniendo una reducción cercana de un 40% de los datos tomados.

Adicionalmente, se utilizaron los videos provistos por el repositorio [84], los cuales fueron convertidos de formato MP4 a rosbag para su mejor integración con el ambiente de ROS.

7.1.2 Selección y evaluación de algoritmos existentes de detección y seguimiento de carril

En las siguientes subsecciones, se describen todos los algoritmos que fueron seleccionados y evaluados para la tarea de detección y seguimiento de carril.

Page 43: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

43

7.1.2.1 Sistema basado en detección de líneas mediante la transformada de Hough

Como parte de la clase de Percepción Robótica durante el semestre 2018-1 se propuso la implementación de una primera aproximación del sistema, en la cual se tomó como punto de partida, la solución propuesta por Galen Ballew[85], donde mediante un área de interés (ROI) y filtrado de color, se enfoca una zona de la carretera y se exaltan diferentes características de la misma, para así realizar detección de líneas rectas mediante la transformada de Hough[54].

Se encuentra que es un buen punto de partida, pero el sistema es fácilmente influenciado por cambios en iluminación; al trabajar con la detección de líneas rectas, no hay mucha robustez frente a curvas, además que se ignora información que puede ser de interés. Tomando esta información en consideración, se propone un sistema que detecte el horizonte, el carril y que envíe las consignas de control correspondientes para que el carro pueda mantenerse en el centro del carril, como se describe en Fig. 8.

Fig. 8. Procedimiento final realizado.

El algoritmo comienza tomando una imagen del tópico de video, luego se utilizan filtros de color para un rango de amarillo, en el espacio HSV y blanco en espacio de escala de grises, obteniendo dos imágenes binarias como resultado. Posteriormente, ambas imágenes se fusionan utilizando una compuerta OR, para hallar bordes usando el algoritmo de Canny[53] y luego hallar líneas en la imagen usando la transformada probabilística de Hough para líneas.

Una vez halladas todas las líneas, se itera por cada una de ellas mediante lógica condicional y parámetros heurísticamente establecidos, con el objetivo de evitar

Page 44: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

44

falsos positivos como líneas verticales y horizontales, líneas con pendiente positiva al lado izquierdo y líneas con pendiente negativa al lado derecho, ya que por efectos de perspectiva en el video se conoce que ninguno de los casos descritos contiene líneas que pueden ser de uso para el sistema. Posteriormente, las líneas que pasen este proceso son clasificadas entre líneas del lado derecho o izquierdo del carril.

Con las líneas clasificadas, se procede a hallar una pendiente y un intercepto promedio para cada clase, y así tener una descripción de las dos demarcaciones del carril. Con esta información se puede proceder a hallar la línea de horizonte. Xh se puede calcular, como lo muestra la ecuación 1.

xh =

bi − bdmd −mi

(1)

Donde bi y mi son el intercepto y la pendiente de la línea promedio izquierda y, bd

y md son el intercepto y la pendiente de la línea promedio derecha. Ya con la coordenada horizontal hallada, se puede utilizar cualquiera de las dos ecuaciones para la línea derecha o izquierda y así tener las coordenadas del punto de intercepto, utilizando la ecuación 2 e ilustrado en Fig. 9.

yh = mixh + bi (2)

Fig. 9. Ubicación del punto (xh,yh) y la línea de horizonte.

Una vez hallada la línea de horizonte, se procede a guardarla en el servidor de parámetros para definir el área de interés para la siguiente imagen del video.

Para el proceso de generación de la consigna de control, primeramente, se hallan las coordenadas (xa-1, a-1) para cada una de las líneas, donde a es el valor en

Page 45: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

45

pixeles de la altura de la imagen. Esto con el fin de encontrar los dos puntos ubicados en la parte inferior de la imagen y hallar las coordenadas del carril central de la siguiente manera, donde, xia-1 es la coordenada x en a-1 del carril izquierdo y xda-1 es la coordenada x en a-1 del carril derecho. xc es obtenido sumando xia-1 a la diferencia entre xda-1 y xia-1, yc es igual al número de filas en la imagen menos una, esto debido a que la primera fila de la imagen es enumerada como fila cero

xc = xia−1 + (xda−1 − xia−1) (3)

yc = a − 1 (4)

Con el valor de xc hallado, se toma éste como setpoint del sistema y la mitad del ancho de la imagen como la salida del sistema, la resta entre ambos entrega el error y con respecto a dicho error, se calcula una consigna de control.

La consigna de control es definida basada en control difuso, en la cual se elige entre cinco condiciones y dependiendo de la condición que se cumpla, se envía una consigna de control específica que es transmitida a través del tópico “/steeringControl”.

Si error > 50 ⇒ Más derecha Si 0 < error < 50 ⇒ Derecha Si error = 0 ⇒ No gire Si 0 > error > −50 ⇒ Izquierda Si error < −50 ⇒ Más izquierda

Fig. 10. Demarcación de carriles, línea de centro y de horizonte.

Page 46: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

46

Fig. 11. Comunicación usando el topic ‘/steeringControl’

Mediante esta primera aproximación se demuestra que sí es posible resolver el problema utilizando técnicas de visión computacional, ver Fig. 10 y Fig. 11, pero la implementación contiene diferentes problemas que deben ser mejorados. El primero, es la cantidad de parámetros que deben ser ajustados de manera subjetiva para un buen funcionamiento de los filtros de color y la transformada probabilística de Hough, ya que esto no asegura el funcionamiento del sistema en condiciones diferentes a las utilizadas. El segundo corresponde al filtrado por color, ya que esto lo hace muy sensible a cambios de iluminación. En tercer lugar, este modelo no es recomendable debido a que este sistema solo considera líneas rectas. Tomando en consideración lo expuesto, se continúa con la indagación de otros métodos.

7.1.2.2 Sistema basado en clasificadores de Machine Learning

Como segunda alternativa, se propone una etapa de preclasificación para las líneas detectadas haciendo uso de herramientas de Machine Learning, en la cual se busca aprovechar diferentes características de la zona donde la línea es detectada al tomar su gradiente en la dirección de X y en la dirección de Y, para luego hallar los valores de magnitud y ángulo y realizar clasificación con respecto a estas características.

Para la extracción de las características de los datos, se guarda como una imagen en escala de grises el área donde la línea es detectada con la línea dibujada en color verde para facilitar el etiquetado manual. También, como datos para entregar al clasificador, se organizan las características en histogramas en grupos o bins en incrementos de 10: histograma de la magnitud escalada entre 0 y 100, en 10 grupos;

Page 47: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

47

histograma del ángulo en 36 grupos; histograma del ángulo con respecto a la magnitud escalada entre 0 y 100 en 36 grupos.

Adicionalmente, se busca una métrica que permita evaluar el tiempo de ejecución para así hallar cuál de los tres histogramas penaliza menos la ejecución en tiempo real llamada kscore. Buscando determinar junto con el puntaje de precisión del clasificador, cuál histograma es el mejor para la clasificación de las líneas.

kscore =t

np∗ 10⁵ (5)

Donde kscore es la calificación final y se busca que este sea lo más cercano a cero, t es el tiempo que se tarda en realizar el histograma en segundos, y np es la cantidad de pixeles de la imagen a la cual se le halla el histograma.

Con la estructura de cada una de las características definida y utilizando funciones nativas de Python, se almacenan los datos para cada línea detectada en un fotograma utilizando el siguiente orden y se procede al etiquetado manual de cada conjunto de datos:

Nombre_de_imagen

kscore

Clase

Histograma ángulo (ang2ang) – 36 características o bins

Histograma magnitud escalada (mag2mag) – 10 características o bins

Histograma ángulo con respecto a la magnitud escalada (ang2mag) -36características o bins

En el etiquetado se definen tres clases:

0 – No es línea

1 – Es línea

Page 48: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

48

2 – Hace parte de la carretera, pero no es explícitamente línea

Con los datos ya etiquetados de manera manual, se continúa con el pre procesamiento necesario para convertir los datos de caracteres alfanuméricos a arreglos de números enteros que puedan ser de uso para el entrenamiento de los clasificadores. Durante este proceso, se encuentra que para el data set elegido hay mayor participación de la clase 0 que 1 y 2 juntas, con un total de 1087 líneas encontradas:

Clase 0: 914 muestras (84.1%)

Clase 1: 98 muestras (9.0%)

Clase 2: 75 muestras (6.9%)

Para la selección del clasificador se utiliza el gráfico propuesto en la documentación de Scikit-learn[86]. Como contamos con datos etiquetados por clase, el problema es de clasificación y al tener menos de 100.000 muestras, se elige un Clasificador de Soporte Vectorial (SVC) por su robustez, rapidez, cantidad de clases. Utilizando la librería Scikit-learn[87] disponible para Python 2.7, se procede a la implementación de los clasificadores.

En la separación de los datos se toma una proporción de 80% - 20% lo cual corresponde a los datos de entrenamiento y validación respectivamente. Se inicializan tres SVC, uno para cada histograma hallado, con el número de entradas correspondientes a la cantidad de características de cada histograma y utilizando el kernel que tiene por defecto, el cual es la función de base radial o Rbf[88]. Pero al realizar el entrenamiento y validación de los datos se encuentra que el clasificador tiene una precisión del 0%, resultado que mantiene constante, aunque se varíe el kernel.

La causa de este valor de precisión es atribuida a la predominancia de la clase 0 en el conjunto de datos, lo que significa que no se puede realizar el entrenamiento del clasificador con una clase que cuenta con 9 a 12 veces más datos que las otras. Por lo que se reduce la participación de la clase 0 a una cantidad de muestras que sea cercana a la cantidad de las otras clases y así no tener sobre entrenamiento (overfitting) del clasificador. Por esto, se decide tomar los primeros 100 datos de la clase 0 para el entrenamiento y validación del clasificador, teniendo una participación por cada clase de la siguiente manera:

Clase 0: 100 muestras (36.6%)

Page 49: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

49

Clase 1: 98 muestras (35.9%)

Clase 2: 75 muestras (27.5%)

Se vuelve a entrenar el clasificador utilizando la nueva proporción de los datos y se observa otra vez una precisión del 0%.Se le atribuye esta precisión al orden de los datos, ya que no estaban mezclados de manera aleatoria, sino que se encontraban ordenados de manera ascendente, resultando en que los datos de entrenamiento contenían todas las muestras de las clases 0 y 1, además de 20 muestras de la clase 2, y los datos de validación solo estaban compuestos por elementos de la clase 2.

Se mezclan los datos de manera aleatoria para los grupos de entrenamiento y validación, también se propone realizar cuatro clasificadores para cada histograma utilizando los cuatro kernels disponibles en la librería Scikit-learn y así evaluar la precisión de cada kernel con respecto a cada histograma y definir la mejor solución posible, las funciones para los kernels utilizados fueron: Rbf, Lineal, Polinómica (Poly) y Sigmoide.

Con los parámetros definidos se realiza el entrenamiento de los clasificadores y se obtienen los resultados registrados en la TABLA I, donde cada precisión es el resultado del promedio de cinco ejecuciones del algoritmo.

TABLA I

Resultados de precisión de los cuatro clasificadores

Ang2Mag Ang2Ang Mag2Mag

Rbf 0.3405 0.3405 0.3405

Lineal 0.6720 0.6737 0.5996

Poly 0.7697 0.7627 0.6421

Sigmoide 0.3405 0.3405 0.3405

Nota: Se registran los resultados de precisión de los cuatro clasificadores para cada histograma.

Page 50: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

50

Profundizando acerca del uso de los SVC como Pal[89] propone, éste tipo de clasificador es mucho más apropiado para hacer clasificación binaria. Debido a esto se decide mezclar las clases 1 y 2 en una sola clase y aumentar la cantidad de muestras de la clase 0 de tal manera que exista la misma cantidad de ambas clases, pasando a un total de 173 muestras para cada clase. También, se realiza un proceso de normalización de los valores en los histogramas a un rango de [0,1] dividiendo los histogramas entre cero y el valor del bin más alto de cada histograma. Además, como ya se trabajará con los datos escalados, se plantea el uso de un Perceptrón Multicapa (MLP) según lo indica la documentación de Scikit-learn [90], como un segundo clasificador para así comparar los resultados con respecto a los obtenidos. La arquitectura de este es: unidades de entrada igual al número de bins de cada histograma, dos capas ocultas con la mitad de unidades de la capa de entrada y dos unidades de salida.

Al realizar la comparación entre ambos clasificadores, se encuentra que el MLP presentó una mayor diferencia para los datos del histograma Ang2Ang. Por otra parte, tanto el SVC como el MLP no obtuvieron precisiones mayores al 90% con el histograma Mag2Mag, por lo que se decide solamente trabajar con los datos de los histogramas Ang2Mag y Ang2Ang. Por último, se define que para el histograma Ang2Ang se entrenará un MLP y para el histograma Ang2Mag se entrenará un SVC.

Una vez definidos los datos, se entrenan los clasificadores en diferentes iteraciones, logrando una precisión promedio para el histograma Ang2Mag de 77.94% y una precisión promedio para el histograma Ang2Ang de 81.69%, donde se guardan los dos clasificadores de mayor precisión para realizar la implementación del sistema.

Al implementar los clasificadores sobre los datos a trabajar, en vez de una mejora al sistema de detección de carril, se observa que los clasificadores se comportan de manera errática al clasificar las líneas. Luego de analizar el procedimiento, se propone que la escasez de datos para entrenamiento pudo haber generado un overfitting para un conjunto de datos, las características no permitieron a los clasificadores hallar patrones en los datos.

Se decide abandonar esta aproximación debido a que la toma y etiquetado de los datos es bastante tediosa, además de no mostrar avances prometedores para el sistema. Además, sigue trabajando sobre líneas rectas, por lo que no se adapta de buena manera a las curvas.

Page 51: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

51

7.1.2.3 Sistema basado en características Haar-Like, métodos de umbralización automática y ventanas deslizantes.

Con base en la publicación [91], ver Fig. 12, se propone que el filtrado usando características Haar-Like, donde se consideran las regiones rectangulares adyacentes en una ubicación específica de una ventana de búsqueda, puede ayudar en la detección de líneas diagonales, características del efecto que genera la perspectiva sobre las demarcaciones de carril en la carretera.

Fig. 12. Características Haar-Like utilizadas por Chao et al.[91]

De modo que, se generan dos filtros o kernels para las líneas de carril que se encuentran al lado derecho e izquierdo de la imagen, donde se utiliza un filtro de 3x3 ampliado 10 veces mediante la función resize de OpenCV. Esta ampliación se realiza debido al tamaño de las demarcaciones de carril donde un filtro de 3x3 pixeles, no logra resaltar las características que se desean en la imagen, dejando los filtros de 30x30 con una diagonal similar a la existente en los filtros originales. Los filtros de tamaño 3x3 utilizados se pueden ver en Fig. 13.

Fig. 13. Características Haar-Like utilizadas como filtros para la zona izquierda y derecha

Page 52: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

52

Antes de filtrar la imagen con los kernels de 30x30, se decide dividir cada filtro por 300 para lograr obtener resultados de la convolución de las imágenes, dentro del valor nativo de la imagen principal, entero sin signo de 8 bits (unit8). La división en el kernel se realiza por la cantidad de pixeles blancos y no por la cantidad de pixeles en el kernel debido a que los pixeles que se encuentran por fuera de la diagonal, no contribuyen a la operación. Utilizando la operación filter2D disponible en OpenCV, se aplica el filtro en ambas mitades de la imagen.

Como se puede observar en la Fig. 14b, al filtrar la imagen se eliminan ciertas características no deseadas como la textura de las nubes y de algunos árboles, al mismo tiempo que se exaltan las demarcaciones de los carriles en la carretera.

Ya con la imagen filtrada, se procede a la binarización de la imagen. Para esto se utilizaron dos umbralizaciones automáticas, el método propuesto por Otsu[92] y el método Adaptativo[93]. Estos dos métodos fueron elegidos por su naturaleza dinámica, que puede brindar robustez a posibles cambios de brillo o iluminación en la imagen.

Fig. 14. a. Imagen original. b. Imagen filtrada

Page 53: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

53

Fig. 15. Umbralizaciones mediante el método

a. de Otsu. b. Adaptativo.

Basado en los resultados que se pueden observar en Fig. 15, se decide utilizar el negativo del resultado original del método adaptativo, ya que permite resaltar de mejor manera los bordes de las demarcaciones del carril. También, como se puede observar en Fig. 15a, al hacer umbralización utilizando el método de Otsu, las demarcaciones de carril son resaltadas de forma excelente. Luego, se prueban ambos métodos en tramos con sombras, para así ver la respuesta del sistema.

Fig. 16. a. Escena con sombra.

b. Umbralización mediante método de Otsu. c. Umbralización mediantemétodo adaptativo.

Page 54: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

54

Como se puede observar en la Fig. 16, al pasar por sombras el desempeño del método de Otsu disminuye, pero en el método adaptativo se mantienen ciertas características de las demarcaciones. Por esto, se propone realizar una imagen que permita aprovechar el desempeño del método de Otsu cuando no hay sombras y las características resaltadas por el método adaptativo en presencia de sombras. Con el objeto de mezclar ambas imágenes binarias, se realiza la operación lógica AND, resultando en una imagen negra en su mayoría, ver Fig. 17a, de modo que se propone realizar una operación morfológica de apertura a la imagen del método de Otsu y así obtener la imagen observada en Fig. 17b.

Fig. 17. Operación morfológica de apertura a la imagen del método de Otsu y así obtener la imagen observada

a. Resultado de operación AND entre los dos métodos de umbralización. b. Resultado de operación AND aplicando la operación de apertura.

Con estos resultados que permiten hallar las demarcaciones de carril sin importar si hay o no sombras en la mayoría de casos, se procede con el algoritmo que realiza las detecciones. Este algoritmo es una búsqueda de las demarcaciones mediante ventanas deslizantes, las cuales recorren la imagen buscando y etiquetando los

Page 55: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

55

pixeles que pertenecen a las demarcaciones de carril, este algoritmo está descrito en Fig. 18.

Fig. 18. Algoritmo de búsqueda mediante ventanas deslizantes

Page 56: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

56

Como se puede observar en Fig. 19, basado en el histograma de pixeles a lo largo del eje x en la imagen umbralizada, se encuentran las posiciones derecha e izquierda con más pixeles en cada columna de la imagen y se comienza la búsqueda de las demarcaciones subiendo las ventanas y guardando los centros de cada ventana, de los cuales se obtendrá una regresión polinómica para hallar el modelo del carril.

Fig. 19. Resultado de la búsqueda mediante ventanas deslizantes para los carriles izquierdo (azul) y derecho (rojo).

De los resultados obtenidos se infiere que, el sistema funciona en parte como es esperado, pero se observa que tiene una falla fundamental, la cual es que no para de buscar, lo que ocasiona que continúe buscando por encima de la carretera. Además, el sistema no parece encontrar las demarcaciones verdaderas sobre las cuales el auto está andando, sino que toma los extremos de la carretera.

Por estas razones, se decide indagar acerca de transformaciones de perspectiva para así definir un área de interés sobre la cual realizar la búsqueda de las demarcaciones de carril.

7.1.2.4 Sistema basado en características Haar-Like, región de interés, transformación de perspectiva y ventanas deslizantes.

Con los resultados obtenidos en la aproximación anterior, se propone aplicar una región de interés que permita enfocarse en el área frente al vehículo (también llamado área de interés o ROI). Esto para tomar las demarcaciones del carril sobre el cual está el vehículo y mediante una transformación de perspectiva, obtener la vista superior o Bird’s Eye View (BEV) de la carretera.

Para realizar la transformación de perspectiva, se requiere de un polígono de cuatro lados que demarque el área sobre la cual se realizará la transformación. Para este

Page 57: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

57

sistema, se piensa en un algoritmo que permita hallar el ROI de manera automática basándose en las demarcaciones de carril halladas mediante el método de umbralización de Otsu, donde se toman las líneas halladas mediante el método probabilístico de Hough que describen el carril y junto con el horizonte, el cual es hallado de la misma manera que en la sección 7.2.1, se genera un ROI respecto a las demarcaciones de carril, como se describe en Fig. 20.

Fig. 20. Procedimiento para hallar el área de interés de manera automática.

El ROI es generado aumentando 50 pixeles a los modelos lineales de las demarcaciones derecha e izquierda del carril, como también desplazando la línea de horizonte 50 pixeles hacia abajo, esto con el objetivo de incluir las demarcaciones y asegurar que pixeles que estén por encima del horizonte no aparezcan en el ROI. Con los modelos lineales trasladados, se hallan los puntos de intercepto con la línea de horizonte trasladada y con el borde inferior de la imagen, para así generar un trapecio que describa el área de interés como se puede observar en Fig. 21.

Los cuatro puntos que describen el polígono son utilizados para hallar la matriz de transformación haciendo uso de la función getPerspectiveTransform disponible en la implementación de OpenCV para Python. Dicha matriz es luego utilizada en la función warpPerspective, para hallar el BEV del área descrita por el trapecio, en la imagen original como se puede observar en Fig. 22.

Fig. 21. ROI hallada con base en las demarcaciones de carril.

Page 58: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

58

Fig. 22. Resultado de la transformación de perspectiva con base en las demarcaciones de carril.

Como se puede observar en Fig. 22, la transformación de perspectiva genera un buen resultado sobre el cual se puede aplicar el método de ventanas deslizantes anteriormente descrito. No obstante, este algoritmo presenta una desventaja en su ejecución, debido a que no se realiza un proceso para hallar bordes porque se desea conservar totalmente las demarcaciones halladas en la imagen binarizada mediante el método de Otsu. El proceso de hallar líneas mediante Hough Probabilístico es computacionalmente poco eficiente, bajando la tasa del video de salida de 30 cuadros por segundo (fps) a aproximadamente 2 cuadros por segundo, también, se observa que el área de interés varía mucho por efectos de transmisión de la vibración del auto a la cámara.

Viendo esto, se decide de manera experimental definir un ROI y se observa una mejora en el tiempo de ejecución, donde el video de salida muestra una tasa similar a la de entrada, obteniendo resultados como los observados en Fig. 23.

Fig. 23. Transformación de Perspectiva con ROI manual.

Page 59: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

59

Una vez se obtiene una imagen desde el BEV, se procede a realizar la umbralización utilizando la media de la imagen en escala de grises, para luego realizar la búsqueda mediante ventanas deslizantes y hallar los puntos que permiten describir mejor el carril en la imagen transformada, como se puede observar en la Fig. 22. Analizando la imagen se aprecia que, además de hacer más ligero el procesamiento, el uso de una ROI manual en el sistema hace que haya una mayor claridad en el área de interés sobre la cual se buscan las demarcaciones del carril.

Obteniendo una mejor imagen del BEV, se realiza un ajuste polinómico para hallar el modelo del carril con base en los pixeles encontrados para las demarcaciones izquierda y derecha, representados en azul y rojo respectivamente en Fig. 24. Posteriormente se realiza la transformación inversa para dibujar el carril encontrado y la línea de centro en la imagen original como se observa en Fig. 25.

Fig. 24. Búsqueda de las demarcaciones de carril en la imagen transformada, mediante el método de ventanas deslizantes.

Fig. 25. Carril y línea de centro hallados al realizar el ajuste polinómico y la transformada inversa del BEV.

Page 60: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

60

Este sistema muestra una mayor robustez tanto en carreteras rectas, como en carreteras curvas. Pero debido a la naturaleza de su proceso de umbralización, en espacios con sombras hay error y la detección mediante ventanas deslizantes no genera resultados apropiados debido al cambio en la media de la imagen como se puede observar en Fig. 26.

Fig. 26. Detección de carril en sombra

Como solución a este problema, se propone utilizar un algoritmo que permita predecir con respecto al comportamiento anterior del sistema, para así, brindar robustez frente a sombras.

7.1.2.5 Sistema basado en características Haar-Like, región de interés, transformación de perspectiva, ventanas deslizantes y Filtro de Kalman

Teniendo en cuenta los resultados obtenidos en la sección 7.2.4, se propone el uso de un predictor que brinde mayor robustez al sistema cuando sobre la vía haya sombras que afecten la umbralización basada en la media de la imagen. Para esto se utilizó el filtro de Kalman[94] como predictor basado en los estados anteriores del sistema.

En el filtro de Kalman utilizado se definió un estado con velocidad constante, el cual describe la coordenada X del centroide de cada ventana, ver Fig. 21. Donde la

Page 61: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

61

representación matricial que regirá cada estado (A) y la matriz de observación (H) serán:

A = [1 dt0 1

] H = [1 0] (6)

Solamente se eligió la coordenada X del centroide debido a que la coordenada Y para cada centroide no cambiará en el tiempo. Una vez obtenidos los centroides de las demarcaciones derecha e izquierda, se halla el centro del carril restando el valor en x de cada centroide de la demarcación izquierda con el de la derecha, luego dividiendo dicho valor entre dos y sumando al final el valor en x del centroide izquierdo.

Con estos centroides del centro del carril y después de realizar la transformación de perspectiva inversa para obtener sus valores en la imagen original, se organizan en un vector de abajo hacia arriba para ser utilizados en la consigna de control.

Otro cambio realizado es el reemplazo de los valores lbx y rbx descritos en Fig. 18, a valores fijos como parámetros base para que el algoritmo pueda comenzar a buscar estos valores, son dos décimos y ocho décimos del ancho de la imagen respectivamente.

Para finalizar, se realiza la evaluación cualitativa de los algoritmos descritos anteriormente, sus puntos a favor y en contra bajo los criterios de: (1) robustez ante sombras, (2) detección de carril del vehículo, (3) detección y seguimiento de línea de carril curva y recta, (4) rapidez en ejecución, (5) robustez ante cambios de iluminación y color (asfalto, línea de carril). Como se aprecia en la TABLA II.

Page 62: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

62

TABLA II

Evaluación de los algoritmos por criterio

Algoritmo Criterio (1) Criterio (2) Criterio (3) Criterio (4) Criterio (5)

7.1.2.1 No cumple Cumple No cumple No cumple No cumple

7.1.2.2 No cumple No cumple No cumple Cumple No cumple

7.1.2.3 No cumple No cumple Cumple No cumple No cumple

7.1.2.4 No cumple Cumple Cumple Cumple No cumple

7.1.2.5 Cumple Cumple Cumple Cumple Cumple

Nota: Se hace una evaluación cualitativa de los algoritmos para detección y seguimiento de carril

Analizando la información de la TABLA II se infiere que el algoritmo a seleccionar para continuar el desarrollo final del sistema es el 7.1.2.5, ya que cumple con todos los criterios requeridos.

7.1.3 Desarrollo del módulo para la planeación de trayectorias

El módulo de planeación de trayectorias, tiene como objetivo describir la trayectoria más óptima que el vehículo debe de seguir, considerando las maniobras de movimiento necesarias para mantener el vehículo en el centro del carril. A partir de esta información se generan los comandos de control requeridos para que el vehículo realice la trayectoria mediante las maniobras necesarias.

Para realizar la planeación de la trayectoria del vehículo, se plantea utilizar el método de planeación de trayectorias a corto plazo, también llamado control reactivo, generando un vector de dirección que corresponda a la orientación ideal que el vehículo debe de describir. Cabe hacer la aclaración, que no se realiza planeación a largo plazo, debido a que no se cuenta con la suficiente información para utilizar este método, en donde es necesaria mucha más información como mapas de alta calidad, localización y más datos de percepción del ambiente.

Page 63: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

63

7.1.3.1 Vector de dirección basado en función de error mediante pesos.

Para hallar el vector de dirección que debe seguir el vehículo con el fin de mantenerse en el carril, se propone utilizar la función de error, descrita en la ecuación 7.

(7)

Donde i(n − 1) es la posición en el arreglo de centroides, px es la coordenada X de cada punto medio hallado y w es el ancho de la imagen. Se propone utilizar la posición del punto en el arreglo como forma de pesar cada coordenada, donde el aporte de cada punto al error va disminuyendo con respecto a qué tan lejos del carro se encuentra. Por otra parte, Se toma la mitad de la imagen debido a que la cámara debe estar centrada en el automóvil y el vehículo debe estar alineado con la mitad de la carretera.

Una vez se obtiene el error, se procede a generar el vector de dirección de la siguiente manera: Cómo se requieren dos puntos, se define que el punto de inicio p1 estará ubicado con la coordenada X en la mitad del ancho de la imagen w/2 y la coordenada Y en el final del largo de la imagen h. El punto final p2, será ubicado con su coordenada X en w/2 más el valor que proporcione el error, resultando como tal w/2 + Error y mediante la coordenada Y se define la sensibilidad del sistema. Para una primera aproximación, se utilizó como dos tercios del valor del largo de la imagen 2h/3. Se observa que mediante el cambio de la coordenada Y de p2 se puede variar la sensibilidad del sistema, es decir, qué tanto afecta el cambio del error al ángulo de dirección. Ver Fig. 27.

Fig. 27. Primera aproximación del vector de dirección.

Page 64: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

64

Fig. 28. Resultados de la primera aproximación del vector de dirección en curvas hacia la derecha, izquierda y tramo recto.

Como se puede observar en Fig. 28, este método presenta un sesgo hacia la derecha del carril. Esto se debe principalmente a que, al realizar la transformación inversa de perspectiva de los puntos, se observa que el centro del carril se encuentra desplazado predominantemente a la derecha del centro de la imagen.

Teniendo esto en cuenta, se procede a cambiar el set point de la mitad de la imagen a la coordenada X del primer punto de los centroides del centro del carril, obteniendo los resultados descritos en Fig. 29.

Fig. 29. Resultados de la segunda aproximación del vector de dirección en curvas hacia la derecha, izquierda y tramo recto.

Como se puede observar en Fig. 29, el cambio ahora muestra un sesgo hacia la izquierda.

Considerando los resultados obtenidos después de evaluar este método se concluye que, esta aproximación cuenta con muchas falencias. Una de ellas es la transformación inversa de los puntos hallados en el espacio de BEV al espacio original de la imagen, ya que sobre la vista original no se debería proyectar el vector de posición, este vector se debe considerar y usar directamente en el espacio donde se hallan los centroides, principalmente porque sobre la vista superior o BEV del vehículo es donde se proyecta el vector de dirección, no sobre la vista frontal

Page 65: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

65

disponible desde la imagen de la cámara. Otra falencia del sistema, es la construcción heurística del vector de dirección, ya que hay muchos factores que pueden afectar la sensibilidad del vector frente a cambios en el carril. Para concluir y teniendo esta información en cuenta, se realizan las correcciones correspondientes para la siguiente iteración y se propone trabajar directamente con el vector en el espacio de BEV.

7.1.4 Solución final

En esta sección se consigna el proceso de mejora y desarrollo detallado del algoritmo seleccionado en la sección 7.1.2, a su vez en conjunto con la sección 7.1.3. Primeramente, se inicializan parámetros necesarios para el sistema, como el ROI a utilizar, la característica Haar-Like vertical, en vez de la diagonal dado que se trabajará con BEV, además, la cantidad de ventanas deslizantes a trabajar y, por último, la creación de los filtros de Kalman para cada ventana, descritos en la sección 7.1.2.5.

Una vez el nodo subscriptor recibe la primera imagen de la cámara, se procede a inicializar los filtros de Kalman con el valor de lbx para los filtros de las ventanas de la izquierda y rbx para los filtros de las ventanas de la derecha. Este paso solo se realiza para la primera imagen que se recibe de la cámara.

Luego, se halla la matriz de transformación de perspectiva para obtener el BEV de la imagen a partir de los puntos definidos en el ROI. Dicha imagen BEV, es luego pasada a escala de grises para poder realizar el filtrado con la característica Haar-like vertical de la Fig. 12e. Esta característica fue elegida en vez de las descritas en la Fig. 12 debido a que se realiza una transformación de perspectiva, dicha transformación elimina la necesidad de detectar líneas inclinadas hacia la derecha o izquierda.

Fig. 30. Imagen filtrada con la característica Haar-like vertical.

Page 66: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

66

Una vez filtrada la imagen, ver Fig. 30, se realiza su umbralización en dos pasos. Estos dos pasos son para dividir la imagen entre la mitad del carril izquierdo y el derecho, debido a que la umbralización de cada mitad es independiente de la otra. Cabe aclarar que, aunque se realiza el mismo proceso para ambas mitades, cada mitad cada mitad es tratada como una imagen separada una de la otra.

El primer paso de la etapa de umbralización es la ecualización del histograma de la imagen, esto se realiza con el fin de resaltar los pixeles más claros de la imagen los cuales son los pertenecientes a las demarcaciones del carril debido al contraste entre el color de éstas y el de la carretera. Como el proceso de ecualización puede resultar en una imagen algo ruidosa, se pasa un filtro promedio de 5x5 para eliminar dicho ruido, como se observa en Fig. 31.

Fig. 31. Carril en BEV luego de ecualización de histograma y filtro promedio

Se realiza corrección de gamma a cada pixel para opacar los pixeles más oscuros y mantener los más claros, donde se elige un valor de 0.05 para el gamma.

I = uint8 ((

I

255)

10.05

∗ 255) (8)

Una vez se tiene la imagen donde las características deseadas han sido aumentadas, se realiza la binarización tomando el rango de valores entre 240 y 250 (B(I)) de la siguiente manera y dando como resultado la Fig. 29:

B(I) = {240 < I < 250 → I = 255

I = 0 (9)

Page 67: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

67

Fig. 32. Imagen binaria del carril en BEV.

Una vez las demarcaciones del carril son realzadas como pixeles blancos en la imagen binaria, ver Fig. 32, se pasa las ventanas deslizantes descritas en Fig. 16 y con los centroides de cada ventana se utiliza el filtro de Kalman descrito en la subsección 7.1.2.5. Los centroides que describen la posición de las demarcaciones de las líneas, son marcados con rojo cuando el filtro de Kalman hace actualización, es decir, hay suficientes pixeles para decidir que se hizo detección de la demarcación; o marcados en azul o verde cuando el filtro de Kalman hace predicción, es decir, el filtro no cuenta con una buena detección y debe utilizar su modelo interno para predecir cuál será el valor del estado en el siguiente instante de tiempo.

Una vez se obtienen todos los centroides que describen ambas demarcaciones, ver Fig. 33, se emparejan entre izquierda y derecha por el valor de sus coordenadas Y, para realizar la resta entre sus valores de coordenadas X y así hallar la línea que debe seguir el carro para mantenerse en la mitad del carril. Estos puntos que describen la línea central, son guardados para determinar el ángulo con el cual el carro debe girar para mantenerse en el centro del carril.

Fig. 33. Centroides que describen las demarcaciones izquierdas y derecha del carril, junto con el carril central hallado.

Page 68: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

68

Por último, para generar la consigna de control, se genera un vector entre el primer y el tercer punto de la lista de centroides que describen el centro del carril. Con este vector, se halla el ángulo de giro (θ) para el auto de la siguiente manera, teniendo en cuenta que pt1 es la cola del vector y pt2 es la cabeza del vector:

θ = arcsin

(

pt2x − pt1x

√(pt2y − pt1y)2+ (pt2x − pt1x)2)

(10)

Para efectos de visualización, se dibuja el vector del cual se halla el ángulo de giro para el vehículo y se realiza la transformación inversa de la imagen del carril hallado junto con un método de mezcla de imágenes, ver Fig. 34, para colocar los puntos hallados del carril sobre la imagen original, como se observa en Fig. 35 y Fig. 36.

Fig. 34. Vector de dirección para el vehículo visto desde BEV.

Fig. 35. Imagen mezclada del carril hallado sobre la imagen original

Page 69: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

69

Fig. 36. Prueba del sistema bajo poca luminosidad.

7.2 DESARROLLO DE LA SIMULACIÓN

En este capítulo se consigan el trabajo realizado para desarrollar la simulación del robot Autónomo Uno en conjunto con el sistema de visión artificial. Para ello fue necesario dividir este proceso en tres etapas, primero la generación del modelo 3D, en segundo lugar, la generación de la descripción URDF y por último la integración de los controladores y el sistema de visión artificial, todo ello con la finalidad de otorgar al robot Autónomo Uno las herramientas necesarias para realizar una trayectoria a corto plazo que le permita mantenerse en el centro del carril dentro de un entorno de simulación.

Page 70: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

70

7.2.1 Generación del modelo 3D

El desarrollo del modelo 3D del robot Autónomo Uno, se realizó tomando como punto de partida los resultados obtenidos en la tesis[83], sin embargo, fue necesario rediseñar algunas piezas y modificar el ensamblaje con el objetivo de obtener una mejor descripción del robot para la generación del URDF necesario para el entorno de simulación, ver Fig. 37.

Fig. 37. Modelo 3D del robot Autónomo Uno en SolidWorks

La descripción en formato URDF es un requerimiento necesario para realizar una simulación adecuada dentro ROS y Gazebo. Para generar esta descripción se desarrollaron tres alternativas diferentes: inicialmente la utilización del plugin de exportación desarrollado para SolidWorks (sw_urdf_export)[95], como segunda alternativa, se planteó utilizar el formato desarrollado para el entorno de simulación Gazebo, Simulation Description Format (SDF) el cual permite describir objetos y entornos para la simulación, visualización y control de robots y a partir de esta descripción transformarlo en una descripción URDF.

7.2.2 Generación de la descripción URDF

7.2.2.1 Generación del URDF usando el plugin sw_urdf_export

Como primera medida para la generación de la descripción URDF usando el plugin sw_urdf_export, se hace de suma importancia definir de forma exacta cada uno de los ejes de rotación para los elementos móviles, también llamados links, además de cada uno de los marcos de referencia para la estructura de padre-hijo en la cual se basa el modelo de árbol URDF. Esto se puede definir ya sea dentro de cada pieza

Page 71: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

71

o en el ensamblaje final, para el caso se realizó definiendo los ejes y marcos dereferencia dentro del ensamblaje final del modelo.

TABLA III

Descripción de características para cada link

Nombre del eslabón Eje de rotación Tipo de unión

base_footprint Ninguno Fijo

Base_link Ninguno Fijo

right_front_dir_link Eje Y Revoluto

left_front_dir_link Eje Y Revoluto

left_front_wheel_link Eje Y Continuo

right_front_wheel_link Eje Y Continuo

left_back_wheel_link Eje Y Continuo

right_back_wheel_link Eje Y Continuo

Nota: Se hace una descripción de los links del modelo 3D realizado según la estructura de árbol URDF, así como los ejes de rotación y el tipo de unión asociado.

Una vez definido cada uno de los ejes y marcos necesarios para los elementos movibles, se crea la generación del árbol de jerarquía padre-hijo, cabe resaltar que para robots móviles es necesario generar un objeto pequeño sólido, que corresponda al centro del vehículo con el objetivo de desarrollar correctamente la simulación. En esta descripción jerárquica se estipula cual será el link padre, el link hijo, la unión (joint) asociada en la interacción de estos dos elementos, el tipo de unión a utilizar (revoluta, fija, continua o prismática), el eje de rotación de la unión y el marco de referencia de la misma, este proceso se realiza de esta manera para cada uno de los elementos, obteniendo la descripción ilustrada en Fig. 38 y Fig. 39.

Page 72: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

72

Fig. 38. Generación del árbol URDF

Posteriormente, el plugin utiliza la información suministrada y la asocia a cada elemento del modelo 3D, para calcular la posición relativa frente a su respectivo link padre y marco de referencia, adicionalmente, computa la matriz de inercias referentes a cada elemento y para finalizar, exporta dicha información en una carpeta contenedora de la descripción URDF del modelo, los elementos visuales (mesh) necesarios para el modelo, los cuales se exportan en formato STL, un archivo ejecutable para el sistema ROS para visualizar el modelo en la herramienta de visualización Rviz y un archivo ejecutable para simular el modelo en Gazebo.

Page 73: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

73

Fig. 39. Exportación del modelo 3D a URDF.

Con esta información y utilizando la herramienta de rápida visualización de modelos URDF compatible con el sistema operativo Windows, V-rep, fue posible obtener una visualización concreta del modelo generado mediante el plugin en la estructura URDF. Como se observa en Fig. 40, se obtuvieron resultados no deseados, en los cuales algunos elementos del modelo se ubican en posiciones aleatorias inadecuadas, al igual que algunos marcos de referencia se encuentran rotados.

Fig. 40. Visualización del modelo URDF en V-Rep

Page 74: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

74

Analizando este comportamiento, se puede apreciar que son los elementos visuales los que plantean un desafío, pero no directamente las uniones o marcos de referencia, por este motivo, se corrigió este problema situando cada uno de los elementos visuales en la correspondiente posición y orientación utilizando el software de modelado 3D Blender, ver Fig. 41. Adicionalmente se orientaron los marcos de referencia conforme a los estándares necesarios. Una vez obtenido un resultado visual aceptable se continuó con el proceso de simulación.

Fig. 41. Visualización del modelo completo en el Software Blender

7.2.2.2 Generación del URDF a partir de la descripción SDF

El proceso de generación del URDF se desarrolló tomando en consideración los elementos visuales generados en la sección 8.2.1, que corresponden con el chasis o cuerpo completo del robot Autónomo Uno, ruedas y elementos de dirección. Adicionalmente, fue necesario utilizar la herramienta de modelado MeshLab para obtener la matriz inercias de cada elemento visual. Al tener toda la información necesaria se generó un archivo de extensión SDF, en el cual se agregaron uno a uno los elementos visuales y los valores de inercia correspondiente, posteriormente mediante el software Gazebo y su herramienta de edición[96], se estipuló la posición de los elementos visuales, la posición y orientación de las uniones, ejes de rotación y se definió la estructura padre-hijo para cada elemento, como se observa en Fig. 42.

Page 75: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

75

Fig. 42. Simulación de la descripción SDF utilizando el software Gazebo.

Obtenida la descripción del modelo en formato SDF, se utilizó la herramienta para realizar la conversión de dicho formato a una estructura URDF[97] y se corroboró que la conversión del mismo fuera adecuada generando un gráfico de visualización como se muestra en Fig. 43, la cual permite identificar cada eslabón, unión y su orientación, por lo tanto, tomando los resultados obtenidos se continua al proceso de simulación.

Fig. 43. Estructura de árbol URDF

Page 76: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

76

7.2.3 Controladores para el entorno virtual en gazebo

Con la finalidad de simular toda la dinámica del mundo real, se utilizó la herramienta de simulación Gazebo, para ello fue necesario realizar modificaciones a la descripción URDF con el fin de generar el mejor comportamiento dentro del entrono simulado. Inicialmente se adicionan los elementos correspondientes a la fricción estática y dinámica para los elementos móviles, siguiendo la estructura de árbol jerárquico padre-hijo. Por otra parte, un factor muy importante para simular el movimiento del robot Autónomo Uno son los actuadores, los cuales permiten la generación del movimiento en cada elemento móvil, para ello se requiere asignar un elemento de transmisión a cada unión, definiendo el tipo de interfaz y el tipo de controlador asociado al mismo.

Fig. 44. Controladores base de la clase ros_control. [98]

Considerando las interfaces y controladores existentes en el sistema meta-operativo ROS, ver Fig. 44, se hizo un análisis detallado del comportamiento de cada uno y luego se seleccionó uno en función de las necesidades existentes; de modo que se utilizó la interfaz base que corresponde a controladores de tipo esfuerzo, siendo éste el tipo de dato generado por el controlador y posteriormente controladores de posición y velocidad para la dirección del robot y velocidad de las llantas respectivamente. La Fig.45 ilustra un fragmento de la descripción URDF en la cual se evidencia la adecuada definición de los controladores utilizados.

Page 77: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

77

Fig. 45. Definición en el URDF de la interfaz y tipo de controlador para una rueda.

Cabe aclarar que este controlador es el encargado de generar la interfaz entre el URDF, el middleware ROS y el entorno de simulación Gazebo, por esta razón, es importante entender el flujo de trabajo desarrollado por el controlador en el momento de implementar dicha interfaz.

Fig. 46. Flujo de trabajo de un controlador. [73]

En la Fig. 46, se observa que existen procesos que se realizan fuera del tiempo real de simulación, como la inicialización del controlador, así como procesos que se ejecutan durante el desarrollo de la simulación, como la actuación en los elementos móviles. Este modelo brinda la facilidad de hacer modificaciones al controlador sin la necesidad de tener el sistema ejecutando la simulación. Por otra parte, para que este controlador pueda ser identificado, siga este flujo de trabajo y brinde el funcionamiento requerido, se hace necesario registrarlo al gestor de controladores, el cual se encarga de vincular/desvincular la ejecución de un controlador especifico, definir los límites mínimos y máximos de la respuesta del controlador, identificar y excluir un controlador para una sola fuente evitando la colisión de información, como se muestra en Fig. 47.

Page 78: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

78

Fig. 47. Flujo de trabajo del gestor de controladores. [73]

Definidos los elementos de transmisión, la interfaz para los controladores e identificado el comportamiento de la clase base de los controladores, se realizó la configuración de los coeficientes P, I y D correspondientes para cada uno de los controladores, definidos mediante un archivo de extensión yaml, dentro del cual se estipula el nombre de la unión asociado al controlador, el tipo de interfaz a utilizar y las constantes de control para el PID, Fig. 48.

Fig. 48. Descripción del PID para las uniones de dirección y tracción.

Los valores de cada una de las constantes de control para el PID fueron calculados mediante el método de Ziegler-Nichols[99], analizando el comportamiento de cada uno de los controladores frente a una señal de entrada. Para realizar la sintonización de estas constantes se utilizó la herramienta de monitoreo RQT, desde la cual se analizó el comportamiento de la señal de salida del controlador frente a una señal de entrada constante y variable tipo escalón, encontrando que, aunque el controlador presenta pequeños valores de ruido debido a la dinámica del sistema de simulación, los valores definidos fueron suficientes para generar el comportamiento necesario en comparación con el sistema sin control, ver Fig. 49.

Page 79: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

79

Fig. 49. (a) Respuesta del sistema sin controlador. (b) Respuesta del sistema con controlador PI.

7.2.4 Simulación del robot Autónomo Uno

Para validar el comportamiento de las descripciones desarrolladas y tomando en consideración los resultados obtenidos durante la etapa de control para la simulación en el entorno virtual de Gazebo, se desarrolló un nodo con la finalidad de controlar la dirección y la velocidad de las ruedas por medio de consignas de control para el adecuado desplazamiento del robot Autónomo Uno. A partir de los mensajes de tipo Twist, que brindan información de la velocidad relativa en cada eje en sus componentes angular y linear, se realiza el procesamiento para generar la dinámica del movimiento de vehículos móviles tipo Ackermann a través del sistema de traspaso de información desarrollado para ROS, el cual se puede observar en la Fig. 50 donde se describen las interacciones del controlador con el entorno de simulación en Gazebo.

Page 80: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

80

Fig. 50. Estructura de comunicación del controlador Ackermann con Gazebo

7.2.4.1 Simulación del URDF generado a partir del plugin sw_urdf_export

Una vez corregido el modelo visual del URDF generado, se dio inicio a la etapa de simulación, para ello y como primer paso se utilizó la herramienta de visualización de estado del robot Rviz, Fig. 51, desde la cual se carga el modelo URDF generado, vinculando los elementos visuales, eslabones y uniones; con esta herramienta se observó que no se presentaban problemas de posicionamiento del modelo y mediante el plugin de la misma, fue posible verificar el movimiento primitivo de las uniones móviles dentro de los límites establecidos.

Fig. 51. Visualización del modelo en Rviz

Page 81: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

81

Posteriormente, se realizó un ejecutable de extensión launch, que permite lanzar todos los nodos y procesos requeridos dentro de ROS y además la simulación dentro de Gazebo, sin embargo, el modelo presentaba un comportamiento no deseado, ya que, cada una de las partes se limitaban a posicionarse en el marco de referencia global asociado al mundo de la simulación, al igual que todos las uniones y centros de masa, como se aprecia en Fig. 52.

Fig. 52. Simulación del modelo generado a partir del plugin sw_urdf_export en Gazebo. A) Simulación ejecutando B) Simulación detenida en estado inicial

Este comportamiento se presentaba justo después de iniciar la simulación en el mundo virtual Fig. 52 ítem (A), por otra parte, en el modelo en estado inicial y con la simulación detenida Fig. 52 ítem (B), se puede identificar que cada uno de los elementos del modelo están ubicados correctamente. En cuanto a los controladores para la simulación, se observó, que al hacer el monitoreo de los controladores de posición y velocidad cada uno de ellos se ejecutaban conforme a lo establecido siguiendo la estructura de traspaso de información descrita en Fig. 50, comunicando los valores enviados desde una señal de entrada procesando dicho valor y transformándolo en comandos de control para el tópico de las uniones móviles, pero sin ninguna variación dentro del entorno virtual. En vista a este comportamiento se decidió no continuar con el proceso de simulación a partir de la descripción generado por el plugin sw_urdf_export.

7.2.4.2 Simulación del modelo generado a partir de la descripción SDF

Inicialmente se utilizó la herramienta de visualización de estado del robot Rviz para verificar el estado del modelo generado, sin considerar condiciones dinámicas y estáticas, con esta herramienta fue posible corroborar que la descripción urdf no presentaba problemas bajo estas condiciones y a su vez realizaba los movimientos dentro de los límites establecidos, esto se realizó mediante la integración de

Page 82: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

82

joint_state_publisher y Rviz, que permitio modificar el estado de las uniones bajo parámetros dados, como se observa en Fig. 53.

Fig. 53. Visualización del modelo generado en Rviz

A continuación, se creó un archivo de extensión launch, que permite lanzar todos los nodos y procesos requeridos dentro de ROS y Gazebo, resultando en la carga y ejecución de todos los controladores desarrollados según lo establecido, adicionalmente, el modelo se cargaba y comportaba adecuadamente en estado estacionario con la simulación detenida y por consiguiente, al iniciar la simulación dentro del entorno virtual de Gazebo, el modelo se mantenía bajo los parámetros definidos, conservando su posición y orientación para las uniones, elementos visuales y centros de masa.

Se debe agregar qué, como se presentó durante el desarrollo del proceso de control, incluso después de la configuración de los controladores PID existía un leve ruido en la respuesta del sistema dentro del entorno de simulación, debido a las condiciones físicas tanto del modelo como del mismo mundo virtual. Así mismo, este comportamiento se vio reflejado en la simulación del robot Autónomo Uno, dado que presentaba un desplazamiento leve bajo condiciones iniciales, ahora bien, al suministrar un valor de set point tanto para las velocidades como para la dirección del robot, el valor del ruido se reducía y los controladores se comportaban conforme a lo requerido, permitiendo su desplazamiento dentro del entorno de simulación.

Page 83: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

83

7.2.5 Integración del sistema de visión artificial con el entorno de simulación

Utilizando la facilidad de traspaso de información que brinda ROS, se hace sencillo la integración del sistema de visión artificial con toda la dinámica del entorno de simulación, puesto que el nodo “lane_model” realiza el procesamiento de la información a partir de imágenes y videos, posteriormente este mismo nodo brinda la información resultante de dicho proceso a un tópico especifico llamado “steer_angle_img” finalizando el proceso de visión artificial.

Tomando como punto de partida dicha información, se ejecuta el proceso de simulación y control de la dirección del robot tipo Ackermann Autónomo Uno, mediante el nodo “Ackermann_controller” el cual se encarga de realizar el procesamiento de la información para posteriormente publicar la información resultante, que corresponde a las consignas de control, a los respectivos controladores, como se ve en Fig. 54.

Adicionalmente y considerando el marco del proyecto, se utilizó la misma dinámica de traspaso de información publicador-subscriptor, con el objetivo de modificar la velocidad de desplazamiento del robot tipo Ackermann por medio de la herramienta RQT, específicamente el plugin que permite modificar y publicar la velocidad linear y angular en el nodo /cmd_vel_safe con tipo de mensaje Twist, puesto que es éste el tipo de información que junto con el ángulo de direccionamiento son requeridos por el nodo “Ackermann_controller” para determinar las consignas de control y realizar adecuado desplazamiento del robot en el entorno de simulación.

Page 84: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

84

Fig. 54.Visualización de todos los nodos involucrados en la simulación del robot tipo Ackermann Autónomo Uno.

Page 85: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

85

Como resultado, en Fig. 55 se puede apreciar todo el sistema ejecutándose simultáneamente, en donde a partir de un video se realiza la detección de carril en el cual se encuentra el vehículo, se predice dicho carril en caso de pérdida u obstrucción por condiciones externas y se identifica el ángulo de direccionamiento para mantener la posición central del vehículo respecto al carril; posteriormente, esta información se utiliza para generar consignas de control al robot tipo Ackermann Autónomo Uno en el entorno de simulación por medio de las interfaces de control desarrolladas.

Fig. 55. Simulación completa del sistema

7.3 VALIDACIÓN EN UNA PLATAFORMA REAL

En relación a la validación del sistema de seguimiento de carril con una plataforma existente, cabe aclarar que, como se ha mencionado anteriormente dicha plataforma será el robot Autónomo Uno, el cual está equipado con un sistema que permite la rápida conexión a ROS mediante el protocolo de comunicación Secure Shell (SSH). Este protocolo utiliza la arquitectura de comunicación cliente/servidor, por consiguiente, el primer paso a desarrollar para la vinculación con la plataforma física consiste en realizar la conexión remota vía WiFi, desde el Computador central hacia el microprocesador del robot Autónomo Uno, como se estructura en el diagrama de flujo, ver Fig. 54.

Page 86: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

86

Fig. 56. Diagrama de flujo para la conexión cliente-servidor.

Una vez establecida la conexión, se ejecuta el nodo correspondiente al sistema de visión artificial y adicionalmente éste ejecuta un nodo que realiza la conversión del ángulo de direccionamiento a comandos de velocidad angular. Se define una velocidad linear constante de 0.5 m/s y se publican en el tópico cmd_vel de mensaje tipo Twist, este paso se realiza considerando que el robot Autónomo Uno requiere de esta información para computar y enviar las consignas de control a cada uno de los motores destinados para la dirección y tracción del robot.

Page 87: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

87

Fig. 57. Validación del sistema en: (a) Curva hacia la izquierda, (b) Carril recto, (c) Curva hacia la derecha.

Como se puede observar en Fig. 33 y Fig. 34, el sistema detecta y crea un adecuado modelo del carril, aún en presencia de sombras. Por otra parte, al observar el BEV en paralelo con la imagen mezclada, ver Fig. 55 fila 1 y fila 2 respectivamente, se aprecia que el vector de dirección responde de acuerdo a la forma del carril, es decir, apuntando hacia arriba cuando el carril es recto, hacia la derecha o izquierda cuando se presenta la curva correspondiente, ver Fig. 55 columnas b, c, a. Este comportamiento también se cumple en la simulación como se muestra en Fig. 55 fila 3, para todos los posibles casos.

Fig. 58. Validación del sistema de seguimiento de carril en el robot Autónomo Uno

Page 88: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

88

Para concluir, cabe resaltar que la validación realizada es cualitativa, ya que no se tiene una información base, conocida en inglés como ‘ground truth’. En Fig. 56 se puede apreciar que, al ejecutar todo el sistema de seguimiento de carril, el robot Autónomo Uno se comporta conforme a lo establecido, siguiendo el ángulo de direccionamiento y la velocidad lineal estipulada. Lo anterior quiere decir que el robot logra de forma sincronizada realizar el mismo cambio del ángulo a medida que cambia la carretera en el vídeo.

Page 89: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

89

8. CONCLUSIONES Y TRABAJO A FUTURO

En este proyecto de grado se logró desarrollar un sistema de percepción y planeación de trayectorias a corto plazo, con objeto de generar consignas de control para realizar el desplazamiento de un vehículo autónomo en ambientes urbanos. Dejando como punto de partida el primer desarrollo del sistema seguimiento de carril, considerado uno de los más importantes en los sistemas avanzados de conducción asistida (ADAS), dando paso a diversas aplicaciones de investigación a futuro en el campo de la robótica y más concretamente, en el campo de los vehículos autónomos.

En los vehículos autónomos la tarea de seguimiento de carril puede ser solucionada de diferentes formas, sin embargo, se debe considerar aspectos como la capacidad de procesamiento, la cantidad de datos y la fidelidad del modelo deseado. En donde un buen balance de estas características puede resultar en buen sistema de percepción, por ejemplo, el sistema aquí desarrollado.

El desarrollo metódico y progresivo del sistema de visión artificial, contribuyó a obtener un resultado robusto en la detección y seguimiento de carril, durante este proceso se evidenciaron diferentes limitantes y alternativas para cumplir con el objetivo del proyecto, lo que se traduce en otras palabras, en un sistema que considera diferentes factores externos y ruido al momento de realizar su labor, brindando un resultado eficiente y eficaz.

Mediante la integración del sistema de seguimiento de carril y planeación de trayectorias con el robot Autónomo Uno, se demostró que el sistema aquí desarrollado puede ser adaptado a diferentes robots móviles terrestres que consideren la morfología tipo Ackermann, diferencial y/o cualquier otro tipo. Para ello, teniendo como requisito la adecuada calibración del sistema de cámaras para realizar la selección del ROI y la comunicación con ROS por medio de SSH.

Un factor que afecta de manera considerable el trabajo realizado es la selección de un área de interés (ROI) para todo el proceso de visión artificial, como se mencionó durante el desarrollo, obtener un ROI influye directamente en las etapas subsiguientes de procesamiento, como lo es encontrar la matriz de transformación necesaria para generar la vista superior del carril (BEV), a partir del cual se realiza todo el proceso de umbralización y detección del carril. Para solventar este problema se decidió hacer la selección manual del ROI, ya que por condiciones externas de calibración y posicionamiento de la cámara generar un proceso automático de selección incrementa la complejidad del sistema, la aparición de errores y la capacidad de computo necesaria.

Page 90: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

90

La utilización del BEV es un factor importante considerando que reduce el error en la detección de carril, la capacidad de computo requerida para el proceso de detección y seguimiento e incrementa de manera considerable la facilidad de extracción de características, esto en comparación con el realizar el procesamiento sobre toda la imagen originalmente capturada.

Durante el desarrollo del sistema de visión artificial, se notó la gran utilidad del Filtro de Kalman, puesto que bajo algunas consideraciones realiza un trabajo excelente para aplicaciones de seguimiento y predicción, como se notó al exponer el sistema a sombras o condiciones externas que limitaran la visión constante sobre el carril.

Debido a la tendencia reciente de utilizar redes convolucionales (CNN) en tareas relacionadas con visión, se propone el uso de segmentación semántica como forma de eliminar el área de interés que debe ser colocada de manera heurística en este sistema. Adicionalmente, el utilizar aprendizaje mediante refuerzo para la generación de la trayectoria a corto plazo y comparar con los métodos propuestos en este proyecto.

Las diferentes herramientas open source utilizadas fueron como tal de gran aporte al desarrollo del trabajo, como OpenCV y el Sistema Operativo Robótico (ROS). Gracias a ellas fue posible realizar todo el proceso de visión artificial, simulación en un entorno virtual y validación en una plataforma física, dando como resultado la posibilidad de avanzar rápidamente en el desarrollo de nuevas áreas de la mecatrónica y la robótica.

Teniendo en cuenta el modularidad en ROS, se pueden crear sistemas de procesamiento distribuido, donde el procesamiento principal es realizado en una estación de trabajo y mediante redes inalámbricas, son enviadas las consignas de control a un computador de bolsillo encargado de controlar el robot móvil, sin la necesidad de crear redes elaboradas de comunicación.

El tiempo de respuesta de la plataforma física se ve limitado debido a los componentes de hardware existentes y la comunicación Wifi entre el cliente y el servidor, sin embargo, de haberse utilizado en el robot un microprocesador con más altas prestaciones, se hubiese podido utilizar un método distinto reduciendo la latencia en el traspaso de información.

Page 91: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

91

REFERENCIAS

[1] S. P. Narote, P. N. Bhujbal, A. S. Narote y D. M. Dhane, “A review of recentadvances in lane detection y departure warning system,” Pattern Recognit.,vol. 73, pp. 216–234, 2018.

[2] El Tiempo, “Producción de petróleo bajó en 2017 en Colombia,” Periodico ElTiempo, [En línea]. Disponible en:https://www.eltiempo.com/economia/sectores/produccion-de-petroleo-bajo-en-2017-en-colombia-171848.

[3] P. Tientrakool y . C. Ho y N. F. Maxemchuk, “Highway capacity benefits fromusing vehicle-to-vehicle communication y sensors for collision avoidance,”IEEE Veh. Technol. Conf., pp. 1–5, 2011.

[4] D. Muoio, “19 companies racing to put self-driving cars on the road by 2021,”Business Insider, [En línea]. Disponible en:https://www.businessinsider.com/companies-making-driverless-cars-by-2020-2016-10/#tesla-is-aiming-to-have-its-driverless-technology-ready-by-2018-1.

[5] E. Ackerman, (2012,Sep. 4) “Study: Intelligent Cars Could Boost HighwayCapacity by 273%”. [En línea]. Disponible en:https://spectrum.ieee.org/automaton/robotics/artificial-intelligence/intelligent-cars-could-boost-highway-capacity-by-273.

[6] S. Álvarez, (2016, abr. 29) “La máquina que cambió el mundo: la revoluciónindustrial del Ford Model T”. [En línea]. Disponible en:https://www.diariomotor.com/espacio-ford/2016/04/29/ford-model-t-produccion-masa/.

[7] The Milwaukee Sentinel, “‘Phantom Auto’ will tour city.,” The MilwaukeeSentinel, Milwaukee, p. 14, 08-Dec-1926.

[8] Magazine Pontiac Safari, “Visiting the New York World’s Fair y the GeneralMotors Futurama," Magazine Pontiac Safari, [En línea]. Disponible en:http://www.nywf64.com/gm19.shtml.

Page 92: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

92

[9] R. Dashner, “General Motors’ ‘FUTURAMA II,’” Ray Dashner Archives. 2007. [En línea].. Disponible en http://www.nywf64.com/gm21.shtml

[10] T. Vanderbilt, “Autonomous Cars Through the Ages,” WIRED, [En línea]. Disponible en: https://www.wired.com/2012/02/autonomous-vehicle-history/

[11] Accenture Insurance, (2017, Ene. 10). “Where in the world are self driving cars ? world are,” [En línea]. Disponible en: https://insuranceblog.accenture.com/where-in-the-world-are-self-driving-cars.

[12] Dinero, “Colombia aún no está preparada para la conducción autónoma, según Toyota,” Dinero, [En línea]. Disponible en: https://www.dinero.com/empresas/articulo/toyota-celebra-50-anos-en-colombia-habla-sobre-conduccion-autonoma/252858.

[13] J. Caparroso, “¿Cuándo llegarán los carros autónomos a Colombia?,” El Tiempo. [En línea]. Disponible en: https://www.eltiempo.com/tecnosfera/novedades-tecnologia/futuro-de-los-carros-autonomos-en-colombia-93398.

[14] K. Waddell, “Prepping Self-Driving Cars for the World’s Most Chaotic Cities,” WIRED, [En linea]. Disponible en: https://www.wired.com/story/self-driving-cars-chaotic-cities-traffic/.

[15] D. J. Fagnant y K. M. Kockelman, “Preparing a nation for autonomous vehicles,” Transp. Res. Part A J., vol. 77, no. October, pp. 1–32, 2013.

[16] G. Reinoso, “Cada día mueren 18 personas en accidentes vehiculares en el país,” El Tiempo. [En línea]. Disponible en: https://www.eltiempo.com/colombia/otras-ciudades/cifras-de-accidentes-de-transito-en-2016-39192.

[17] El Tiempo, “Parque automotor de colombia es de 12.5 millones de vehículos,” Revista El Tiempo. [En línea]. Disponible en: http://www.motor.com.co/actualidad/industria/parque-automotor-colombia-12-millones-vehiculos/27016.

[18] McKinsey&Company, “Automotive revolution – perspective towards 2030,”

Page 93: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

93

Stanford Univ. PEEC Sustain. Transp. Semin., no. January 1st, p. 20, 2016.

[19] J. Son, H. Yoo, S. Kim y K. Sohn, “Real-time illumination invariant lane detection for lane departure warning system,” Expert Syst. Appl., vol. 42, no. 4, pp. 1816–1824, 2015.

[20] N. Madrid y P. Hurtik, “Lane departure warning for mobile devices based on a fuzzy representation of images,” Fuzzy Sets Syst., vol. 291, pp. 144–159, 2016.

[21] A. Mammeri, A. Boukerche y Z. Tang, “A real-time lane marking localization, tracking y communication system,” Comput. Commun., vol. 73, pp. 132–143, 2016.

[22] H. Zhu, K. V. Yuen, L. Mihaylova y H. Leung, “Overview of Environment Perception for Intelligent Vehicles,” IEEE Trans. Intell. Transp. Syst., vol. 18, no. 10, pp. 2584–2601, 2017.

[23] K. Jihum, L. Minho, "Robust Lane Detection Based On Convolutional Neural Network y Random Sample Consensus", International Conference on Neural Information Processing, Neural Information Processing, vol. 8834, pp. 454-461, 2014. doi: https://doi.org/10.1007/978-3-319-12637-1_57

[24] X. Pan, J. Shi, P. Luo, X. Wang, X. Tang, "Spatial As Deep: Spatial CNN for Traffic Scene Understanding", arXiv e-prints, Dic, 2017. [En línea]. Disponible en https://arxiv.org/abs/1712.06080

[25] F. Visin, K. Kastner, K. Cho, M. Matteucci, A. Courville y . Bengio, "ReNet: A Recurrent Neural Network Based Alternative to Convolutional Networks", arXiv e-prints, May, 2015. [En línea]. Disponible en https://arxiv.org/abs/1505.00393

[26] P. Krähenbühl, V. Koltun, " Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials", arXiv e-prints, Oct, 2012. [En línea]. Disponible en https://arxiv.org/abs/1210.5644

[27] C. Katrakazas, M. Quddus, W. H. Chen y L. Deka, “Real-time motion planning methods for autonomous on-road driving: State-of-the-art y future research

Page 94: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

94

directions,” Transp. Res. Part C Emerg. Technol., vol. 60, pp. 416–442, 2015.

[28] P. Varuya, “Smart carts on smart roads: Problems of control,” IEEE Trans. Automat. Contr., vol. 43, no. 2, pp. 195–207, 1998.

[29] S. M. LaValle, “Rapidly-Exploring Random Trees: A New Tool for Path Planning,” 1998. Consultado en: 5, 13, 2018. [En línea]. Disponible en: http://msl.cs.illinois.edu/~lavalle/papers/Lav98c.pdf

[30] J. Ziegler y C. Stiller, “Spatiotemporal state lattices for fast trajectory planning in dynamic on-road driving scenarios,” 2009 IEEE/RSJ Int. Conf. Intell. Robot. Syst. IROS 2009, pp. 1879–1884, 2009.

[31] C. Alia, T. Reine y C. Ali, “Maneuver Planning for Autonomous Vehicles , with Clothoid Tentacles for Local Trajectory Planning,” IEEE 20th International Conference on Intelligent Transportation Systems (ITSC), pp. 1-6, Mar, 2017. November, 2017. Consultado en: 5, 13, 2018. doi: 10.1109/ITSC.2017.8317856.

[32] J. Hardy y M. Campbell, “Contingency planning over probabilistic obstacle predictions for autonomous road vehicles,” IEEE Trans. Robot., vol. 29, no. 4, pp. 913–929, 2013.

[33] R. Kala y K. Warwick, “Motion planning of autonomous vehicles in a non-autonomous vehicle environment without speed lanes,” Eng. Appl. Artif. Intell., vol. 26, no. 5–6, pp. 1588–1601, 2013.

[34] J. Ziegler et al., “Making bertha drive-an autonomous journey on a historic route,” IEEE Intell. Transp. Syst. Mag., vol. 6, no. 2, pp. 8–20, 2014.

[35] S. Brechtel, T. Gindele y R. Dillmann, “Probabilistic decision-making under uncertainty for autonomous driving using continuous POMDPs,” 2014 17th IEEE Int. Conf. Intell. Transp. Syst. ITSC 2014, pp. 392–399, 2014.

[36] V. Delsart, T. Fraichard y L. Martinez, “Real-time trajectory generation for car-like vehicles navigating dynamic environments,” Proc. - IEEE Int. Conf. Robot. Autom., pp. 3401–3406, 2009.

Page 95: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

95

[37] Y. Cong, O. Sawodny, H. Chen, J. Zimmermann y A. Lutz, “Motion planningfor an autonomous vehicle driving on motorways by using flatness properties,”Proc. IEEE Int. Conf. Control Appl., pp. 908–913, 2010.

[38] R. M. Murray, M. Rathinam y W. Sluis, “Differential Flatness of MechanicalControl Systems : A Catalog of Prototype Systems,” Proceedings of the 1995ASME International Congress y Exposition, Nov., 1995. Consultado en: 5, 10,2018. [En línea]. Disponible en:http://www.cds.caltech.edu/~murray/preprints/mrs95-imece.pdf

[39] L. Ma, J. Yang y M. Zhang, “A two-level path planning method for on-roadautonomous driving,” Proc. - 2012 Int. Conf. Intell. Syst. Des. Eng. Appl.ISDEA 2012, no. 90920301, pp. 661–664, 2012.

[40] I. Bae, J. Moon, H. Park, J. H. Kim y S. Kim, “Path generation y tracking basedon a Bézier curve for a steering rate controller of autonomous vehicles,” IEEEConf. Intell. Transp. Syst. Proceedings, ITSC, no. Itsc, pp. 436–441, 2013.

[41] D. González, J. Pérez, R. Lattarulo, V. Milanés y F. Nashashibi, “Continuouscurvature planning with obstacle avoidance capabilities in urban scenarios,”2014 17th IEEE Int. Conf. Intell. Transp. Syst. ITSC 2014, pp. 1430–1435,2014.

[42] M. Wang, T. Ganjineh y R. Rojas, “Action annotated trajectory generation forautonomous maneuvers on structured road networks,” ICARA 2011 - Proc. 5thInt. Conf. Autom. Robot. Appl., pp. 67–72, 2011.

[43] T. Gu y J. M. Dolan, “On-road motion planning for autonomous vehicles,” Proc.5th Int. Conf. Intell. Robot. Appl. (ICIRA 2012), vol. 8103, no. October, 2013.

[44] D. Madas et al., “On path planning methods for automotive collisionavoidance,” IEEE Intell. Veh. Symp. Proc., no. Iv, pp. 931–937, 2013.

[45] M. Issitt, (2018). “Autonomous Car Salem Press Encyclopedia of Science",[En línea]. Disponible enhttp://ezproxy.uao.edu.co:2048/login?url=http://search.ebscohost.com/login.aspx?direct=true&db=ers&AN=100039110&lang=es&site=eds-live

Page 96: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

96

[46] J. Dokic, B. Mueller y G. Meyer, “European Roadmap Smart Systems for Automated Driving,” Eur. Technol. Platf. Smart Syst. Integr., no. April 2015, pp. 1–39, 2015.

[47] R. Siegwart y I. Nourbakhsh, Introduction to Autonomous Mobile Robots., vol. 23. Boston: MIT Press, 2004.

[48] M. S. Ameigh, (2018). “Radar Salem Press Encyclopedia of Science". [En línea]. Disponible en http://ezproxy.uao.edu.co:2094/eds/detail/detail?vid=5&sid=8fa01bb9-9c3f-4069-bcdd-fceec20e0659%40pdc-v-sessmgr04&bdata=Jmxhbmc9ZXMmc2l0ZT1lZHMtbGl2ZQ%3d%3d#AN=89317181&db=ers

[49] V. Thomas, (2016). “Lidar (remote sensing technology) Salem Press Encyclopedia". [En línea]. Disponible en http://ezproxy.uao.edu.co:2094/eds/detail/detail?vid=8&sid=8fa01bb9-9c3f-4069-bcdd-fceec20e0659%40pdc-v-sessmgr04&bdata=Jmxhbmc9ZXMmc2l0ZT1lZHMtbGl2ZQ%3d%3d#AN=87323881&db=ers

[50] U.S. Air Force, (2017, jun. 6). “The Global Positioning System”. [En línea].Disponible en: https://www.gps.gov/systems/gps/.

[51] G. R. Plitnik, (2018). “Accelerometers Salem Press Encyclopedia of Science". [En línea]. Disponible en http://ezproxy.uao.edu.co:2094/eds/detail/detail?vid=10&sid=8fa01bb9-9c3f-4069-bcdd-fceec20e0659%40pdc-v-sessmgr04&bdata=Jmxhbmc9ZXMmc2l0ZT1lZHMtbGl2ZQ%3d%3d#AN=89316860&db=ers

[52] K. Dawson-Howe, A Practical Introduction to Computer Vision with OpenCV, ed. 1ra, John Wiley & Sons, 2014.

[53] J. Canny, “A Computational Approach To Edge Detection,” IEEE Trans. Pattern Anal. Mach. Intell., vol. 8, no. 6, pp. 679–714, 1986.

[54] F. Robert, S. Perkins, A. Walker y E. Wolfart, “Image Transforms - Hough Transform,” The Hypermedia Image Processing Reference, 2003. Consultado

Page 97: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

97

en: 6, 2, 2018. [En línea]. Disponible en: https://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm.

[55] P. Viola y M. Jones, “Rapid object detection using a boosted cascade of simple features,” Proc. 2001 IEEE Comput. Soc. Conf. Comput. Vis. Pattern Recognition. CVPR 2001, vol. 1, pp. I-511-I–518, 2001.

[56] N. Correll, Introduction to Autonomous Robots, ed. 2da, Magellan Scientific, 2014. [En línea] Disponible en: https://github.com/correll/Introduction-to-Autonomous-Robots.

[57] Ubuntu, “Licensing.” [En línea]. Disponible en: https://www.ubuntu.com/licensing.

[58] Ubuntu, “Our mission”. [En línea].. Disponible en: https://www.ubuntu.com/community/mission.

[59] Ubuntu, “Debian.” [En línea]. Disponible en: https://www.ubuntu.com/community/debian.

[60] Ubuntu, “Ubuntu PC operating system.” [En línea]. Disponible en: https://www.ubuntu.com/desktop.

[61] Ubuntu, “Ubuntu Server - for scale out workloads.” [En línea]. Disponible en: https://www.ubuntu.com/server.

[62] Ubuntu, “Ubuntu for the Internet of Things.” [En línea]. Disponible en: https://www.ubuntu.com/internet-of-things.

[63] Ubuntu, “Ubuntu release cycle.” [En línea]. Disponible en: https://www.ubuntu.com/about/release-cycle.

[64] Robotic Operative System, “About ROS.” [En línea]. Disponible en: http://www.ros.org/about-ros/.

[65] Open Source Robotics Foundation, “Nodes - ROS Wiki.” [En línea]. Disponible

Page 98: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

98

en: https://wiki.ros.org/Nodes.

[66] Open Source Robotics Foundation, “Topics - ROS Wiki.” [En línea]. Disponible en: https://wiki.ros.org/Topics.

[67] Open Source Robotics Foundation, “Services - ROS Wiki.” [En línea]. Disponible en: https://wiki.ros.org/Services.

[68] Open Source Robotics Foundation, “Messages - ROS Wiki.” [En línea]. Disponible en: https://wiki.ros.org/Messages.

[69] Open Source Robotics Foundation, “Parameter Server - ROS Wiki.” [En línea]. Disponible en: https://wiki.ros.org/Parameter Server.

[70] Open Source Robotics Foundation, “Bags - ROS Wiki.” [En línea]. Disponible en: https://wiki.ros.org/Bags.

[71] Open Source Robotics Foundation, “ROS Kinetic Kame.” [En línea]. Disponible en: https://wiki.ros.org/kinetic.

[72] Open Source Robotics Foundation, “XML Robot Description Format (URDF).” [En línea]. Disponible en: http://wiki.ros.org/urdf/XML/model.

[73] L. Joseph, “Mastering ROS for Robotics Programming,” in Bangladesh Journal of Plant Taxonomy, vol. 22, no. 2, 2015, pp. 137–141.

[74] Open Source Robotics Foundation, “Link element - ROS Wiki.” [En línea]. Disponible en: http://wiki.ros.org/urdf/XML/link.

[75] Open Source Robotics Foundation, “Joint element - ROS Wiki.” [En línea]. Disponible en: http://wiki.ros.org/urdf/XML/joint.

[76] Open Source Robotics Foundation, “Gazebo.” [En línea]. Disponible en: http://gazebosim.org/.

[77] Open Source Robotics Foundation, “SDF Format.” [En línea]. Disponible en:

Page 99: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

99

http://sdformat.org/.

[78] Open Source Robotics Foundation, “Using a URDF in Gazebo.” [En línea].Disponible en: http://gazebosim.org/tutorials/?tut=ros_urdf.

[79] OpenCV Team, “About the OpenCV library.” [En línea]. Disponible en:https://opencv.org/about.html.

[80] A. Rincón Núñez, “Descripción de escenas por medio de aprendizajeprofundo,” Proyecto de Grado, Dto. Automática y electrónica, Univ. Autónomade Occidente, Santiago de Cali, Valle, 2018.

[81] L. S. Pérez Ochoa y M. F. Eraso Salazar, “Diseño y construcción de un robotterrestre que sirva de plataforma para desarrollo de investigaciones en el áreade robótica móvil en ambientes abiertos y cerrados,” Proyecto de Grado, Dto.Automática y electrónica, Univ. Autónoma de Occidente, Santiago de Cali,Valle, 2014.

[82] A. M. Pinto Vargas, M. Á. Saavedra Ruiz, “Desarrollo de un sistema deaterrizaje autónomo para un vehículo aéreo no tripulado sobre un vehículoterrestre,” Proyecto de Grado, Dto. Automática y electrónica, Univ. Autónomade Occidente, Santiago de Cali, Valle, 2019.

[83] D. Díaz Tenorio, “Diseño e implementación de un sistema para el mapeo ynavegación de un robot móvil,” Proyecto de Grado, Dto. Automática yelectrónica, Univ. Autónoma de Occidente, Santiago de Cali, Valle, 2017.

[84] M. Horga, (2016, Abr. 30). "Udacity: Lane Finding project for self-driving carnd". [En línea]. Disponible en https://github.com/udacity/CarND-LaneLines-P1.

[85] G. Ballew, (2017, Ene., 24). “OpenCV For Lane Detection in Self Driving Cars”.[En línea]. Disponible en: https://medium.com/@galen.ballew/opencv-lanedetection-419361364fc0.

[86] Scikit Llearn Developers, (2007). “Choosing the right estimator”. [En línea].Disponible en: https://scikit-learn.org/stable/tutorial/machine_learning_map/

Page 100: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

100

[87] F. Pedregosa et al., “Scikit-learn: Machine Learning in Python,” J. Mach. Learn. Res., vol. 12, pp. 2825–2830, 2011.

[88] Scikit-learn developers, (2007). “Radial basis function kernel,” [En línea]. Disponible en: https://scikit-learn.org/stable/modules/generated/sklearn.gaussian_process.kernels.RBF.html.

[89] M. Pal, “Multiclass Approaches for Support Vector Machine Based Land Cover Classification,” arXiv e-prints, Feb, 2008. Consultado en: 4, 20, 2018.[En línea]. Disponible en: https://arxiv.org/abs/0802.2411

[90] Scikit-learn developers, (2007). “Neural network models (supervised)”. [En línea]. Disponible en: https://scikit-learn.org/stable/modules/neural_networks_supervised.html

[91] F. Chao, X. Jing-bo y D. Shuai, “Lane Detection Based on Machine Learning Algorithm,” TELKOMNIKA Indones. J. Electr. Eng., vol. 12, no. 2, pp. 1403–1409, 2014.

[92] N. Otsu, “A Threshold Selection Method from Gray-Level Histograms,” IEEE Trans. Syst. Man. Cybern., vol. 9, no. 1, pp. 62–66, Jan. 1979.

[93] F. Robert, S. Perkins, A. Walker y E. Wolfart, “Adaptive Thresholding,” The Hypermedia Image Processing Reference, 2003. Consultado en: 6, 2, 2018. [En línea]. Disponible en: https://homepages.inf.ed.ac.uk/rbf/HIPR2/adpthrsh.htm.

[94] R. E. Kalman, “A New Approach to Linear Filtering y Prediction Problems,” Trans. ASME--Journal Basic Eng., vol. 82, no. Series D, pp. 35–45, 1960.

[95] Open Source Robotics Foundation, “SolidWorkds to URDF Exporter.” [En línea]. Disponible en: http://wiki.ros.org/sw_urdf_exporter.

[96] Open Source Robotics Foundation, “Model Editor - Gazebo.” [En línea]. Disponible en: http://gazebosim.org/tutorials?cat=guided_b&tut=guided_b3.

Page 101: DESARROLLO DE UN SISTEMA DE PERCEPCIÓN PARA …

101

[97] Open Source Robotics Foundation, “Python SDF to URDF.” [En línea].Disponible en: http://wiki.ros.org/pysdf.

[98] Open Source Robotics Foundation, “ROS Control - Wiki.” [En línea].Disponible en: http://wiki.ros.org/ros_control.

[99] K. Ogata, Modern control engineering, 5th Editio., vol. 17, no. 3. 1972.