

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Führen Sie mit CARLA eine Simulation des autonomen Fahrens durch
<a name="tutorial-carla-simulation"></a>

Dieses Tutorial führt Sie durch die Ausführung einer [ CARLA-Simulation von Parametern für ](https://carla.org/) autonomes Fahren mit konfigurierbarer Erfassung mehrerer Sensoren. Sie erstellen ein Docker-Image, übertragen es in die Amazon Elastic Container Registry (Amazon ECR) und senden das CARLA-Job-Paket für [ autonomes Fahren an eine GPU-Flotte in Ihrer GitHub ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/autonomous_driving_carla) Deadline Cloud-Farm.

Der Job führt ein Cut-In-Szenario für einen Spurwechsel durch, in dem ein NPC-Fahrzeug hinter dem Ego-Fahrzeug startet, beschleunigt, um sich während einer 105 Sekunden dauernden Startphase 20 Meter vor dem Ego zu positionieren, und biegt dann in die Fahrspur des Egos ein. Es durchläuft konfigurierbare Ego-Geschwindigkeiten, NPC-Geschwindigkeiten und NPC-Startentfernungen und erstellt für jede Parameterkombination eine Aufgabe (Standard 2×2×2 = 8 Aufgaben). Jede Aufgabe erfasst Multisensordaten von den ausgewählten Kameraperspektiven aus und erzeugt die folgende Ausgabe:
+ RGB-Bilder aus jedem ausgewählten Kamerabildpunkt
+ Frames für die semantische Segmentierung
+ LiDAR-Punktwolken () `.ply`
+ 2D- und 3D-Begrenzungsrahmen (KITTI-Format)
+ Per-camera Szenario-Videos (MP4) H.264 
+ Zusammengefügtes Rastervideo (wenn Sie mehrere Kameras auswählen)

Das folgende Video zeigt den CARLA-Simulations-Sweep-Workflow in Deadline Cloud.

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


**Geschätzte Zeit: ** 1—2 Stunden, einschließlich der Erstellung des Docker-Images. Aufgaben werden in der Regel in jeweils etwa 13 Minuten abgeschlossen.

Bei der Ausführung dieses Tutorials fallen Gebühren für die GPU-Worker-Instances an, die die Aufgaben verarbeiten, und für den Amazon ECR-Bildspeicher.

## -Übersicht
<a name="tutorial-carla-overview"></a>

Gehen Sie folgendermaßen vor, um dieses Tutorial abzuschließen:

1. Sorgen Sie dafür, dass die -Voraussetzungen erfüllt sind.

1. Richten Sie Ihre Farm ein.

1. Erstellen Sie das Docker-Image und pushen Sie es.

1. Reichen Sie den Simulationsjob ein.

1. Überwachen Sie den Job.

1. Überprüfen Sie die Ausgabe.

1. Bereinigen Sie die Ressourcen.

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

Bevor Sie beginnen, schließen Sie die folgende Einrichtung ab:

1. [Erstellen Sie ein AWS Konto, ](https://aws.amazon.com/resources/create-account/) falls Sie noch keines haben, und stellen Sie sicher, dass es Zugriff auf GPU-Instances hat (`g6.4xlarge`empfohlen).

1. Installieren Sie [ Docker ](https://docs.docker.com/get-docker/) lokal, um das CARLA-Image zu erstellen.

1. Erstellen Sie in Ihrem Konto ein [ Amazon ](https://aws.amazon.com/ecr/) ECR-Repository, um das erstellte Image zu hosten.

1. Installieren Sie die [ Deadline Cloud CLI ](https://github.com/aws-deadline/deadline-cloud) lokal.

## Richten Sie Ihre Farm ein
<a name="tutorial-carla-setup"></a>

Sie benötigen eine Deadline Cloud-Farm mit einer Warteschlange, die über eine Conda-Warteschlangenumgebung (Kanäle:`conda-forge`, Pakete:`ffmpeg`) und eine GPU-Flotte (mindestens: 1 NVIDIA-GPU mit 16 vCPU und 64 GiB Speicher) verfügt.

**IAM-Berechtigungen ** — Ihre Warteschlangenrolle benötigt Amazon ECR-Pull-Berechtigungen, da das Task-Skript `docker pull` unter den Anmeldeinformationen der Warteschlangenrolle ausgeführt wird. Hängen Sie eine Richtlinie wie die folgende an:

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

**Flottenhost-Konfiguration ** — Ihre Flottenmitarbeiter benötigen Docker und das NVIDIA Container Toolkit. Hängen Sie das Host-Konfigurationsskript für [ Docker und das NVIDIA Container Toolkit an Ihre Flotte an GitHub](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/host_configuration_scripts/docker_nvidia_container_toolkit). Weitere Informationen finden Sie unter [Führen Sie Docker-Container mit NVIDIA-GPUs auf Deadline Cloud-Workern aus](examples-host-config-docker-nvidia.md).

## Erstellen Sie das Docker-Image und übertragen Sie es
<a name="tutorial-carla-build-image"></a>

Der Job wird in einem Docker-Container ausgeführt, der auf dem Basisimage :0.9.16 [ carlasim/carla auf Docker Hub basiert. ](https://hub.docker.com/r/carlasim/carla) Das CARLA-Basisimage enthält den Simulator, aber es fehlen die Python-Umgebung, der Szenario-Runner und die Sensorerfassungsskripte, die für diesen Job benötigt werden. Die benutzerdefinierten Bildebenen in Python 3.10 sowie die Entrypoint- und Capture-Skripte`scenario_runner`, sodass jede Deadline Cloud-Aufgabe CARLA starten, das Fahrszenario ausführen und Sensordaten in einem einzigen Container aufzeichnen kann.

**Um das Docker-Image zu erstellen und zu pushen**

1. Erstellen Sie ein Amazon ECR-Repository, falls Sie keines haben:

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

1. Erstellen Sie das Image aus dem `docker/` Verzeichnis des `autonomous_driving_carla` Pakets:

   ```
   cd docker/
   docker build -t carla-deadline:0.9.16 .
   ```
**Anmerkung**  
Das Dockerfile wird als `carlasim/carla:0.9.16` Basis-Image von Docker Hub abgerufen. Der erste Build lädt ungefähr 8 GB herunter.

1. Übertragen Sie das Image auf 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
   ```

## Reichen Sie den Simulationsjob ein
<a name="tutorial-carla-submit"></a>

**Um den Job mit dem GUI-Absender einzureichen**

1. Öffnen Sie im Bundle-Verzeichnis den Submitter:

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

1. Konfiguriere auf der ** Registerkarte „**Job-specific Einstellungen“ unter „**Szenarioeinstellungen**“ Ego-Geschwindigkeiten, NPC-Geschwindigkeiten und NPC-Entfernungen als kommagetrennte Ganzzahlen. Das Kreuzprodukt erstellt dein Aufgabenraster.

1. Wählen Sie unter ** Kameraansichtspunkte aus**, welche Kameras aufgenommen werden sollen. **Vorne ** ist die Standardauswahl. Verfügbare Positionen sind Vorne, Vorne Links, Vorne Rechts, Hinten, Hinten Links und Hinten Rechts.

1. Stellen Sie unter ** Erweitert ** Ihre ** Container-Image-URI ** auf `{{ACCOUNT_ID}}.dkr.ecr.{{REGION}}.amazonaws.com/carla-deadline:0.9.16` und die AWS Region ein, in der sich Ihr Amazon ECR-Repository befindet.

1. Wählen Sie **Absenden** aus.

Senden Sie es alternativ mit der CLI ab:

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

## Überwachen des Auftrags
<a name="tutorial-carla-monitor"></a>

Überwachen Sie den Fortschritt in der Deadline Cloud-Konsole. Jede Aufgabe zeigt ihre Parameterwerte (`EgoSpeed`,`NpcSpeed`,`NpcDistance`) in der Aufgabentabelle an. Aufgaben werden in der Regel in jeweils etwa 13 Minuten abgeschlossen.

Die Protokollausgabe zeigt:
+ Generierung von Szenarien und Parameterwerte
+ Start und Bereitschaft des CARLA-Servers
+ Fortschritt der Sensorerfassung (Anzahl der Bilder pro Kamera)
+ Videokodierung für jede Kamera
+ Grid-Video-Stitching (wenn Sie mehrere Kameras ausgewählt haben)

## Überprüfen Sie die Ausgabe
<a name="tutorial-carla-output"></a>

**Um die Ausgabe herunterzuladen**

1. Führen Sie nach Abschluss des Jobs den Download-Befehl in demselben Verzeichnis aus, das Sie beim Senden verwendet haben, sodass der `OutputDir` Pfad (Standard`./outputs`) an derselben Stelle aufgelöst wird:

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

1. Deadline Cloud stellt die Ausgabe in dem `OutputDir` Verzeichnis wieder her, das Sie beim Senden des Jobs ausgewählt haben.

Jede Aufgabe erzeugt eine Ausgabe in einem Unterverzeichnis, das nach ihren Parametern benannt ist:

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

## Bekannte Beschränkungen
<a name="tutorial-carla-limitations"></a>
+ **Nur Linux ** — Das CARLA Docker-Image erfordert einen Linux-Host mit NVIDIA-GPU-Treibern. Die Arbeiter müssen auf Linux-Flotten laufen.
+ **Nur x86\_64 ** — Das CARLA Docker-Image unterstützt keine ARM-Architekturen.
+ **Mosaikbilder ** — Der Job generiert RGB/semantic Mosaikbilder, wenn Sie 2 oder mehr Kameras auswählen. Das Layout ist 2×3, wenn alle 6 aktiv sind, andernfalls ein kleineres Raster.
+ **Die Aufnahmerate skaliert mit der Anzahl der Kameras ** — Das Aufnahmeskript schreibt PNGs synchron pro Flush. Bei allen 6 Kameras schreibt jeder Flush 14 PNGs statt 2 mit einer einzelnen Kamera, und mit der erhöhten Geschwindigkeit werden Flushs unter die Zielvorgabe von 7 Bildern I/O pro Sekunde gebracht. Der Video-Encoder ist fest auf 7 Bilder pro Sekunde eingestellt, sodass im gleichen Szenario ein längeres Video pro Kamera mit wenigen aktivierten Kameras und ein kürzeres, dichteres Multiview-Video mit vielen aktivierten Kameras erzeugt wird. Dieses synchrone Design ist ein bewusster Kompromiss, um die Architektur der Probe klein und leicht anpassbar zu halten. Eine Produktionspipeline würde den Sensor parallelisieren. I/O

## Bereinigen
<a name="tutorial-carla-cleanup"></a>

Um laufende Gebühren zu vermeiden, sollten Sie die Ressourcen, die Sie für dieses Tutorial erstellt haben, bereinigen:

**So bereinigen Sie die Ressourcen für das Tutorial**

1. Wenn Sie speziell für dieses Tutorial eine GPU-Flotte erstellt haben, beenden oder löschen Sie sie. Wenn Sie eine bereits vorhandene gemeinsame Flotte verwendet haben, lassen Sie sie unverändert.

1. Löschen Sie das `carla-deadline` Amazon ECR-Repository, wenn Sie das Image nicht mehr benötigen.

## Zugehörige Ressourcen
<a name="tutorial-carla-related"></a>

Die folgenden Ressourcen bieten zusätzliche Informationen:
+ [Beispiel-Quellcode auf GitHub ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/autonomous_driving_carla)
+ [CARLA-Simulator ](https://carla.org/)
+ [Docker und NVIDIA Container Toolkit hosten das Konfigurationsskript auf GitHub ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/host_configuration_scripts/docker_nvidia_container_toolkit)
+ [Führen Sie Docker-Container mit NVIDIA-GPUs auf Deadline Cloud-Workern aus](examples-host-config-docker-nvidia.md)
+ [Open Job Description (OpenJD) -Vorlagen für Deadline Cloud](build-job-bundle.md)