View a markdown version of this page

Esegui una simulazione di guida autonoma con CARLA - Deadline Cloud

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esegui una simulazione di guida autonoma con CARLA

Questo tutorial illustra l'esecuzione di una scansione dei parametri di simulazione di guida autonoma CARLA con acquisizione multisensore configurabile. Crei un'immagine Docker, la invii ad Amazon Elastic Container Registry (Amazon ECR) e invii il pacchetto di lavoro CARLA per la guida autonoma GitHub a una flotta di GPU nella tua farm Deadline Cloud.

Il lavoro prevede uno scenario di cambio di corsia in cui un veicolo NPC parte dietro il veicolo egoico, accelera fino a posizionarsi 20 metri davanti all'ego durante una fase di avanzamento di 105 secondi, quindi entra nella corsia dell'ego. Varia tra velocità dell'ego configurabili, velocità degli NPC e distanze iniziali degli NPC, creando un'attività per ogni combinazione di parametri (2×2×2 di default = 8 attività). Ogni attività acquisisce dati multisensore dai punti di vista della telecamera selezionati e produce il seguente output:

  • Fotogrammi RGB da ogni punto di vista della telecamera selezionato

  • Cornici di segmentazione semantica

  • Nuvole di punti LiDAR () .ply

  • riquadri di delimitazione 2D e 3D (formato KITTI)

  • Per-camera video di scenari (MP4) H.264

  • Video a griglia cucita (se si selezionano più fotocamere)

Il video seguente illustra il flusso di lavoro di scansione della simulazione CARLA su Deadline Cloud.

Tempo stimato: 1—2 ore, inclusa la creazione dell'immagine Docker. Le attività in genere vengono completate in circa 13 minuti ciascuna.

L'esecuzione di questo tutorial comporta costi per le istanze GPU Worker che elaborano le attività e per lo storage delle immagini di Amazon ECR.

Panoramica di

Per completare questo tutorial, segui questi passaggi:

  1. Completare i prerequisiti .

  2. Allestisci la tua fattoria.

  3. Crea e invia l'immagine Docker.

  4. Invia il lavoro di simulazione.

  5. Monitora il lavoro.

  6. Esamina l'output.

  7. Eliminare le risorse.

Prerequisiti

Prima di iniziare, completa la seguente configurazione:

  1. Crea un AWS account se non ne hai già uno, assicurandoti che abbia accesso alle istanze GPU (g6.4xlargeconsigliato).

  2. Installa Docker localmente per creare l'immagine CARLA.

  3. Crea un repository Amazon ECR nel tuo account per ospitare l'immagine creata.

  4. Installa la CLI Deadline Cloud localmente.

Configura la tua fattoria

È necessaria una farm Deadline Cloud con una coda dotata di un ambiente di coda conda (canali:conda-forge, pacchetti:ffmpeg) e una flotta di GPU (minimo: 1 GPU NVIDIA con 16 vCPU e 64 GiB di memoria).

Autorizzazioni IAM: il tuo ruolo di coda richiede le autorizzazioni pull di Amazon ECR, perché lo script dell'attività viene eseguito con le credenziali del ruolo di coda. docker pull Allega una policy come la seguente:

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

Configurazione degli host del parco veicoli: i dipendenti della tua flotta hanno bisogno di Docker e di NVIDIA Container Toolkit. Allega lo script di configurazione host di Docker e NVIDIA Container Toolkit alla tua flotta. GitHub Per ulteriori informazioni, consulta Esegui contenitori Docker con GPU NVIDIA su Deadline Cloud worker.

Crea e invia l'immagine Docker

Il lavoro viene eseguito all'interno di un contenitore Docker basato sull'immagine base:0.9.16 carlasim/carla su Docker Hub. L'immagine CARLA di base include il simulatore ma manca dell'ambiente Python, dello scenario runner e degli script di acquisizione dei sensori necessari per questo lavoro. I livelli di immagine personalizzati su Python 3.10 e gli script di ingresso e acquisizione in modo che ogni attività di Deadline Cloud possa avviare CARLA, eseguire lo scenario di guida e registrare i dati dei sensori in un unico contenitore. scenario_runner

Per creare e inviare l'immagine Docker
  1. Crea un repository Amazon ECR se non ne hai uno:

    aws ecr create-repository --repository-name carla-deadline --region REGION
  2. Dalla docker/ directory del autonomous_driving_carla pacchetto, crea l'immagine:

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

    Il Dockerfile attinge carlasim/carla:0.9.16 da Docker Hub come immagine di base. La prima build scarica circa 8 GB.

  3. Invia l'immagine ad 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

Invia il lavoro di simulazione

Per inviare il lavoro con il mittente della GUI
  1. Dalla cartella del pacchetto, apri il mittente:

    cd autonomous_driving_carla deadline bundle gui-submit .
  2. Nella scheda delle Job-specific impostazioni, in Impostazioni dello scenario, configura le velocità ego, le velocità NPC e le distanze degli NPC come numeri interi separati da virgole. Il cross-product crea la tua griglia delle attività.

  3. In Punti di vista della fotocamera, seleziona le fotocamere da catturare. Front è la selezione predefinita. Le posizioni disponibili sono anteriore, anteriore sinistro, anteriore destro, posteriore, posteriore sinistro e posteriore destro.

  4. In Avanzato, imposta l'URI dell'immagine del contenitore su ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/carla-deadline:0.9.16 e la AWS regione in cui risiede il tuo repository Amazon ECR.

  5. Seleziona Invia.

In alternativa, invia 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

Monitoraggio del processo

Monitora i progressi nella console Deadline Cloud. Ogni attività mostra i valori dei parametri (EgoSpeed,NpcSpeed,NpcDistance) nella tabella delle attività. Le attività in genere vengono completate in circa 13 minuti ciascuna.

L'output del registro mostra:

  • Generazione di scenari e valori dei parametri

  • Avvio e disponibilità del server CARLA

  • Avanzamento dell'acquisizione del sensore (numero di fotogrammi per telecamera)

  • Codifica video per ogni telecamera

  • Cucitura video a griglia (se hai selezionato più videocamere)

Rivedi l'output

Per scaricare l'output
  1. Al termine del processo, esegui il comando di download dalla stessa directory utilizzata al momento dell'invio, in modo che il OutputDir percorso (predefinito./outputs) si risolva nella stessa posizione:

    deadline job download-output --job-id job-id
  2. Deadline Cloud ripristina l'output OutputDir nella directory selezionata al momento dell'invio del lavoro.

Ogni attività produce un output in una sottodirectory denominata in base ai suoi parametri:

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

Limiti noti

  • Solo Linux: l'immagine CARLA Docker richiede un host Linux con driver GPU NVIDIA. I lavoratori devono lavorare su flotte Linux.

  • Solo x86_64: l'immagine CARLA Docker non supporta le architetture ARM.

  • Immagini a mosaico: il lavoro genera immagini a RGB/semantic mosaico quando si selezionano 2 o più fotocamere. Il layout è 2×3 quando tutte e 6 sono attive, altrimenti una griglia più piccola.

  • La velocità di acquisizione si ridimensiona in base al numero di fotocamere: lo script di acquisizione scrive i PNG in modo sincrono per ogni flush. Con tutte e 6 le fotocamere, ogni flush scrive 14 PNG anziché 2 con una singola videocamera, e l'aumento dei I/O rallentamenti scende al di sotto dell'obiettivo di 7 FPS. Il codificatore video è fisso a 7 FPS, quindi lo stesso scenario produce un video per telecamera più lungo con poche fotocamere attivate e un video multiview più corto e denso con molte fotocamere attivate. Questo design sincrono è un compromesso intenzionale per mantenere l'architettura del campione piccola e facile da adattare. Una pipeline di produzione parallelizzerebbe il sensore. I/O

Eliminazione

Per evitare addebiti continui, pulisci le risorse che hai creato per questo tutorial:

Per ripulire le risorse del tutorial
  1. Se hai creato una flotta di GPU appositamente per questo tutorial, interrompila o eliminala. Se hai utilizzato un parco veicoli condiviso preesistente, lascialo al suo posto.

  2. Elimina il repository carla-deadline Amazon ECR se l'immagine non ti serve più.

Le seguenti risorse forniscono informazioni aggiuntive: