Semana 2 - Instalación de Carla, Visualización 3D, Exploración de Datasets
En esta segunda semana del proyecto, he avanzado en varias áreas importantes. Aunque surgieron algunos inconvenientes, he podido resolverlos y continuar con el desarrollo según lo planeado. A continuación, detallo los principales progresos logrados esta semana:
Instalación y Exploración de Carla
He instalado Ubuntu 22.04 y la versión 0.9.15 del simulador Carla. Una vez completada la instalación, lancé el servidor principal y paralelamente ejecuté varios scripts desde PythonAPI/examples que me permitieron generar tráfico en tiempo real y controlar manualmente un vehículo en el entorno del simulador. Estas pruebas iniciales me ayudaron a familiarizarme con el funcionamiento general del simulador.
Adicionalmente, he explorado diferentes parámetros de lanzamiento del servidor de Carla, lo que me ha permitido ajustar la calidad gráfica, la velocidad de simulación y el nivel de realismo, optimizando el rendimiento en función de los recursos disponibles.
Desarrollo de un Programa en Python para Visualización 3D de Puntos
Como parte del proceso de familiarización con la visualización de datos, desarrollé un pequeño programa en Python que genera puntos 3D con componentes de color RGB. Para la generación de estos puntos utilicé NumPy y para su visualización empleé Plotly, en concreto Graph_objects.
El programa genera n puntos dentro de un rango r (que define la distancia máxima), almacenándolos en un array en el que cada punto tiene la siguiente estructura: [x, y, z, r, g, b]. De esta manera se obtiene un array de listas anidadas.
num_points = 500
points_range = 100
def create_point():
x = np.random.rand() * points_range - points_range / 2
y = np.random.rand() * points_range - points_range / 2
z = np.random.rand() * points_range - points_range / 2
r = int(round(np.random.rand() * 255))
g = int(round(np.random.rand() * 255))
b = int(round(np.random.rand() * 255))
point = np.array([x, y, z, r, g, b])
return point
# Función que crea una nube de puntos aleatorios
def create_array(n):
points = []
for idx in range(n):
point = create_point()
points.append(point)
lidar_array = np.array(points)
return lidar_array
Donde x, y, z representan las coordenadas espaciales y R, G, B corresponden a las componentes de color. Con Plotly logré una representación dinámica en 3D de los puntos generados y añadí la visualización de las componentes de color a las etiquetas que aparecen al seleccionar cualquier punto.
Investigación en la Estructura de los Datasets
Continué profundizando en la estructura de los datasets que utilizaré. Esta semana enfoqué mi análisis en el dataset Goose, comprendiendo mejor cómo están organizados los datos. Aunque me falta por profundizar en el formato binario en el que vienen los datos de los sensores LiDAR. Comprender este formato es esencial para poder interpretar y procesar correctamente los datos brutos que se obtienen de estos sensores, lo que será clave en las siguientes etapas del proyecto. Me focalizaré en ello la próxima semana.