scieee AI-readable full text Open interactive document viewer

Control autónomo del Renault Twizy y su modelo 3D en Gazebo

Cóndor Romero, Bryan Kevin

Abstract

En este Trabajo Fin de Grado se realizará un diseño básico preliminar de un sistema de conducción autónoma para el vehiculo eléctrico Renault Twizy. Se comenzará hablando sobre la conducción autónoma, sus nociones básicas de manera teórica y las distintas ramas de investigación que hay hoy en día. A continuación, se desarrollará una descripción de todos los componentes hardware que serían necesarios para llevar a cabo este trabajo, además de algunos componentes actuadores que se necesita para adaptar el Renault Twizy a la conducción autónoma en futuros proyectos. También se dará una breve explicación de los diferentes bloques software que forman el sistema de conducción autónoma como el control longitudinal y lateral del vehículo. Finalmente se realizará la adaptación parcial del modelo 3D del Renault Twizy a Gazebo.

Full text

1 Equation Chapter 1 Section 1 Trabajo Fin de Grado Grado en Ingeniería Electrónica, Robótica y Mecatrónica Control autónomo del Renault Twizy y su modelo 3D en Gazebo Autor: Bryan Kevin Cóndor Romero Tutor: Carlos Bordons Alba Dpto. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2019 iii Trabajo Fin de Grado Grado en Ingeniería Electróncia, Robótica y Mecatrónica Control autónomo del Renault Twizy y su modelo 3D en Gazebo Autor: Bryan Kevin Condor Romero Tutor: Carlos Bordons Alba Catedrático de Universidad Dpto. de Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2019 v Trabajo Fin de Grado: Control autónomo del Renault Twizy y su modelo 3D en Gazebo Autor: Bryan Kevin Cóndor Romero Tutor: Carlos Bordons Alba El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: Sevilla, 2019 El Secretario del Tribunal vii A mi familia A mis maestros ix Agradecimientos En primer lugar, agradecer a mis familiares, gracias a quienes he podido llegar hasta aquí. Por todo el trabajo y los sacrificios que han realizado para darme una educación y permitirme estudiar en la universidad. En segundo lugar, a todos mis compañeros y a quienes estuvieron a mi lado en todos estos años de estudio, tanto en los buenos como en los malos momentos. Y en último lugar, a todos los profesores que me han impartido clase y a mi tutor de TFG Carlos Bordons Alba por asesorarme en este proyecto. Bryan Kevin Cóndor Romero Sevilla, 2019 ÍNDICE DE TABLAS Tabla 1. Representación booleana de los cambios del Reanult Twizy 22 Tabla 2. Valores de los parametros del control de estabilidad 30 Tabla 3. Componentes del presupuesto 36 Tabla 4. Presupuesto final con todos los componentes incluidos 37 xvii ÍNDICE DE FIGURAS Figura 1. Número de coches eléctricos en circulación 2 Figura 2. Emisiones de GHG para 2030 3 Figura 3. Datos técnicos del Renault Twizy 4 Figura 4. Dimensiones del Renault Twizy 4 Figura 5. Niveles de automatización de la conducción 5 Figura 6. Arquitectura funcional propuesta 9 Figura 7. Proyección de la popularidad de los lenguajes de programación 15 Figura 8. Acción de fuerzas longitudinales 16 Figura 9. Valores de fr aproximados según el vehículo y el asfalto 17 Figura 10. Modelo simplificado para el análisis del comportamiento direccional 18 Figura 11. SICK LASER TIM551 20 Figura 12. ToF Sentis3D-M420 21 Figura 13. Laser Bear Honeycomb 21 Figura 14. Prosilica GT1290 22 Figura 15. EMILID RTK GNSS Receiver 22 Figura 16. NAV440CA-200-2 22 Figura 17. Modelo 3D Renault Twizy 24 Figura 18. Bloque <transmisión> en URDF 25 Figura 19. Diagrama de bloques en bucle cerrado 27 Figura 20. Ruta de prueba del control de dirección 28 Figura 21. Geometría Pure-Pursuit 28 Figura 22. Subviraje y sobreviraje 30 Figura 23. Evolución de la velocidad del vehículo líder 35 Figura 24. Headway and Cruise Control 36 Figura 25. Ruta preestablecida para el control de dirección 37 Figura 26. Posición inicial del vehículo junto con la ruta preestablecida 37 Figura 27. Momentos iniciales de la simulación del control de dirección 38 Figura 28. Momento de un giro brusco en la simulación 38 Figura 29. Momentos finales de la simulación 39 Figura 30. Simulación del control de dirección finalizada 39 Figura 31. Uno de los problemas con mi modelo del Renault Twizy 41 Figura 32. Otro problema con mi modelo del Renault Twizy 41 Figura 33. Mi código XML de la dirección del Renault Twizy 42 Figura 34. Código XML de la dirección de CatVehicle 43 Figura 35. Código XML de la dirección del Prius (proyecto Car_demo) 43 Figura 36. Ejes de giro de la rueda directriz de mi modelo del Renault Twizy 44 Figura 37. Ejes de giro de la rueda directriz del modelo CatVehicle 44 Figura 38. Ejes de giro de la rueda directris del Prius (proyecto Car_demo) 45 Figura 39. Simulación de prueba en Gazeebo con el modelo de CatVehicle 46 Figura 40. Simulación de prueba en Gazebo con el modelo del Prius (proyecto Car_demo) 46 Figura 28. Simulación del control de dirección finalizada 34 Figura 28. Simulación del control de dirección finalizada 34 xix Notación y Glosario API Interfaz de programación de aplicaciones BSD Berkeley Software Distribution CCD Dispositivo de carga acoplada CES Consumer Electronics Show DARPA Defense Advanced Research Projects Agency DDT Dynamic Driving Task ECU Unidad de control de motor ESC Control de estabilidad electrónico FOV Campo de visión GHG Gases de efecto invernadero GPS Sistema de posicionamiento global GUI Interfaz gráfica de usuario HDOP Dilución de Precisión para el posicionamiento horizontal NAVLAB Nombre de la furgoneta autónoma de la universidad de Carnegie Mellon ODD Operational Design Domains OEM Original Equipment Manufacturer OVMS Open Vehicle Monitoring System PD Proportional-Derivative control RFID Identificación por radiofrecuencia ROS Robot Operating System RTK Real Time Kinematic SAE Sociedad de Ingenieros Automotrices ToF Time of flight camera XMLRPC Protocola de llamada a procedimiento remoto que usa XML para codificar datos : Tal que < Menor que > Mayor que \ Backslash Pipeline Técnica para implementar el paralelismo dentro de un solo procesador 1 1 INTRODUCCIÓN oy en día una de las áreas de investigación que está teniendo un gran crecimiento es la navegación y control autónomo aplicado a cualquier tipo de vehículo. Este crecimiento no solo nos está dirigiendo a un futuro en el que cualquier vehículo o robot pueda ser autónomo, sino que también esta permitiendo que los vehículos sean más seguros, eficientes y mas responsables con el medio ambiente. Aunque hay muchos campos de interés dentro del control y navegación autónoma, en este trabajo se abordará concretamente el control de un coche eléctrico en un entorno simulado, exactamente un Renault Twizy donado por Renault al departamento de Sistemas y Automática de la Escuela Técnica Superior de Ingeniería de la Universidad de Sevilla. El reto al que hay que enfrentarnos es el de desarrollar un sistema que pueda implantarse en un vehículo para convertirlo en totalmente autónomo. En este camino la finalidad de este trabajo es presentar una propuesta de control para el Renault Twizy que sirva de introducción a un futuro proyecto que dote de autonomía al coche del departamento. Todo esto enfocado a una conducción en entornos urbanos. Para tal fin, los trabajos enfocados a la conducción autónoma necesitán ser realizados en un entorno simulado que permita evaluar los algoritmos de control antes de llevarlos a una prueba de validación en condiciones reales. 1.1. Objetivo Este trabajo, por tanto, tiene como objetivo el modelado y control del vehíclo. La simulación se llevará acabo en el entorno de simulación de Gazebo y los controles se implementarán en lenguaje Python, todo unido gracias al entorno de ROS (The Robot Operating System). Para cumplir el objetivo principal, se plantea el siguiente conjunto de objetivos específicos: • Desarrollar el modelado del coche Renault Twizy que se implementará en Gazebo para posteriormente llevar a cabo las simulaciones. • Diseñar los sistemas de control que se implementarán en la simulación, que son un control longitudinal y un control lateral. H Estado del Arte 2 2 2 ESTADO DEL ARTE 2.1. Vehículos eléctricos Desafortunadamente más del 90% de la demanda energética mundial en transporte se cubre con recursos derivados del petroleo hoy en día, sin embargo, los vehículos eléctricos están teniendo una gran aceptación por parte de las personas y es sin duda el futuro de la automoción, para así dejar de lado los combustibles fósiles y sus derivados. En algunos casos se piensa que el coche eléctrico tiene pocos años de vida, sin embargo, tiene unos 100 años de antigüedad, siendo Robert Anderson quien montó el primer prototipo de vehículo eléctrico entre los años 1832- 1839. Pero si se habla de coche como tal nos tenemos que ir al año 1888, año en el que el ingeniero Andreas Flocken construye el primer coche eléctrico con cuatro ruedas. En los próximos años se fue expandiendo el coche eléctrico, así apareció en el año 1897 taxis eléctricos en ciudades de Estados Unidos como Nueva York. En el 1899 se logra una gran hazaña, alcanzar por primera vez la velocidad de 100 km/h con un coche eléctrico. A principios del siglo XX, en el año 1912 la cifra de vehículos eléctricos en EE.UU alcanzaba las 30.000 unidades. Sin embargo, la aparición del vehículo de combustión interna en la década de 1930 provocó la desaparición total de los vehículos eléctricos y no fue hasta la aparición de las crisis del petróleo y el problema del medio ambiente cuando se retomó la idea de los vehículos eléctricos. La expansión de este sector aumentó durante todo el siglo XXI con unas cifras de 50.000 vehículos eléctricos para el año 2011, 180 000 en el 2012, 350 000 en el 2013, 710 000 en el 2014 y así hasta alcanzar la cifra de mas de 3 millones de coches en circulación en el año 2017 y mas de 1 millon vendidos durante el mismo año. Datos estimados por la International Energy Agency. Figura 1 – Numero de coches eléctricos en circulación Como se puede apreciar en el gráfico de la Figura 1, la tendencia de los coches elécticos tiene un cierto grado exponencial, lo que hace que sea el candidato perfecto para este trabajo. Otras ventajas que se pueden enumerar de los vehículos eléctricos es que son poco ruidosos, necesitan un menor mantenimiento, no se necesitan filtros contaminantes, el motor eléctrico es igual de potente que un motor de combustión, es controlable (no hay necesidad de tener marchas), es más compacto y tienen mayor eficiencia que los vehículos con motor de combustión. Además, son menos contaminantes como se puede ver en la previsión 3 de emisión de gases de efecto invernadero para 2030 propuesto por la International Energy Agency. Figura 2. Figura 2 – Emisiones de GHG para 2030 Tambíen hay que enumerar las desventajas de los vehículos eléctricos como es la poca autonomía que se le atribuye, aunque hoy en día ya hay coches que alcanzan los 400 km de autonomía, además de que la red de carga es aun algo reducida, tiempos de cargas algo elevados y sobre todo las baterías contaminantes. Aun con estas desventajas presentes, los coches eléctricos tienen un gran atractivo. 2.1.1 Renault Twizy El Renault Twizy es el coche escogido para este trabajo debido a que es un gran candidato para poder convertirlo en un coche autónomo debido a las características que nos presenta. Es un coche pequeño lo que nos facilita el aparcamiento en entornos urbanos donde el espacio es reducido, además su chasis es tubular lo que garantiza una buena protección frente a colisiones. Tambíen cuenta con cuatro frenos de disco que proporciona una seguridad activa total, además de ser muy útil a la hora de diseñar un controlador de estabilidad. Otro de las características del Renault Twizy es su recarga, que se puede llevar a cabo en cualquier toma eléctrica de 220 V y no requiere de un conector especial, lo que facilita la carga en entornos urbanos. Su tiempo de carga es de unas 3 horas y media y cargándose consume unos 2 000 W, consumo muy similar al de una plancha. También hay que destacar su transmisión reductora que permite mejorar el consumo. Las características mas técnicas se mostrarán en la Figura 3 y sus dimensiones en la Figura 4. Estado del Arte 4 4 Figura 3 – Datos Técnicos Renault Twizy Figura 4 – Dimensiones Renault Twizy 5 2.2. Navegación Autónoma Para empezar, se tiene que definir navegación autónoma. Navegación autónoma es la capacidad de ir de un punto a otro evitando obstáculos de forma segura. Este trabajo trata de iniciar la navegación autónoma aplicada a nuestro Renault Twizy, por lo que se explicará de manera breve los antecedentes de la navegación autónoma, aplicaciones y métodos existentes para llevarlo a cabo. También habría que hablar de los niveles de automatización de la conducción propuesto por el SAE (Society of Automotive Engineers), que ha sido aceptada alrededor del mundo. Estos niveles de automatización van desde el 0 hasta el 5. Figura 5. En los tres primeros niveles que van desde el 0 hasta el 2 se encuentran los coches que se podrían considerar como convencionales. En estos tres niveles lo que tiene que hacer el humano sentado en el asiento de conductor es lo mismo. No importa si estén o no activados las características de ayuda para el conductor, incluso si tus pies están fuera del pedal y no estes dirigiendo el coche, tu tienes que conducir. Además, tienes que supervisar las características de apoyo, tienes que frenar, acelerar o dirigir para manter la seguridad. Algunos ejemplos de las características de apoyo para el conductor para el nivel 1 son los siguientes, freno automático de emergencia, advertencia de punto ciego y de salidad de carril. Para el nivel 2 está el centrado de carril o el control de crucero adaptativo. Para el nivel 3 las dos características del nivel 2 al mismo tiempo. A partir del nivel 3 hasta el nivel 5 crece gradualmente el grado de autonomía. Los tres niveles comparten lo que el humano tiene que hacer cuando está sentado en el asiento del conductor salvo una excepción en el nivel 3. En todos los niveles, no estás conduciendo cuando las características de conducción automatizadas están activadas incluso si estas sentado en el asiento del conductor. Para el nivel 3 cuando las características de conducción automatizadas lo necesiten tendrás que conducir, y para los niveles 4 y 5 las características de conducción automatizadas no requerirán que conduzcas en ningún momento. Algún ejemplo de estas características para el nivel 3, es el conductor de atascos de tráfico. Para el nivel 4, pedales o dirección de las ruedas pueden o no estar instaladas. Para el nivel 5 lo mismo que para el nivel 4 pero las características pueden conducir donde sea y en cualquier condición. Figura 5 – Niveles de automatización de la conducción Estado del Arte 12 12 2.4. Gazebo Gazebo es un simulador de robotica 3D de código abierto que está integrado perfectamente con ROS. Gazebo nos permite virtualizar nuestro robot o vehículo en nuestro caso, así como el entorno sobre el que va a funcionar permitiendo llevar a cabo pruebas simuladas en un entorno controlado antes de ponerlo en práctica en la vida real. Con esto nos ahorramos dinero y tiempo a la hora de crear un código o programa para nuestro robot, o simplemente testear el comportamiento que tendría nuestro vehículo en cirtas circunstancias. Gazebo puede usar varios motores físicos de alto rendimiento, como ODE, Bullet, etc. Normalmente se usa ODE que proporciona una representación realista de entornos que incluyen iluminación, sobras y texturas de alta calidad. También puede modelar sensores que ven el entorno simulado. ROS y Gazebo tienen un amplio abanico de sensores de diferentes marcas y con funciones muy diferentes. Cada uno de estos tiene un apartado en la pagina web ROS o Gazebo. En caso de que no exista documentación sobre el sensor que necesitas, puedes generarla tu mismo o pedir ayuda a la comunidad que siempre está activa. Algunos de los sensores que se pueden encontrar son los siguientes: • Sensores 2D − Hokuyo Scanning range Finder − Una gran gama de los sensores SICK lasers − Leuze rotoScan laser rangefinder driver (ROD-4, RS4) − TeraRanger Multiflex − TeraRanger Hub Evo & Tower − Neato XV-11 Laser Driver − RPLIDAR 360 laser scanner Driver (python) − NaviRadar • Sensores 3D − Argos3D P100 ToF camera − Basler ToF ES camera − DUO3D™ stereo camera − Forecast 3DLaser with SICK LIDAR − Intel® RealSense − SICK lasers − Sentis ToF M100 camera − Velodyne 3D LIDAR − Livox 3D LIDAR • Reconocimiento de audio − Baidu_speech − Hark − Rospeex − Pocketsphinx • Camaras − Allied Vision Tech GigE cameras 13 − IEEE 1394 Digital Camera − Camera_aravis − Canon_gphoto − GeViCAM stereo camera − Prosilica Camera − WGE100 camera • Sensor de fuerza, par y tacto − Wacoh-Tech DynPick − Leptrino force/torque sensor − Nano 17 6-axis force/torque sensors − Schunk LWA 3 Force Torque Controller base don ATI Mini 45 • GPS/IMU − Applanix Position and Orientation System for land Vehicles − Bosh Sensortec BMA 180 3-axis accelerometer − DUO3D™ IMU sensor − Microstrain 3DM-GX3-45 − Oxford technical solutions GPS/IMU products − Razor´s IMU 9 DOF − Swiftnav Piksi RTK-GPS − Xsens MTx/MTi/MTi-G devices − RT Corp. USB Output 9-axis IMU sensor module • Fuentes de alimentación − Carnetix CNX-P2140 DC-DC power supply − Mini-Box M4-ATX power supply • Interfaces de sensores − ArbotiX RoboController − Arduino Sensor Interface Module − Phidgets Interface − Lego NXT Sensors − Roboard_sensors − Rosserial_arduino − Sensoray 626 analog and digital I/O − Shadow RoNeX • Sensores de velocidad − OmniPreSense Radar Sensor − Sick RMS3xx Radar Sensor Estado del Arte 14 14 Estos son solo algunos ejemplos, existen también sesores de RFID, de captura de movimiento o ambientales, y más. Como se puede apreciar existe una gran variedad de sensores que se puede usar en ROS/Gazebo y es por ello por lo que se ha elegido este entorno para las simulaciones. Pero también porque Gazebo ha sido usado como entorno de simulación para diferentes retos y competiciones tecnológicas. Como: − DARPA Robotics Challenge − NASA Space Robotics Challenge − Toyota Prius Challenge − Agile Robotics for Industrial Automation Competition (ARIAC) − DARPA Service Academy Swarm Challenge (SASC) − DARPA Subterranean Challenge o Virtual RobotX Competition (VRX) Todos fueron competicones muy importante a nivel mundial, y el hecho que Gazebo haya sido uno de los simuladores para las pruebas, nos dice que es un simulador de alta importancia para el desarrollo de tecnologías. Es por eso que se ha elegido Gazebo y ROS para desarrollar este trabajo, además es una buena oportunidad para entrar en contacto con estos programas. 15 2.5. Python Python es: • Interpretado: Es decir, se ejecuta sin necesidad de ser procesado por el compilador y se detectan los errores en tiempo de ejecución • Dinámico: Las operaciones realizadas en tiempo de compilación pueden realizarse en tiempo de ejecución. • Multiplataforma: Está disponible para Windows, Linux/UNIX, MacOS X, y otros, luego no habría problemas si se cambia de plataforma de trabajo, o se trabaja con variasa a la vez. • Multiparadigma: Permite crear programas usando más de un estilo de programación, como programación functional, imperativa y orientada a objetos. Además, python tiene una sintaxis legible lo que hace que la curva de aprendizaje sea rápida, además es gratuito y funciona muy bien con ROS. Python también cuenta con varias librerías, tipos de datos y funciones incorporadas en el propio lenguaje lo que facilita la programación y no empezar desde cero. Python puede ser aplicado en diversos campos de la tecnología, como machine learning, desarrollo de software, visión artificial, navegación autónoma, inteligencia artificial, etc. Python está en todas partes y se está convirtiendo en el lenguaje de programación más usado en el mundo según muestran las estadísticas, e irá creciendo en los próximos años según la página Stack overflow figura 7. Figura 7 – Proyección de la popularidad de los lenguajes de programación También hay que mencionar que Python está siendo usado por grandes compañías tecnológicas hoy en día como uber, Paypal, Google, Reddit, entre otros. Por todo esto y que es un lenguaje de programación nuevo para mi, se ha escogido Python como lenguaje de programación. Dinámica del Vehículo 16 16 3 DINÁMICA DEL VEHÍCULO La dinámica de vehículos estudia el comportamiento dinámico de los vehículos terrestres. Es una parte de la ingeniería basada en la mecánica clásica, pero también puden verse involucradas otras áreas tales como la física del estado sólido, mecánica de fluidos, ingeniería eléctrica, comunicación, teoría de control, etc. El estudio dinámico de un vehículo se divide en dos análisis en general, el primero de ellos es la dinámica lateral, que estudia las fuerzas laterales de un vehículo que son responsables de que el vehículo pueda girar en una curva. El segundo es la dinámica longitudinal que estudia las fuerzas de propulsión y resistencia al movimiento. 3.1. Dinámica longitudinal La dinámica longitudinal abarca el análisis del comportamiento del vehículo circulando en línea recta o en curvas de gran radio. El objetivo es establecer la ecuación fundamental del movimiento longitudinal (ejeX) que, a partir de la potencia del vehículo, permitirá predecir sus prestaciones: pendiente, velocidad y aceleración máxima. Estas prestaciones están limitadas por la adherencia neumático-calzada y el conjunto motor-sistema de transmisión. Figura 8 – Acción de fuerzas longitudinales Para modelar el movimiento longitufinal de un vehículo se analiza las fuerzas que actuan sobre su centro de gravedad y se realiza un equilibrio de esfuerzos según la segunda ley de Newton (Ecuación 3.1). ∑𝐹𝑥=𝑚.𝑎𝑥=𝐹𝑢𝑒𝑟𝑧𝑎 𝑡𝑟𝑎𝑐𝑡𝑜𝑟𝑎− 𝐹𝑢𝑒𝑟𝑧𝑎𝑠 𝑟𝑒𝑠𝑖𝑠𝑡𝑒𝑛𝑡𝑒𝑠 (3.1) La fuerza tractora es generada por el motor del vehiculo y transmitida por los neumáticos al entorno. Por otra parte, las fuerzas resistentes son las que se oponen al movimiento del vehículo, en este sentido se tiene: • Resistencia aerodinámica al avance: La resitencia aerodinámica de la circulación del aire por el interior y el flujo exterior del vehículo. La resistencia aerodinámica puedes ser calculada mediante la ecuación (3.2). 𝐹𝑥𝑎 =0.5.𝜌.𝐶𝑥.𝐴𝑓.𝑉2 (3.2) Donde: 17 𝜌 Es la densidad del aire con un valor de 1.225 Kg/𝑚3 a 25ºC y 1 atmosfera 𝐶𝑥 Es el coeficiente aerodinámico 𝐴𝑓 Es el area frontal en metros caudrados V Es la velocidad en m/s El área frontal de un coche se puede calcular de la siguiente manera, 𝐴𝑓=𝑓.𝑏𝑎𝑠𝑒.𝑎𝑙𝑡𝑢𝑟𝑎, donde 𝑓 es una variable que puede estar entre 0.8 y 0.85, Y el coeficiente aerodinámico depende de cada coche, además normalmente es proporcionado por el fabricante. • Resistencia gravitaroria: La resistencia a la rodadura se define por la deformación del neumático sobre la superficie debido a la carga que soporta (Ecuación 3.3). 𝑅𝑟=𝑅𝑟𝑑 +𝑅𝑟𝑡 =(𝑓0+𝑓𝑣.𝑉𝑛).𝑃.cos(𝜃)=𝑓𝑟.𝑃.cos (𝜃) (3.3) Donde: P Es el peso del vehículo 𝑓0 , 𝑓𝑣 Son parámetros que dependen de la presión de inflado de los neumáticos n Es un factor con valores cercanos a 2 o 2,5 V Va en Km/h 𝜃 Ángulo de inclinación de la carretera 𝑓𝑟 Magnitud adimensional que expresa la fuerza opuesta al movimiento por cada unidad de carga soportada. Si se supone que el coche rodará por hormigón y la presión de inflado será próxima a 179 kPa entonces 𝑓𝑟 se puede aproximar a: 𝑓𝑟=0,01.(1+ 𝑉 160) → 0,01≤𝑓𝑟≥0,02 En muchos casos se puede despreciar el efecto de la velocidad y tomar un valor medio de: Figura 9 – valores de 𝑓𝑟 aproximados según el vehículo y el asfalto • Resistencia gravitatoria: Es fuerza solo toma importancia cuando el coche está circulando por una carretera con pendiente y viene determinado por la ecuación (3.4). 𝑅𝑔=𝑃.𝑠𝑒𝑛(𝜃) (3.4) Dinámica del Vehículo 18 18 Si el angulo 𝜃 es menor que cero, la fuerza será negativa (propulsora). 3.2. Dinámica lateral Antes de hacer el análisis dinámico lateral, como nuestro vehículo circulará a velocidades bajas y considerando aceleraciones laterales bajas y curvas amplias, se pueden hacer una serie de suposiciones: • Comportamiento lineal de los neumáticos en deriva. • Ángulos de dirección iguales en ambas ruedas directrices. • Efectos dinámicos como deformación de las suspensiones, transferencia de carga, variaciones de los ángulos de dirección, etc. Despreciables. • Además, el modelo del comportamiento direcciónal puede simplificarse aún más si se considera que los ángulos de deriva de los neumaticos en un mismo eje son iguales, lo que a su vez impone que las fuerzas laterales soportadas por los neumáticos de un mismo eje también sean iguales. Luego, el comportamiento de los neumáticos de un mismo eje puede representarse como uno equivalente situado en el centro de cada eje que soporta la fuerza lateral de ambos con el mismo ángulo de deriva. Figura 10 – Modelo simplificado para el análisis del comportamiento direccional De la representación gráfica se puede deducir que 𝛿−𝛼𝑑+𝛼𝑡=𝐿 𝑅 De donde el ángulo de dirección 𝛿 =𝛼𝑑−𝛼𝑡+𝐿 𝑅 Como los ángulos de dirección son pequeños, se puede suponer que las fuerzas laterales que soporta cada eje serán función de los pesos sobre cada uno de ellos y de la aceleración lateral a la que están sometidos. 𝐹𝑦𝑑 =𝑚𝑑.𝑉2 𝑅=𝑃𝑑 𝑔.𝑉2 𝑅 𝐹𝑦𝑡 =𝑚𝑡.𝑉2 𝑅=𝑃𝑡 𝑔.𝑉2 𝑅 Teniendo en cuenta que 𝛼 =𝐹𝑦/𝐶𝛼, los ángulos de deriva en cada eje serán 19 𝛼𝑑=𝐹𝑦𝑑 𝐶𝛼𝑑 =𝑃𝑑 𝐶𝛼𝑑 .𝑉2 𝑔.𝑅 (3.5) 𝛼𝑡=𝐹𝑦𝑡 𝐶𝛼𝑡 =𝑃𝑡 𝐶𝛼𝑡 .𝑉2 𝑔.𝑅 (3.6) Con lo que el ángulo de guiado de las ruedas directrices se puede escribir como 𝛿 = 𝐿 𝑅+(𝑃𝑑 𝐶𝛼𝑑 −𝑃𝑡 𝐶𝛼𝑡). 𝑉2 𝑔.𝑅 Y si se define el coeficiente de viraje 𝐾𝑣 como 𝐾𝑣=𝑃𝑑 𝐶𝛼𝑑 −𝑃𝑡 𝐶𝛼𝑡, entonces 𝛿 = 𝐿 𝑅+ 𝐾𝑣.𝑉2 𝑔.𝑅 (3.7) Donde 𝐾𝑣 es igual a 0 si el vehículo es neutro, mayor que cero si es subvirador y mayor que cero si es sobrevirador. Sensores y actuadores 20 20 4 SENSORES Y ACTUADORES En este apartado se propondrán diferentes sensores que son necesarios para que un coche sea autónomo. Y también se hablará de los diferentes actuadores que hace falta incluir en el Renault Twizy para dotar al coche de autonomía y poder controlarlo. Este apartado también va enfocado para poder realizar un presupuesto de los componentes necesarios a la hora de convertir el Renault Twizy en autónomo. 4.1. Sensores Para que un vehículo funcione apropiadamente sin la intervención del ser humano, se necesitan una serie de sensores que sean capaces de captar e interpretar el entorno del vehículo. ➢ Laser 2D: Este sensor nos permitirá detectar objetos hasta los 8 metros de distancia tanto por la parte delantera, como de la trasera del vehículo. Este laser nos permitirá supervisar una gran superficie, pero nos dejara algún punto ciego que serán cubiertos por las camaras ToF. Figura 11 – SICK LASER TIM551 ➢ Camaras ToF: Estas camaras nos servirán como suplemento a los laseres 2D de nuestro coche y supervisarán los laterales del vehículo. Si bien son poco usadas en los coches autónomos, es una buena opción para detectar objetos a corta distancia. ToFs permiten detectar objetos con un alto número de cuadros por segundo, son poco afectados por las condiciones de luz y sombras, y sobre todo tienen un costo aceptable. 21 Figura 12 – ToF Sentis3D-M420 Estos dos sensores se encargarán de la percepción de corto alcance. Todo objeto detectado en este aro de corto alcance se podría suponer como un riesgo y daño inherente para las acciones del vehículo, por lo que estos sensores son ordenados por la unidad de procesamiento en tiempo real. ➢ LIDAR 3D: Este dispositivo permite conocer en tiempo real la posición precisa de millones de puntos, y la distancia entre cada punto y el foco LIDAR. Esto nos permite detectar objetos y saber exactamente la distancia a la que se encuentra cada uno de ellos con gran precisión. De esta manera se pueden prever el movimiento de otros vehículos o peatones cuya trayectoria se cruzará con la del coche. El LIDAR es cuestionado e incluso algunos casos es tachado de innecesario. Como ejemplo esta TESLA, que durante el Tesla Autonomy Day del 22 de abril de 2019, explicó porque no es necesario el LIDAR. Pero, por otra parte, Waymo, considerado el líder de los coches autónomos, recientemente ha desarrollado su propio LIDAR, que es el que se incluirá en esta selección de sensores. Figura 13 – Laser Bear Honeycomb Este LIDAR 3D nos permitirá establecer trayectorias (cambios de carril, evitación de obstáculos, reducción de la velocidad dependiendo de las condiciones de tráfico, etc.), seguimieno de objetos, clasificación de objetos y predicción del comportamiento de otros conductores. Diseño 28 28 5.3. Control de dirección En esta parte se realizará un control de dirección que será testeado mediante el seguimiento de una ruta como se aprecia en la figura 20. Figura 20 – Ruta de prueba del control de dirección Para el diseño del control de dirección se usará el método pure-pursuit. Este metodo se basa en la geometría para calcular la curvatura que tendra que hacer el vehículo para llegar a un punto objetivo de la trayectoria. Este objetivo es un punto de la trayectoria que se encuentra a una lookahead distance de la posición actual de nuestro vehículo. Se genera un arco entre nuestra posición y la del objetivo, y la longitud de la cuerda de ese arco es la lookahead distance. Imaginemos la Figura 21, donde se tiene al vehículo con sus respectivas coordenadas. El método consiste en calcular la curvatura de un arco circular que conecta la ubicación del eje trasero con el punto objetivo en la trayectoria del vehículo. El angulo de giro de las ruedas se puede determinar usando solamente la ubicación del punto objetivo y el ángulo comprendido entre el vector de dirección del vehículo y el vector de lookahead. Figura 21 – Geometría Pure-Pursuit Aplicando la ley de los senos a la Figura 21 se obtiene: 29 ℓ𝑑 𝑠𝑖𝑛(2𝛼)=𝑅 sin (𝑝𝑖 2−𝛼) ℓ𝑑 2.𝑠𝑖𝑛(𝛼).cos (𝑎)=𝑅 cos (𝛼) ℓ𝑑 𝑠𝑖𝑛(𝛼)=2.𝑅 𝛾 =2.𝑠𝑖𝑛(𝛼) ℓ𝑑=2.𝑥 𝑙𝑑2 (5.6) Donde 𝑥 es la coordenada x de el punto objetivo, ℓ𝑑 es la distancia de look ahead, y 𝛾 es la curvatura del arco circular. Usando el modelo geométrico de la bicicleta en un coche con dirección ackerman, el ángulo de dirección será: 𝛿 =𝑡𝑎𝑛−1(𝛾.𝐿)≈𝛾.𝐿 (5.7) La implementación de este algoritmo se daría de la siguiente manera: • Determinar la posición actual del vehículo • Encontrar el punto de la trayectoria más cercano al vehículo • Encontrar el punto objetivo • Transformar el punto objetivo a las coordenadas del vehículo • Calcular la curvatura y el ángulo de dirección del vehículo • Actualizar la posición del vehículo Diseño 30 30 5.4. Control de estabilidad Sistema de control de estabilidad del vehículo previene que los coches giren y se desvíen o derrapen, tanto en sobreviraje (oversteer) como en subvirajes (understeer), figura 22. Figura 22 – subviraje y sobreviraje El funcionamiento del control de estabilidad reside en que está constantemente comprobando las maniobras del conductor al volante y ver si estas se corresponden con el comportamiento del vehiculo. Si en algún momento detecta que la dirección es diferente a la deseada y es crítica, entonces el ordenador reacciona independientemente del conductor. Existen varios tipos de control de estabilidad propuestos, y que han sido desarrollados por diferentes investigadores: 1. Frenado diferencial: Este Sistema utiliza el sisema de frenos del ABS del vehículo para aplicar un frenado diferecial entre las ruedas delanteras y traseras para el control de guiñada. 2. Steer-by-Wire: Este sistema modifica el ángulo de dirección del conductor de entrada y añade un ángulo de dirección de corrección a las ruedas. 3. Distribución de par activo: Este sistema usa diferenciales activos y tecnología de tracción total para controlar de manera independiente el par de transmisión distribuido a cada rueda y así proporcionar un control activo de la tracción y el momento de guiñada. Por mucho el Sistema de frenado diferencial ha sido el que más atención ha recibido por la comunida y desarrolladores, y será el que se desarrollara en este trabajo. El control de estabilidad electrónico (ESC), calcula la velocidad de guiñada y el ángulo de deslizamiento del vehículo que se desea gracias al ángulo de la rueda y la velocidad del vehículo, y la compara con la que tiene actualmente, obtenida de la medición de los sensors. Si la diferencia es muy pequeña no hace nada, pero si la diferencia supera un limite, entonces actuará aplicando freno en las ruedas para crear un par de corrección en la carroceria del vehículo. Luego el control se caracterizará por la velocidad de guiñada deseada y el ángulo de deslizamiento deseado, ambos pueden ser obtenidos por las siguientes ecuaciones (R. Rajamani[1]). 31 𝜓󰇗𝑑𝑒𝑠 =𝑥󰇗 𝑅=𝑣 𝐿+𝑚.𝑣2(𝑙𝑟.𝐶𝛼𝑟 −𝑙𝑓.𝐶𝛼𝑓) 2.𝐶𝛼𝑓.𝐶𝛼𝑟.𝐿 .𝛿 (5.8) 𝛽𝑑𝑒𝑠 =𝑙𝑟−𝑙𝑓.𝑚.𝑣2 2.𝐶𝛼𝑟.𝐿 𝐿+𝑚.𝑣2(𝑙𝑟.𝐶𝛼𝑟 −𝑙𝑓.𝐶𝛼𝑓) 2.𝐶𝛼𝑓.𝐶𝛼𝑟.𝐿 .𝛿 (5.9) Generalmente hablando, el diseño principal del algoritmo de control del controlador de estabilidad puede estar dividida en tres partes, una de ellas opcionales: (1) Yaw-Rate Following; (2) Slip-angle Estimation and Regulation; and (3) (opcional) rollover or wheel liftoff prevention. En este trabajo solo se trabajará con las dos primeras opciones por simplicidad. • Yaw-Rate Following: El seguimiento de la velocidad de guiñada es muy importante a la hora de controlar la estabilidad de un vehículo, por ejemplo, cuando el conductor da un giro muy rápido para esquivar un obstáculo, entra en juego el ESC, y se aplicará un freno diferencial para lograr la velocidad de guiñada deseada por el conductor. De esta manera, si es posible calcular la velocidad de guiñada deseada y medir la actual, entonces se podría aplicar un simple algoritmo de control para disminuir la diferencia entre la velocidad de guiñada deseda y actual o medida. El control definido sería el siguiente (Ulsoy, A., Peng, H., & Çakmakci, M[8]): 𝐼𝑓 |𝜓󰇗−𝜓󰇗𝑑𝑒𝑠|≥𝜓󰇗𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑 𝑎𝑛𝑑 |𝜓󰇗−𝜓󰇗𝑑𝑒𝑠| 𝜓󰇗𝑑𝑒𝑠 ≥𝜓󰇗𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑_𝑝𝑒𝑟𝑐𝑡 𝑇ℎ𝑒𝑛 𝑀𝐸𝑆𝐶_𝑦𝑎𝑤 =𝐾𝑦𝑎𝑤(𝜓󰇗𝑑𝑒𝑠 −𝜓󰇗) 𝐸𝑙𝑠𝑒 𝑀𝐸𝑆𝐶_𝑦𝑎𝑤 =0 (5.10) • Slip-angle Estimation and Regulation: Se ha visto que el seguimiento de la velocidad de guiñada es importante para el control de estabilidad, pero también se debe tener en cuenta que el ángulo de deslizamiento no sea excesivamente grande. Luego, de la misma manera que en el seguimiento de la velocidad de guiñada, si se asume que el ángulo de deslizamiento del vehículo puede ser estimado o medido, el método de control se puede simlificar a un controlador PD (Ulsoy, A., Peng, H., & Çakmakci, M[8]): 𝐼𝑓 |𝛽|≥𝛽𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑 𝑎𝑛𝑑 𝛽.∆𝛽 >0 𝑇ℎ𝑒𝑛 𝑀𝐸𝑆𝐶_𝛽 =𝐾𝛽𝑝.𝛽+𝐾𝛽𝑑.∆𝛽 𝐸𝑙𝑠𝑒 𝑀𝐸𝑆𝐶_𝛽 =0 (5.11) Donde 𝛽.∆𝛽 >0 garantiza que la ley de control se active solo cuando la magnitud del ángulo de deslizamiento este aumentando. Una vez obtenido los momentos correctores del control de estabilidad de cada parte, para combinarlos solo basta con sumarlos. 𝑀𝑣𝑠𝑐_𝑡𝑜𝑡𝑎𝑙 =𝑀𝐸𝑆𝐶_𝑦𝑎𝑤 +𝑀𝐸𝑆𝐶_𝛽 (5.12) Y a continuación se muestra en la tabla 2 los parametros de las ecuaciones anteriores (Ulsoy, A., Peng, H., & Çakmakci, M[8]). Diseño 32 32 Variable Valor Unidad 𝜓󰇗𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑 0.5 Grados/segundo 𝜓󰇗𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑_𝑝𝑒𝑟𝑐𝑡 2 % 𝐾𝑦𝑎𝑤 0.2 (o 0 apagado) Slip por rad/s 𝛽𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑 3 Grados 𝐾𝛽𝑝 2.5 (o 0 apagado) Slip por radianes 𝐾𝛽𝑑 0.1(o 0 apagado) Slip por radianes Tabla 2 – Parámetros para el controlador de estabilidad 33 6 SIMULACIONES Una vez descrito el diseño de cada uno de los controladores, se dará paso a sus respectivas simulaciones para su validación. 6.1. Entorno de simulación, software usado y programación Los modelos han sido desarrollados en el lenguaje de programación Python a traves de la interfaz Spyder. La programación de cada modelo de control en python se ha llevado de manera independiente, pero en escencia tienen la misma estructura, unas variables con los valores del coche definidas, una serie de funciones creadas para cada una de las simulaciones que cumplen una función en específica y finalmente un bucle principal donde se realizan todas las llamadas a las funciones cuando sea necesario. 6.1.1 Control longitudinal Para el caso del control longitudinal, se parte de las ecuaciones de estado de nuestro Sistema: 𝑥󰇗 =𝐴.𝑥+𝐵.𝑢 𝑦 =𝐶.𝑥 (5.13) Y la realimentación se expresa de la siguiente manera: 𝑢=−𝐾.𝑥 (5.14) Luego se calcula la ganancia “K” de la realimentación, para ello se usará el método de “pole placement”, y dentro de este se usará el método de Ackermann. Una vez calculada la ganancia, solo nos quedaría por calcular los valores iniciales que tendremos en nuestra simulación. Valores iniciales de las variables 𝐾𝑐 𝑦 𝜏𝑐, con ellas los valores de nuestras matrices A, B y C. También calcular la integral del error 𝑥3, la doble integral del error 𝑥4,la velocidad controlada 𝑥2=𝑣𝑐 y la distancia entre vehículos 𝑥2=𝑅. Con estos valores iniciales calcular también el valor inicial de la entrada a nuestro modelo dinámico del vehículo 𝑢 =−𝑘1𝑥1−𝑘2𝑥2−𝑘3𝑥3−𝑘4𝑥4. Una vez definidas y calculadas todas estas variables se realiza un bucle “for” de 120 segundos, tiempo suficiente para nuestra simulación. Aquí se realiza una llamada a la función “odeint” que resuelve el modelo dinámico longitudinal no lineal del vehículo y devuelve el valor de la velocidad controlada 𝑥2=𝑣𝑐 y el valor de la distancia entre los dos vehículos, Además en este bucle “for” se lleva a cabo las actualizaciones de las variables y se define la actuación del vehículo para el próximo estado. Por último, se encuentra la función que es llamada por odeint. A esta función se le pasan los valores de la velocidad de coche controlado, la distancia que hay entre ambos coches, el tiempo de simulación y la variable de entrada al modelo dinámico del vehículo 𝑢. En esta función se actualizan los valores de 𝐾𝑐 𝑦 𝜏𝑐 y se calcula los valores de 𝑥󰇗2 y 𝑥󰇗3 para que luego el odeint devuelva 𝑥2 𝑦 𝑥3. Además, se calcula la velocidad del coche líder en función del tiempo, figura 23. Simulaciones 34 34 6.1.2 Control de dirección Para el caso del control de dirección es algo más simple que el longitudinal, pero algo más largo. Como se ha visto en el apartado 5.4 el cálculo para obtener el ángulo de dirección de nuestro vehículo es un cálculo meramente geométrico donde se tiene como incognita la coordenada x del siguiente punto objetivo respecto a la parte trasera del vehículo. Para lograr esto se tiene que seguir varios pasos. Pero antes de describir las funciones hay que decir que la trayectoria preestablecida está en dos vectores que almacenan las coordeanas “x” y las coordeandas “y” cada una. Se tiene una función que calcula el índice del punto objetivo dentro de los vectores que contienen los puntos de la trayectoria. Primero se calcula el índice del punto más cercano hacienda un barrido por los vectores de la trayectoria. Una vez obtenido el índice mas cercano, se calcula la distancia desde la parte trasera del vehículo hasta el punto más cercano obtenido previamente y el siguiente mediante un bucle “while”, si la distancia del más cercano es menor que la del siguiente, entonces se sale del bucle y se toma ese indice como referencia para empezar a buscar el punto objetivo look ahead. Luego se realiza otro bucle while desde el índice cogido hasta la longitud del vector de las coordenadas de la trayectoria, calculando la distancia de cada uno de esos puntos hacia la parte trasera del vehículo. Si esa distancia supera el valor del look ahead establecido “ℓ𝑑”, figura 21, se sale del bucle y se toma ese índice como el índice del punto objetivo, valor que devuelve como función. Como se ha nombrado en la función anterior, Tambien se tiene una ecuación para calcular la distancia entre un punto de la trayectoria y la parte trasera del vehículo. Esta función simplemente toma los valores “x” e “y” de ambos puntos los resta y aplicando el teorema de Pitágoras se obtiene la distancia entre ambos puntos, devolviendo dicho valor como función. También se cuenta con una función que simula un controlador proporcional para controlar la velocidad, se le pasa como variables la velocidad deseada y la actual y devuelve la aceleración necesaria para obtener la velocidad deseada, su ganancia proporcional es de: 𝐾𝑝=1. Otra función es la que calcula el ángulo de dirección del coche 𝛿. En esta función obviamente se calcula el ángulo de dirección del coche con el punto objetivo que indica el índice obtenido en las funciones anteriores, obviamente llamando a la función que calcula el índice del punto objetivo. Primero se calculo en ángulo 𝛼, para posteriormente calcular el ángulo de dirección, valor el cuál devuelve como función después de su llamada. Otra de las funciones usadas es una función que actualiza los valores de las variables del vehículo, como las coordenadas “x” e “y” del vehículo que se usa para representar el vehículo en el plot, su ángulo de orientación “yaw”, su velocidad y sus coordenadas “x” e “y” de la parte trasera del vehículo. Por último, se crea una función para pintar la evolución del vehículo, en forma de flecha. Ahora se explicará la parte principal del código. Como en el control longitudinal en esta parte principal, que es la funcion main del código, se hacen las llamadas a las funciones cuando sea pertinente. Se comienza guardando las coordenadas “x” e “y” de la trayectoria planificada, en 2 vectores separados. También se define los valores iniciales de las variables como la velocidad, la velocidad objetivo y las coordenadas iniciales del vehículo, y se llama a la función que calcula el índice del punto objetivo. A continuación, empieza el bucle while que concluye cuando el índice indica las últimas coordenadas de la trayectoria. En este bucle se llama a la función del control proporcional que devuelve la aceleración del vehículo, también se llama a la función que calcula el ángulo de dirección que devuelve dicho ángulo y el índice del actual punto objetivo, luego se actualizan los valores de las variables llamando a la función que actualiza las variables, para finalizar con la llamada a la función que pinta la gráfica animada en cada iteración. 35 6.2. Control de crucero y seguimiento Para el testeo del controlador longitudinal se hará uso de un simplepero eficaz ejercicio. Se tendrá dos vehículos, uno líder y otro controlado. Para empezar, vamos a estipular que la distancia de seguridad entre los dos coches es como mínimo de 100 metros y que la velocidad máxima de nuestro vehículo controlado es de 40 𝑚/𝑠. La simulación durará 120 segundos, ambos vehículos partirán con una velocidad similar de 30 𝑚/𝑠, y distanciados 80 metros entre si, luego la velocidad de nuestro coche controlado tiene que variar para que la distancia entre ambos vehículos tenga el valor de la distancia de seguridad, a continuación, se subirá la velocidad del coche líder gradualmente hasta los 45 𝑚/𝑠, por lo que el coche controlado empezará a subir su velocidad hasta los 40 𝑚/𝑠 manteniendo siempre la distancia de seguridad de 100 metros, y una vez alcanzada la velocidad máxima del vehículo controlado la distancia entre los vehículos empezará a crecer. En la figura 23 se muestra la evolución que tendría la velocidad del coche líder en función del tiempo. Figura 23 – Evolución de la velocidad del vehículo líder En la figura 24 se representa la distancia entre vehículos en función del tiempo y además representa la velocidad del coche controlado en función del tiempo, es decir la simulación del control de crucero y seguimiento. Simulaciones 36 36 Figura 24 – Headway and Cruise Control Como se puede observar en las figuras anteriores, el control longitudinal cumple su función correctamente. En los primeros 40 segundos el vehículo controlado primero se ciñe a mantener la distancia de seguridad estipulada, una vez alcanzada dicha distancia sube su velocidad para mantenerla. También se puede observar en la primera parte de la gráfica de la figura 24 que en los primeros instantes la distancia aumenta de manera no lineal y eso es debido al tiempo de respuesta de nuestro controlador. Algo que se podría mejorar con otro tipo de controlador, pero este sin duda cumple su cometido. 37 6.3. Seguimiento de trayectoria Para el testeo del controlador de dirección, se realizará un seguimiento de una ruta preestablecida en forma de ∞ algo deformada, como se muestra en la figura 25. Figura 25 – Ruta preestablecida para el control de dirección Esos giros bruscos situados al inicio y a mitad de la simulación servirán para probar como de bien se comporta nuestro controlador ante giros brucos. En esta simulación solo existe el vehículo controlado, que seguirá la ruta trazada. El vehículo partira de una posición ajena a la trayectoria y con una orientación de cero, es decir, el ángulo de dirección de las ruedas del vehículo es cero, tal y como se muestra en la figura 26. Figura 26 – Posición inicial del vehículo junto con la ruta preestablecida. Simulación en Gazebo 44 44 También realicé una comparación en Gazebo de las articulaciones de la dirección en 3D de cada uno de los modelos incluido el mio tal y como se muestra en la figura 36, 37 y 38. El eje grande con el circulo representa el eje de giro respecto a “x”, es decir, para que la rueda gire longitudinalmente, y el eje pequeño con su circulo, con zoom, representa el eje de giro de la dirección de la rueda, es decir respecto a su eje “z”. Figura 36 – Ejes de giro de la rueda directriz de mi modelo del Renault Twizy Figura 37 – Ejes de giro de la rueda directriz del modelo CatVehicle 45 Figura 38 – Ejes de giro de la rueda directriz del modelo car_demo (Prius) Al ver el resultado en 3D de cada uno de los modelos, incluido el mio, es notable que todos los modelos son muy parecidos, sin embargo, depues de los siguientes análisis que se explicará a continuación, puedo decir que el fallo está fuera de mi alcance de comprensión. Ya como último recurso me propuse realizar las simulaciones con los vehículos programados por la comunidad, encontré dos vehículos, uno de un proyecto llamado Catvehicle y otro de un proyecto llamado car_demo, los anteriormente vistos. El primero de ellos, al cargarlo en Gazebo e intentar mover el vehículo, las ruedas directrices directamente no funcionan, es decir, no avanzan longitudinalmente ni giran respecto a su eje “z” como se observa en la figura 39. Simulación en Gazebo 46 46 Figura 39 – Simulación de prueba en Gazeebo con el modelo de CatVehicle Como se observa en la figura 39, se está introduciendo valores a las articulaciones del vehículo, sin embargo, el vehículo no realiza ningún movimiento ni intento de hacerlo. El segundo de ellos, que es un Prius, al cargarlo en gazebo tras unos segundos de simulación, las ruedas directrices se vuelven completamente locas girando respecto a su eje “z”, figura 40 y 38. Figura 40 – Simulación de prueba en Gazebo con el modelo de car-demo (Prius) Como se puede observar en la figura 40, con tal solo 15 segundos de simulación y sin hacer nada, las ruedas se giran solas, y no vuelven a su posición, aunque forcemos un angulo de dirección de 0º. 47 Tras todas estas pruebas realizadas llegué a la conclusión que el modelado en 3D del Renault Twizy está parcialmente terminado, solo fallando cuando se intenta añadir un giro respecto a su eje “z” para simular la dirección del vehículo, con esto impidiéndome realizar las simulaciones en 3D. Presupuesto de las Modificaciones 48 48 8 PRESUPUESTO DE LAS MODIFICACIONES En este apartado se tratará un presupuesto realizado de las piezas mecánicas y otros componentes que serían necesarios para convertir al Renault Twizy en un coche de pruebas para conducción autónoma. Los componentes que se tendrán en cuenta en este presupuesto son los que se han visto en el apartado de sensores y actuadores. Componente Nombre Características Laser 2D SICK LASSER TIM551 Rango de operación: 0.05 m a 8 m, Ángulo de apertura: 270º, Frecuencia de escaneo 15 hz Camara ToF ToF Sentis3D-M420 Rango de operación: 7 m, FOV: 90º Lidar 3D Laser Bear Honeycomb FOV vertical: 95º, FOV horizontal: 360º, Rango mínimo de cero, 2 millones de horas testeado Camara CCD Prosilica GT1290C A color, 1.2 Megapixel con visión GigE y puerto Gigabit Ethernet, Modulo RTK GNSS REACH M+ EMILID RTK GNSS Receiver Precisión en la posición de 7 mm IMU NAV440CA-200-2 Precisión en pitch y roll < 0.4º, Precisión en la posición < 0.3 m Motor Maxon EC60fl Reductor GP52C, el Encoder MILE de 4096 cpt con 2 canales y un controlador electrónico EPOS4. OVMS OVMS Tabla 3 – Componentes del presupuesto 49 Componente Precio por unidad Precio total SICK LASSER TIM551 1 713,882 € 3 427,764 € ToF Sentis3D-M420 1 470,92 € 1 470,92 € Laser Bear Honeycomb 10 000,00 € 10 000 € Prosilica GT1290C 1 079,00 € 1 079,00 € REACH M+ EMILID RTK GNSS Receiver 265 € 265 € NAV440CA-200-2 7 541,82 € 7 541,82 € Maxon EC60fl - 772,64 € OVMS 160 € 160 € Presupuesto final 24 717,144 € Tabla 4 – Presupuesto final con todos los componentes incluidos Obviamente si queremos hacer un presupuesto bien hecho habría que incluir el salario de los trabajadores y del jefe en cuestión, así como tener en cuenta los años de desarrollo que tendría este hipotético proyecto, entre otras muchas cosas. Conclusiones y Trabajos Futuros 50 50 9 CONCLUSIONES Y TRABAJOS FUTUROS 8.1. Conclusiones Después de llevar a cabo las simulaciones se puede llegar a la conclusión de que la mayoría de los objetivos principales de este proyecto se han podido realizar, como el desarrollo del controlador longitudinal y de dirección. Sin embargo, las simulaciones en un entorno virtual no se han podido llevar a cabo debido a un problema con Gazebo, pudiendo solamente realizar parcialmente su modelado en gazebo debido a una falla a la hora de programar la dirección del vehículo. Con relación al control longitudinal del vehículo, se puede decir que el controlador cumple su función, pudiendo mejorarse el tiempo de respuesta del controlador. Con relación al control de dirección del vehículo, también cumple su función, pero de las simulaciones se podría rescatar que se tiene que evitar giros bruscos con curvas cerradas. También se ha propuesto una arquitectura de control con la que tendría que contar un vehículo autónomo, así como las modificaciones mecánicas y a nivel se software que se tendría que realizar para poder llevar a cabo pruebas autónomas con el Renault Twizy. 8.2. Trabajos futuros Como trabajos futuros se propone realizar diferentes comparativas entre diferentes tipos de control, como el borroso o modelos predictivos. También se podría trabajar con un modelo mas complejo que el de la bicicleta, usado para el control de dirección. Resolver el problema de la dirección del modelo en 3D en Gazebo. Realizar las simulaciones en 3D que no se han podido llevar a cabo en este proyecto, asi como la simulación del control de estabilidad. Realizar las modificaciones mecanicas propuestas al Renault Twizy y llevar a cabo las pruebas de control en un entorno controlado real, asi como implementar los diferentes sensors propuestos en el presupuesto. De este proyecto espero que sirva como punto de partida para otros proyectos similares, o continuarlo en un futuro trabajo fin de master. 51 REFERENCIAS [1] Rajamani, R.. "Vehicle dynamics and control.", Second edition, Ney York, Springer, 2012. [2] Snider, Jarrod M.. "Automatic Steering Methods for Autonomous Automobile Path Tracking.", 2009. [3] Coulter, R. C.. "Implementation of the Pure Pursuit Path Tracking Algorithm.", 1992. [4] Jafarnejad, S.; Codeca, L.; Bronzi, W.; Frank, R. y Engel, T.. "A Car Hacking Experiment: When Connectivity Meets Vulnerability.", 2015 IEEE Globecom Workshops (GC Wkshps), San Diego, CA, 2015, pp. 1-6. [5] Bussemaker, K. J.. "Sensing requirements for an automated vehicle for highway and rural environments.", 2014. [6] Borraz, R.; Navarro, P.; Fernández, C. y Alcover, P.. "Cloud Incubator Car: A Reliable Platform for Autonomous Driving.", 2018. [7] Serban, A. C.; Poll, E. and Visser, J.. "A Standard Driven Software Architecture for Fully Autonomous Vehicles.", 2018 IEEE International Conference on Software Architecture Companion (ICSA-C), Seattle, WA, 2018. [8] Ulsoy, A., Peng, H., & Çakmakci, M.. "Automotive Control Systems.", Cambridge: Cambridge University Press. doi:10.1017/CBO9780511844577 [9] En esta página web se encontraron tutoriales de Gazebo de mucha utilidad a la hora de desarrollar este proyecto. http://gazebosim.org/tutorials [10] En esta página web se encontraron tutoriales de ROS de mucha utilidad a la hora de desarrollar este proyecto. http://wiki.ros.org/ROS/Tutorials