Mejora nodo RRT y laser mapping
Mejora nodo RRT
Estas semanas estuve trabajando en el nodo RRT para lograr una navegación más natural.
- Reducir el número de nodos del árbol global para que el planificador sea más estable y rápido.
- Reducir el número de waypoints de la ruta final para que el controlador no haga giros raros ni “serpentee”.
1. Reducir tamaño del árbol RRT global
- Número de nodos reducido (2000 -> 600)
- El step size aumentado (ej: 25 -> 45)
Esto genera un grafo global más ligero y menos denso, evitando que al extender hacia goal añada demasiados nodos pequeños.
2. Postprocesado de ruta para reducir waypoints
Para reducir el número de waypoints en la ruta, se añadió una función en la que se intentan conectar waypoints lejanos si el segnmento formado entre ellos está libre.
Con estas mejoras logramos una navegación mucho más natural. Podemos verla en el siguiente vídeo:
Laser mapping
Estas semanas estuve trabajando en una primera aproximación para el nodo de mapeado láser. Para ello, diseñé un nodo que toma los datos del laser scan, los trasforma al frame global ODOM y detecta segmentos de líneas.
Para generar los segmentos se utiliza el algoritmo RANSAC. Este algoritmo, una vez tenemos los puntos referenciados en odom, hace lo siguiente:
- Elige dos puntos al azar del set que proporciona el láser.
- Dibuja una línea con ellos.
- Comprueba cuántos puntos caen cerca de esa línea.
- Guarda la línea que tenga más puntos cerca.
El problema es que la línea generada es infinita. Para poder convertirla en un segmento, añadí una función para comprobar los puntos que forman la línea y cortar cuando existan huecos grandes entre los mismos, quedándose con el segmento más largo.
Una vez tenemos el segmento detectado, se eliminan los puntos del set y no se usan otra vez.
Para visualizarlo, usamos un MarkerArray en RVIZ. En el siguiente vídeo podemos ver el algoritmo en funcionamiento. Observamos que tarda cierto tiempo en converger cuando el robot está en movimiento.

