

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
<a name="tutorial-carla-simulation"></a>

En este tutorial se explica cómo ejecutar un barrido de parámetros de simulación de conducción [ autónoma de ](https://carla.org/) 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 ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/autonomous_driving_carla) 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.

[![AWS Videos](http://img.youtube.com/vi/xitKHbbBHDw/0.jpg)](http://www.youtube.com/watch?v=xitKHbbBHDw)


**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
<a name="tutorial-carla-overview"></a>

Para completar este tutorial, siga estos pasos:

1. Cumplir los requisitos previos de .

1. Configura tu granja.

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

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

1. Supervise el trabajo.

1. Revise la salida.

1. Eliminación de recursos.

## Requisitos previos
<a name="tutorial-carla-prerequisites"></a>

Antes de empezar, complete la siguiente configuración:

1. [Crea una AWS cuenta ](https://aws.amazon.com/resources/create-account/) si aún no tienes una y asegúrate de que tenga acceso a las instancias de GPU (`g6.4xlarge`recomendado).

1. Instala [ Docker ](https://docs.docker.com/get-docker/) localmente para crear la imagen de CARLA.

1. Cree un [ repositorio de ](https://aws.amazon.com/ecr/) Amazon ECR en su cuenta para alojar la imagen creada.

1. Instale la CLI de [ Deadline Cloud ](https://github.com/aws-deadline/deadline-cloud) localmente.

## Configure su granja
<a name="tutorial-carla-setup"></a>

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 ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/host_configuration_scripts/docker_nvidia_container_toolkit) Para obtener más información, consulte [Ejecute contenedores Docker con GPU NVIDIA en los trabajadores de Deadline Cloud](examples-host-config-docker-nvidia.md).

## Crea y publica la imagen de Docker
<a name="tutorial-carla-build-image"></a>

El trabajo se ejecuta dentro de un contenedor Docker basado en la imagen base:0.9.16 [ carlasim/carla de Docker Hub. ](https://hub.docker.com/r/carlasim/carla) 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}}
   ```

1. 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.

1. 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
<a name="tutorial-carla-submit"></a>

**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 .
   ```

1. 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.

1. 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.

1. 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.

1. 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
<a name="tutorial-carla-monitor"></a>

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
<a name="tutorial-carla-output"></a>

**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}}
   ```

1. 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
<a name="tutorial-carla-limitations"></a>
+ **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
<a name="tutorial-carla-cleanup"></a>

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.

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

## Recursos relacionados
<a name="tutorial-carla-related"></a>

Los siguientes recursos proporcionan información adicional:
+ [Ejemplo de código fuente en GitHub ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/autonomous_driving_carla)
+ [Simulador CARLA ](https://carla.org/)
+ [Docker y NVIDIA Container Toolkit alojan el script de configuración en GitHub ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/host_configuration_scripts/docker_nvidia_container_toolkit)
+ [Ejecute contenedores Docker con GPU NVIDIA en los trabajadores de Deadline Cloud](examples-host-config-docker-nvidia.md)
+ [Abra plantillas de descripción de trabajo (OpenJD) para Deadline Cloud](build-job-bundle.md)