GithubHelp home page GithubHelp logo

adir's Introduction

Circulación autónoma en cruces y rotondas (Autonomous Driving in Intersections and Roundabouts).

Este repositorio contiene el trabajo desarrollado durante mi Trabajo Fin de Grado titulado "Circulación autónoma de un coche a escala 1/10 en cruces y rotondas utilizando ROS y Gazebo" defendido por mí, Germán Ruiz Mudarra en septiembre de 2020 y tutorizado por Jesús Morales Rodríguez y Ricardo Vázquez Martín, profesores del Departamento de Ingeniería de Sistemas y Automática de la Universidad de Málaga.

Prerequisitos

  • Ubuntu 16.04
  • ROS Kinetic
  • Seat Car Simulator, del Instituto de Robótica e Informática Industrial CSIC-UPC (marzo de 2021: no está disponible ya que pertenecía al Autonomous Driving Challenge 2018 y los organizadores han decidido hacer el repositorio privado)
  • FU Line Detector, wiki aquí y paquete de ROS aquí.

Resumen

El detector y seguidor de líneas (DSL) provisto por la competición permitía que el coche se moviera de forma autónoma por su carril, pero no podía superar intersecciones debido a la complejidad de la maniobra. El UMA Garage Team en la edición de 2018 planteó una solución de bucle abierto en las intersecciones en la que el vehículo no tenía realimentación de la trayectoria que estaba realizando. Este trabajo pretende solucionar este problema.

Utilizando la información que saca el DSL de la imagen de la cámara frontal y un mapa topológico donde se define la posición de los distintos puntos de interés del circuito (nodos de entrada/salida de las intersecciones), se creó un nodo ROS que su trabajo es distinguir a partir de la información odométrica (comparándolo con un mapa topológico del circuito) y de la curvatura de las líneas detectadas en cuál de los escenarios de circulación posibles está el vehículo (recta, curva, rotonda o cruce).

En caso de que se esté en una recta o en una curva, el DSL es el encargado de la actuación del coche, funcionando de la misma manera que se planteó anteriormente.

Sin embargo, si el coche está en una rotonda o en un cruce, el detector activa una planificación específica para cada escenario. Esta planificación es distinta para cada tipo de intersección, estando la de las rotondas basada en este artículo (D. González, J. Perez y V. Milanés, 2016) y la de los cruces en una modificación propia que parte de la técnica anterior. Estos nodos ROS de planificación generan una referencia a partir de curvas de Bézier o SPLINES. Aquí un ejemplo de cómo funciona este tipo de aproximaciones para ver como se han aplicado a este problema.

Esta referencia generada va a parar a un nodo ROS que se encarga de hacer un control proporcional de orientación, mandando comandos de dirección al coche.

Cubiertos todos estos casos, el coche puede circular por todo el circuito de manera autónoma independientemente del escenario al que se enfrente y con un método que garantiza que las maniobras en las intersecciónes se realizan correctamente.

Mejoras propuestas

  • Utilizar métodos alternativos de odometría para mejorar la precisión, como odometría visual.
  • Utilizar algoritmos de inteligencia artificial para que el detector de entornos pueda funcionar únicamente con la cámara.
  • Añadir a este proyecto un sistema de planificación de caminos como Dijsktra o A*, ya que la toma de decisiones cuando se encuentra en una intersección no es autónoma.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.