Semana 23: Mapa Con Tres Zonas Heterogéneas
Mapa de tres zonas
Tras una pausa debido a exámenes y entregas universitarias, para esta semana se ha diseñado un nuevo mapa en CARLA compuesto por tres zonas diferenciadas en cuanto a vegetación y complejidad visual. El objetivo es proporcionar escenarios diversos que permitan evaluar la respuesta del sensor LiDAR bajo condiciones variadas de oclusión y densidad de puntos.
Zona 1: Hierba baja y arbustos dispersos
Esta área contiene vegetación baja, con algunos arbustos aislados. Es ideal para pruebas en caminos semi-rurales, ya que permite una buena visibilidad del entorno y genera una nube de puntos clara, útil para entrenar detección de obstáculos sin demasiado ruido visual.
Zona 2: Hierba alta
Simula un entorno con mayor vegetación. La hierba es más densa y alta, lo que genera mayor dispersión en los puntos LiDAR, particularmente en altura. Es adecuada para evaluar la pérdida de precisión en sensores debido a vegetación que puede ocluir parcialmente los objetos.
Zona 3: Bosque
Compuesta por árboles altos y densos. Esta es la zona más compleja, ya que las copas de los árboles y los troncos generan múltiples capas de puntos. Aquí se espera una mayor dificultad para detectar objetos al fondo, y es perfecta para simular entornos naturales densos como caminos forestales.
Resultado
A continuación se muestra un vídeo del mapa, con un vehículo recorriendo un camino prefijado, aunque también puede conducirse manualmente para explorar cualquier zona. El video se ve cortado en algunas partes por problemas al grabarlo.
Enlace Dataseet
Almacenamiento de datos del LiDAR
Dado que algunos compañeros han reportado problemas con los datos guardados de los dataseets, se ha decidido analizarlos.
Cada frame generado por el sensor LiDAR se guarda como una nube de puntos en formato .ply
en la carpeta dataset/lidar/. Estos archivos contienen información tridimensional de cada punto capturado en la escena, así como metadatos adicionales útiles para el entrenamiento de modelos de percepción.
Contenido de cada punto
Cada punto almacenado incluye:
-
Coordenadas XYZ: La posición del punto respecto al sensor.
-
Color RGB: Determinado a partir de la etiqueta semántica usando un mapeo predefinido.
-
Intensidad: Calculada usando una fórmula basada en la distancia y un coeficiente de atenuación según la clase del objeto.
-
Etiqueta semántica: Codificada en el campo
normals
junto con la intensidad.
Formato del campo normals
:
normals.x → intensidad
normals.y → etiqueta semántica
normals.z → etiqueta semántica (duplicada por compatibilidad)
Generación del punto
-
El sensor semántico genera puntos con etiquetas de clase (Vegetación, Coche, Edificio…).
-
Se aplica ruido gaussiano controlado (noise_std).
-
Se simula pérdida de puntos según la intensidad (drop_rate, intensity_limit).
-
Se calcula la intensidad con: I = e^(-a * d) donde a es el coeficiente de atenuación según el objeto y d la distancia al sensor.
-
Finalmente, se guarda la nube de puntos con toda esta información en formato Open3D .ply.