View a markdown version of this page

Execute uma varredura de simulação de direção autônoma com CARLA - Deadline Cloud

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

Este tutorial mostra como executar uma varredura de parâmetros de simulação de direção autônoma 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 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.

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

Para concluir este tutorial, siga estas etapas:

  1. Concluir os pré-requisitos do .

  2. Configure sua fazenda.

  3. Compilar e enviar por push uma imagem do Docker

  4. Envie o trabalho de simulação.

  5. Monitore o trabalho.

  6. Revise a saída.

  7. Limpe recursos.

Pré-requisitos

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

  1. Crie uma AWS conta se ainda não tiver uma, garantindo que ela tenha acesso às instâncias de GPU (g6.4xlargerecomendado).

  2. Instale o Docker localmente para criar a imagem CARLA.

  3. Crie um repositório Amazon ECR em sua conta para hospedar a imagem criada.

  4. Instale o Deadline Cloud CLI localmente.

Configure sua fazenda

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 à sua frota. Para obter mais informações, consulte Execute contêineres Docker com GPUs NVIDIA em trabalhadores do Deadline Cloud.

Crie e divulgue a imagem do Docker

O trabalho é executado dentro de um contêiner Docker com base na imagem base:0.9.16 carlasim/carla no Docker Hub. 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
  2. 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.

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

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

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

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

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

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

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

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

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.

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

Os seguintes recursos fornecem informações adicionais: