Semana 27: Parámetros atmosféricos en CARLA y remisión LiDAR de GOOSE
Clima y atmósfera en CARLA
Con el objetivo de abordar distintos escenarios con climas, se ha estado investigando cómo cambiar el clima en CARLA, encontrandosé que en su propia API se encuentra la clase carla.WeatherParameters
con la que es posible ajustar el entorno con un nivel de control realista.
Esta clase ofrrece una gran diversidad de parámetros:
Parámetro | Rango de Valores | Descripción |
---|---|---|
cloudiness | 0 - 100 | Nivel de nubes en el cielo. 0 es cielo despejado, 100 completamente nublado |
precipitation | 0 - 100 | Intensidad de lluvia. 0 es sin lluvia, 100 es una lluvia intensa |
precipitation_deposits | 0 - 100 | Formación de charcos en el suelo. Puntos estáticos que simulan acumulación de agua |
wind_intensity | 0 - 100 | Intensidad del viento. Afecta la dirección de la lluvia y animaciones de vegetación |
sun_azimuth_angle | 0 - 360° | Ángulo azimutal del sol. 0 es un punto de origen determinado por Unreal Engine |
sun_altitude_angle | -90 - 90° | Altura solar. 90° es mediodía, -90° es medianoche |
fog_density | 0 - 100 | Densidad general de la niebla. Solo afecta cámaras RGB |
fog_distance | ≥ 0 (m) | Distancia desde la cámara donde comienza la niebla |
wetness | 0 - 100 | Nivel de humedad en superficies visibles (solo cámaras RGB) |
fog_falloff | 0 - ∞ | Densidad vertical de la niebla. Valores altos comprimen la niebla al suelo |
scattering_intensity | 0 - ∞ | Controla cuánta luz contribuye a la niebla volumétrica. 0 es sin dispersión |
mie_scattering_scale | 0 - ∞ | Controla la interacción de la luz con partículas grandes (polvo, polen). Produce cielos brumosos y halos alrededor de la luz |
rayleigh_scattering_scale | 0 - ∞ | Dispersión por partículas pequeñas (aire, atmósfera). Da lugar a cielos azules o rojizos |
dust_storm | 0 - 100 | Fuerza de una tormenta de polvo. Añade atmósfera opaca y densa |
Ejemplo
Se ha hecho una pequeña comparación para comprobar el efecto usando los valores por defecto de CARLA y los siguientes:
# Configurar el clima
weather = carla.WeatherParameters(
cloudiness=50.0,
precipitation=50.0,
precipitation_deposits=50.0,
wind_intensity=50.0,
sun_azimuth_angle=90.0,
sun_altitude_angle=35.0,
fog_density=100.0,
fog_distance=10.0,
wetness=100.0,
fog_falloff=2.0,
scattering_intensity=10.0,
mie_scattering_scale=10.0,
rayleigh_scattering_scale=10.0,
dust_storm=30.0
)
world.set_weather(weather)
El único defecto es que no se ha visto ningún efecto en el sensor LiDAR.
Valores por defecto

Valores personalizados

Uso de la remisión de GOOSE
La anterior semana se creo un script para recorrer el los escenarios elegidos del dataset GOOSE para calcular las atenuaciones de cada clase, pero se ha propuesto que en vez de eso, a cada clase se le divida en secciones dependiendo de la distancia, por ejemplo, cada 10 metros. Después calcular la media de los puntos dentro de cada sección y aplicar el resultado a los puntos sacados en CARLA, es decir aplicar directamente el valor de remisión dependiendo de la distancia a los puntos de CARLA en vez de realizar la fórmula en base a la atenuación.
Pero durante el análisis de los datos LiDAR del dataset GOOSE, se encontraron valores de remisión que no se comportaba como se esperaba en una simulación fisica, no se mostraba una caída de la remisión con la distancia.
Consultando el manual del sensor Velodyne VLS-128 (el utilizado por GOOSE) se descubrió lo siguiente en la página 31:
6.1 Calibrated Reflectivity
The VLS-128 measures reflectivity of an object independent of laser power and distances involved. Reflectivity values
returned are based on laser calibration against NIST-calibrated reflectivity reference targets at the factory.
For each laser measurement, a reflectivity byte is returned in addition to distance. Reflectivity byte values are segmented
into two ranges, allowing software to distinguish diffuse reflectors (e.g. tree trunks, clothing) in the low range from retroreflectors (e.g. road signs, license plates) in the high range.
A retroreflector reflects light back to its source with a minimum of scattering. The VLS-128 provides its own light, with negligible separation between transmitting laser and receiving detector, so retroreflecting surfaces pop with reflected IR light
compared to diffuse reflectors that tend to scatter reflected energy.
- Diffuse reflectors report values from 0 to 110 for reflectivities from 0% to 100%.
- Retroreflectors report values from 111 to 255, where 255 represents an ideal reflection.
Es decir:
-
La remisión no representa directamente la intensidad recibida del láser, sino un valor calibrado de reflectividad del material.
-
Esta reflectividad está normalizada en fábrica usando referencias del NIST.
- Se devuelven valores entre:
0-110
para difusos (ropa, árboles, suelo).111-255
para retrorreflectores (señales de tráfico, matrículas).
- Los valores no dependen directamente de la distancia ni de la energía real recibida.
Visualización del comportamiento
Se hicieron scatter plots de remisión vs distancia de varias clases (forest, fence y high_grass) del escenario 2022-07-22_flight
para ver comprobar si esxiste una relación clara entre ambas variables:



Resultado:
- Nube densa de puntos planos hasta 100.
- Puntos por encima de 110 muy dispersos.
- Ausencia de caída progresiva con la distancia.
Conclusiones
- CARLA permite simular condiciones ambientales con su propia API.
- Los valores de remisión del dataset GOOSE están procesados y calibrados, es decir, no presentan el comportamiente físico de la caída progresiva con la distancia.