

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Execute uma varredura de simulação de direção autônoma com CARLA
<a name="tutorial-carla-simulation"></a>

Este tutorial mostra como executar uma varredura de parâmetros de simulação de direção [ autônoma ](https://carla.org/) CARLA com captura multissensor configurável. Você cria uma imagem do Docker, a envia para o Amazon Elastic Container Registry (Amazon ECR) e envia o pacote de tarefas CARLA de condução [ autônoma GitHub ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/autonomous_driving_carla) para uma frota de GPU em sua fazenda Deadline Cloud.

O trabalho executa um cenário de mudança de faixa em que um veículo NPC começa atrás do veículo do ego, acelera para se posicionar 20 metros à frente do ego durante uma fase de avanço de 105 segundos e depois entra na pista do ego. Ele abrange velocidades de ego configuráveis, velocidades de NPC e distâncias iniciais de NPC, criando uma tarefa para cada combinação de parâmetros (padrão 2 × 2 × 2 = 8 tarefas). Cada tarefa captura dados de vários sensores dos pontos de vista da câmera que você seleciona e produz a seguinte saída:
+ Quadros RGB de cada ponto de vista da câmera selecionado
+ Quadros de segmentação semântica
+ Nuvens de pontos LiDAR (`.ply`)
+ Caixas delimitadoras 2D e 3D (formato KITTI)
+ Per-camera vídeos de cenários (H.264 MP4)
+ Vídeo em grade costurado (se você selecionar várias câmeras)

O vídeo a seguir demonstra o fluxo de trabalho de varredura da simulação CARLA no Deadline Cloud.

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


**Tempo estimado: ** 1—2 horas, incluindo a criação da imagem do Docker. As tarefas normalmente são concluídas em cerca de 13 minutos cada.

A execução deste tutorial gera cobranças pelas instâncias de trabalho da GPU que processam as tarefas e pelo armazenamento de imagens do Amazon ECR.

## Visão geral do
<a name="tutorial-carla-overview"></a>

Para concluir este tutorial, siga estas etapas:

1. Concluir os pré-requisitos do .

1. Configure sua fazenda.

1. Compilar e enviar por push uma imagem do Docker

1. Envie o trabalho de simulação.

1. Monitore o trabalho.

1. Revise a saída.

1. Limpe recursos.

## Pré-requisitos
<a name="tutorial-carla-prerequisites"></a>

Antes de começar, conclua a seguinte configuração:

1. [Crie uma AWS conta ](https://aws.amazon.com/resources/create-account/) se ainda não tiver uma, garantindo que ela tenha acesso às instâncias de GPU (`g6.4xlarge`recomendado).

1. Instale o [ Docker ](https://docs.docker.com/get-docker/) localmente para criar a imagem CARLA.

1. Crie um [ repositório ](https://aws.amazon.com/ecr/) Amazon ECR em sua conta para hospedar a imagem criada.

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

## Configure sua fazenda
<a name="tutorial-carla-setup"></a>

Você precisa de um farm Deadline Cloud com uma fila que tenha um ambiente de fila conda (canais:`conda-forge`, pacotes:`ffmpeg`) e uma frota de GPU (mínimo: 1 GPU NVIDIA com 16 vCPUs e 64 GiB de memória).

**Permissões do IAM ** — Sua função de fila precisa de permissões de pull do Amazon ECR, porque o script de tarefas é executado `docker pull` sob as credenciais da função de fila. Anexe uma política como a seguinte:

```
{
  "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": "*"
    }
  ]
}
```

**Configuração do host da frota ** — Seus trabalhadores da frota precisam do Docker e do NVIDIA Container Toolkit. Anexe o script de configuração de host do [ Docker e do NVIDIA Container Toolkit GitHub ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/host_configuration_scripts/docker_nvidia_container_toolkit) à sua frota. Para obter mais informações, consulte [Execute contêineres Docker com GPUs NVIDIA em trabalhadores do Deadline Cloud](examples-host-config-docker-nvidia.md).

## Crie e divulgue a imagem do Docker
<a name="tutorial-carla-build-image"></a>

O trabalho é executado dentro de um contêiner Docker com base na imagem base:0.9.16 [ carlasim/carla no Docker Hub. ](https://hub.docker.com/r/carlasim/carla) A imagem básica do CARLA inclui o simulador, mas não possui o ambiente Python, o executor de cenários e os scripts de captura de sensores necessários para esse trabalho. As camadas de imagem personalizadas no Python 3.10 e os scripts de ponto de entrada e captura para que cada tarefa do Deadline Cloud possa inicializar o CARLA, executar o cenário de condução e registrar os dados do sensor em um único contêiner. `scenario_runner`

**Para criar e enviar a imagem do Docker**

1. Crie um repositório Amazon ECR se você não tiver um:

   ```
   aws ecr create-repository --repository-name carla-deadline --region {{REGION}}
   ```

1. No `docker/` diretório do `autonomous_driving_carla` pacote, crie a imagem:

   ```
   cd docker/
   docker build -t carla-deadline:0.9.16 .
   ```
**nota**  
O Dockerfile é extraído `carlasim/carla:0.9.16` do Docker Hub como imagem base. A primeira compilação baixa aproximadamente 8 GB.

1. Envie a imagem para o 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
   ```

## Envie o trabalho de simulação
<a name="tutorial-carla-submit"></a>

**Para enviar o trabalho com o remetente da GUI**

1. No diretório do pacote, abra o remetente:

   ```
   cd autonomous_driving_carla
   deadline bundle gui-submit .
   ```

1. Na ** guia de ** Job-specific configurações, em Configurações do ** cenário, defina as velocidades do ego**, as velocidades do NPC e as distâncias do NPC como números inteiros separados por vírgula. O produto cruzado cria sua grade de tarefas.

1. Em Pontos de vista da ** câmera**, selecione quais câmeras capturar. **Frente ** é a seleção padrão. As posições disponíveis são frontal, dianteira esquerda, dianteira direita, traseira, traseira esquerda e traseira direita.

1. Em ** Avançado**, defina o URI da imagem do ** contêiner como `{{ACCOUNT_ID}}.dkr.ecr.{{REGION}}.amazonaws.com/carla-deadline:0.9.16` e ** a AWS região em que seu repositório Amazon ECR reside.

1. Selecione **Enviar**.

Como alternativa, envie com a 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}}
```

## Monitoramento do trabalho
<a name="tutorial-carla-monitor"></a>

Monitore o progresso no console do Deadline Cloud. Cada tarefa mostra seus valores de parâmetros (`EgoSpeed`,`NpcSpeed`,`NpcDistance`) na tabela de tarefas. As tarefas normalmente são concluídas em cerca de 13 minutos cada.

A saída do registro mostra:
+ Geração de cenários e valores de parâmetros
+ Inicialização e prontidão do servidor CARLA
+ Progresso da captura do sensor (contagem de quadros por câmera)
+ Codificação de vídeo para cada câmera
+ Costura de vídeo em grade (se você selecionou várias câmeras)

## Revise a saída
<a name="tutorial-carla-output"></a>

**Para baixar a saída**

1. Depois que o trabalho for concluído, execute o comando de download no mesmo diretório usado no momento do envio, para que o `OutputDir` caminho (padrão`./outputs`) seja resolvido no mesmo local:

   ```
   deadline job download-output --job-id {{job-id}}
   ```

1. O Deadline Cloud restaura a saída para o `OutputDir` diretório que você selecionou ao enviar o trabalho.

Cada tarefa produz uma saída em um subdiretório nomeado de acordo com seus 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
```

## Limitações conhecidas
<a name="tutorial-carla-limitations"></a>
+ **Somente Linux ** — A imagem CARLA Docker requer um host Linux com drivers de GPU NVIDIA. Os trabalhadores devem operar em frotas Linux.
+ **Somente x86\_64 ** — A imagem CARLA Docker não suporta arquiteturas ARM.
+ **Imagens em mosaico ** — O trabalho gera imagens em RGB/semantic mosaico quando você seleciona 2 ou mais câmeras. O layout é 2 × 3 quando todos os 6 estão ativos, ou uma grade menor, caso contrário.
+ **A taxa de captura aumenta com a contagem de câmeras ** — O script de captura grava PNGs de forma síncrona por descarga. Com todas as 6 câmeras, cada descarga grava 14 PNGs em vez de 2 com uma única câmera, e a lentidão aumentada fica abaixo da I/O meta de 7 FPS. O codificador de vídeo é fixado em 7 FPS, então o mesmo cenário produz um vídeo mais longo por câmera com poucas câmeras habilitadas e um vídeo de várias visualizações mais curto e denso com muitas câmeras ativadas. Esse design síncrono é uma troca deliberada para manter a arquitetura da amostra pequena e fácil de adaptar. Uma tubulação de produção paralelizaria o sensor. I/O

## Fazer a limpeza.
<a name="tutorial-carla-cleanup"></a>

Para evitar cobranças contínuas, limpe os recursos que você criou para este tutorial:

**Para limpar os recursos do tutorial**

1. Se você criou uma frota de GPU especificamente para este tutorial, interrompa-a ou exclua-a. Se você usou uma frota compartilhada preexistente, deixe-a em vigor.

1. Exclua o repositório `carla-deadline` Amazon ECR se você não precisar mais da imagem.

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

Os seguintes recursos fornecem informações adicionais:
+ [Exemplo de código-fonte em GitHub ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/autonomous_driving_carla)
+ [Simulador CARLA ](https://carla.org/)
+ [O script de configuração do host do Docker e do NVIDIA Container Toolkit está ativado GitHub ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/host_configuration_scripts/docker_nvidia_container_toolkit)
+ [Execute contêineres Docker com GPUs NVIDIA em trabalhadores do Deadline Cloud](examples-host-config-docker-nvidia.md)
+ [Modelos Open Job Description (OpenJD) para Deadline Cloud](build-job-bundle.md)