Post

Ejercicio grafo de visibilidad

Paquete ROS2 para el proyecto

Esta semana estuve dedicándola a completar el ejercicio de navegación global basado en el grafo de visibilidad.

Utiliza tres nodos principalmente:

  • Nodo generador del mapa de polígonos:
    Este nodo lee el mapa de ocupación y genera un mapa de polígonos que representa cada obstáculo y guarda el mapa en binario.
    Tiene un parámetro de dilatación para expandir más o menos los obstáculos.

  • Nodo planificador de ruta:
    Calcula la ruta libre de colisiones entre la posición actual del robot y la meta que definamos (hay que procurar que la meta no esté dentro de un obstáculo).
    El nodo realiza los siguientes pasos:

    1. Construye el grafo de visibilidad.
    2. Planifica la ruta más corta mediante el algoritmo Dijkstra.
    3. Genera un .npy con las coordenadas de la ruta en metros y muestra el grafo de visibilidad.
  • Nodo path controller:
    Este nodo se encarga de que el robot siga la ruta planificada.
    Toma los waypoints generados por el nodo planificador y mediante un control proporcional simple (P) va a sus objetivos.
    Utiliza un control P para la velocidad angular y otro para la lineal.

Ver video


Mejora del factor de tiempo real

Otro punto que traté estos días fue la mejora del RTF de la simulación. En un principio obtenía un máximo de un 40%.
Para mejorarla, estuve probando a reducir la altura de la malla de colisión de las estanterías, pero no funcionó.
Sospecho que el RTF de la simulación se ve más perjudicado por el número de triángulos de las mallas que por el tamaño de las mismas.

Otra opción era reducir el número de estanterías en la simulación, pero esta opción la descarté puesto que tampoco es que el almacén estuviera muy lleno.

Estuve investigando qué otras opciones había y vi una que me gustó: actuar sobre el motor de físicas.
Así, modificando los parámetros max_step_size y real_time_update_rate obtuve un factor RTF:

  • 98%max_step_size = 0.004, real_time_update_rate = 250
  • 80%max_step_size = 0.002, real_time_update_rate = 500

Siguientes pasos

Ahora con estos resultados, hay algunos aspectos en los que debería trabajar:

  • Mejorar el mapa de polígonos: al aplicar la dilatación, las esquinas dejan de ser esquinas en los obstáculos y se vuelven redondeadas.
    Esto añade nodos innecesarios al grafo de visibilidad, lo que hace que tarde en ejecutarse el algoritmo más de lo que me gustaría.

  • Eliminar el primer punto de los de la ruta, ya que el robot lo toma en cuenta y algunas veces se queda dando vueltas al empezar intentando llegar a ese punto.

This post is licensed under CC BY 4.0 by the author.

Trending Tags