View a markdown version of this page

Realiza un barrido de simulación de conducción autónoma con CARLA - Deadline Cloud

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Realiza un barrido de simulación de conducción autónoma con CARLA

En este tutorial se explica cómo ejecutar un barrido de parámetros de simulación de conducción autónoma de CARLA con captura multisensor configurable. Crea una imagen de Docker, la envía a Amazon Elastic Container Registry (Amazon ECR) y envía el paquete de trabajos de CARLA para la conducción autónoma GitHub a una flota de GPU de su granja de Deadline Cloud.

La tarea consiste en cambiar de carril, en el que un vehículo NPC arranca detrás del vehículo ego, acelera para posicionarse 20 metros por delante del ego durante una fase de avance de 105 segundos y, a continuación, se pone en el carril del ego. Abarca las velocidades configurables del ego, las velocidades de los PNJ y las distancias iniciales de los PNJ, y crea una tarea para cada combinación de parámetros (2 × 2 × 2 = 8 tareas por defecto). Cada tarea captura datos de varios sensores de los puntos de vista de la cámara que selecciones y produce el siguiente resultado:

  • Fotogramas RGB de cada punto de vista de cámara seleccionado

  • Marcos de segmentación semántica

  • Nubes de puntos LiDAR () .ply

  • Cuadros delimitadores 2D y 3D (formato KITTI)

  • Per-camera vídeos de escenarios (MP4) H.264

  • Vídeo en cuadrícula cosida (si seleccionas varias cámaras)

El siguiente vídeo muestra el flujo de trabajo de barrido de simulaciones de CARLA en Deadline Cloud.

Tiempo estimado: de 1 a 2 horas, incluida la creación de la imagen de Docker. Las tareas suelen completarse en unos 13 minutos cada una.

La ejecución de este tutorial conlleva gastos para las instancias de trabajo de la GPU que procesan las tareas y para el almacenamiento de imágenes de Amazon ECR.

Descripción general de

Para completar este tutorial, siga estos pasos:

  1. Cumplir los requisitos previos de .

  2. Configura tu granja.

  3. Cree y envíe la imagen de Docker.

  4. Envíe el trabajo de simulación.

  5. Supervise el trabajo.

  6. Revise la salida.

  7. Eliminación de recursos.

Requisitos previos

Antes de empezar, complete la siguiente configuración:

  1. Crea una AWS cuenta si aún no tienes una y asegúrate de que tenga acceso a las instancias de GPU (g6.4xlargerecomendado).

  2. Instala Docker localmente para crear la imagen de CARLA.

  3. Cree un repositorio de Amazon ECR en su cuenta para alojar la imagen creada.

  4. Instale la CLI de Deadline Cloud localmente.

Configure su granja

Necesitas una granja de Deadline Cloud con una cola que tenga un entorno de colas tipo conda (canales:conda-forge, paquetes:ffmpeg) y una flota de GPU (mínimo: 1 GPU NVIDIA con 16 vCPU y 64 GiB de memoria).

Permisos de IAM: su rol de cola necesita permisos de extracción de Amazon ECR, ya que el script de tareas se ejecuta con las credenciales del rol de cola. docker pull Adjunte una política como la siguiente:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "arn:aws:ecr:REGION:ACCOUNT_ID:repository/*" }, { "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" } ] }

Configuración del host de la flota: los trabajadores de su flota necesitan Docker y el kit de herramientas de contenedores de NVIDIA. Adjunta el script de configuración del host de Docker y NVIDIA Container Toolkit a tu flota. GitHub Para obtener más información, consulte Ejecute contenedores Docker con GPU NVIDIA en los trabajadores de Deadline Cloud.

Crea y publica la imagen de Docker

El trabajo se ejecuta dentro de un contenedor Docker basado en la imagen base:0.9.16 carlasim/carla de Docker Hub. La imagen base de CARLA incluye el simulador, pero carece del entorno Python, el ejecutor de escenarios y los scripts de captura de sensores necesarios para este trabajo. Las capas de imágenes personalizadas en Python 3.10 y los scripts de captura y punto de entrada permiten que cada tarea de Deadline Cloud pueda iniciar CARLA, ejecutar el escenario de conducción y registrar los datos de los sensores en un único contenedor. scenario_runner

Para crear e insertar la imagen de Docker
  1. Cree un repositorio de Amazon ECR si no tiene uno:

    aws ecr create-repository --repository-name carla-deadline --region REGION
  2. Desde el docker/ directorio del autonomous_driving_carla paquete, cree la imagen:

    cd docker/ docker build -t carla-deadline:0.9.16 .
    nota

    El Dockerfile se carlasim/carla:0.9.16 extrae de Docker Hub como imagen base. La primera compilación descarga aproximadamente 8 GB.

  3. Envía la imagen a Amazon ECR:

    aws ecr get-login-password --region REGION | \ docker login --username AWS --password-stdin ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com docker tag carla-deadline:0.9.16 \ ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/carla-deadline:0.9.16 docker push ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/carla-deadline:0.9.16

Envíe el trabajo de simulación

Para enviar el trabajo con el remitente de la GUI
  1. Desde el directorio del paquete, abra el remitente:

    cd autonomous_driving_carla deadline bundle gui-submit .
  2. En la pestaña de Job-specific ajustes, en Ajustes del escenario, configura las velocidades del ego, las velocidades de los PNJ y las distancias de los PNJ como números enteros separados por comas. El producto cruzado crea tu cuadrícula de tareas.

  3. En Puntos de vista de cámara, selecciona qué cámaras quieres capturar. La opción frontal es la opción predeterminada. Las posiciones disponibles son delantera, delantera izquierda, delantera derecha, trasera, trasera izquierda y trasera derecha.

  4. En Avanzado, defina el URI de la imagen del contenedor en ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/carla-deadline:0.9.16 y la AWS región en la que se encuentra su repositorio de Amazon ECR.

  5. Seleccione Enviar.

Si lo prefiere, envíelo con la CLI:

deadline bundle submit . \ --farm-id FARM_ID \ --queue-id QUEUE_ID \ --name "CARLA Lane Change Demo" \ -p ImageURI=ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/carla-deadline:0.9.16 \ -p AwsRegion=REGION

Monitorizar el trabajo

Supervise el progreso en la consola de Deadline Cloud. Cada tarea muestra los valores de sus parámetros (EgoSpeed,NpcSpeed,NpcDistance) en la tabla de tareas. Las tareas suelen completarse en unos 13 minutos cada una.

El resultado del registro muestra:

  • Generación de escenarios y valores de parámetros

  • Arranque y preparación del servidor CARLA

  • Progreso de la captura del sensor (recuento de fotogramas por cámara)

  • Codificación de vídeo para cada cámara

  • Combinación de vídeo en cuadrícula (si ha seleccionado varias cámaras)

Revisa el resultado

Para descargar el resultado
  1. Cuando se complete el trabajo, ejecute el comando de descarga desde el mismo directorio que usó al momento del envío, de modo que la OutputDir ruta (predeterminada./outputs) aparezca en el mismo lugar:

    deadline job download-output --job-id job-id
  2. Deadline Cloud restaura la salida en el OutputDir directorio que seleccionó al enviar el trabajo.

Cada tarea produce resultados en un subdirectorio llamado así por sus parámetros:

outputs/ └── ego20_npc30_dist10/ ├── rgb/ │ ├── front/frame_000001.png ... frame_000062.png │ └── rear/frame_000001.png ... frame_000062.png ├── semantic/ │ ├── front/... │ └── rear/... ├── lidar/frame_000001.ply ... ├── bbox_2d/{front,rear}/frame_*.txt ├── bbox_3d/frame_*.txt └── video/ ├── front_scenario.mp4 ├── rear_scenario.mp4 └── grid_scenario.mp4

Limitaciones conocidas

  • Solo en Linux: la imagen de Docker de CARLA requiere un host Linux con controladores de GPU NVIDIA. Los trabajadores deben trabajar en flotas de Linux.

  • Solo x86_64: la imagen de Docker de CARLA no es compatible con las arquitecturas ARM.

  • Imágenes en mosaico: el trabajo genera imágenes en RGB/semantic mosaico al seleccionar 2 o más cámaras. El diseño es de 2 × 3 cuando las 6 están activas o, en caso contrario, una cuadrícula más pequeña.

  • La velocidad de captura aumenta con el número de cámaras: el script de captura escribe los archivos PNG de forma sincrónica en cada descarga. Con las 6 cámaras, cada descarga graba 14 archivos PNG en lugar de 2 con una sola cámara, y el aumento de la I/O ralentización queda por debajo del objetivo de 7 FPS. El codificador de vídeo está fijado en 7 FPS, por lo que el mismo escenario produce un vídeo por cámara más largo con pocas cámaras habilitadas y un vídeo multivista más corto y denso con muchas cámaras habilitadas. Este diseño sincrónico es una compensación deliberada para mantener la arquitectura de la muestra pequeña y fácil de adaptar. Un proceso de producción paralelizaría el sensor. I/O

Limpieza

Para evitar cargos continuos, limpia los recursos que creaste para este tutorial:

Para limpiar los recursos del tutorial
  1. Si creaste una flota de GPU específicamente para este tutorial, deténgala o elimínela. Si usaste una flota compartida preexistente, déjala en su lugar.

  2. Elimine el repositorio de carla-deadline Amazon ECR si ya no necesita la imagen.

Los siguientes recursos proporcionan información adicional: