View a markdown version of this page

Exécutez un balayage de simulation de conduite autonome avec CARLA - Deadline Cloud

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exécutez un balayage de simulation de conduite autonome avec CARLA

Ce didacticiel explique comment exécuter un balayage des paramètres de simulation de conduite autonome CARLA avec capture multi-capteurs configurable. Vous créez une image Docker, vous la transférez vers Amazon Elastic Container Registry (Amazon ECR) et vous soumettez le bundle de tâches CARLA de conduite autonome GitHub à une flotte de GPU sur votre parc Deadline Cloud.

Le job exécute un scénario de changement de voie dans lequel un véhicule PNJ démarre derrière le véhicule de l'ego, accélère pour se positionner 20 mètres devant l'ego pendant une phase d'avance de 105 secondes, puis prend la voie de l'ego. Il passe en revue les vitesses d'ego configurables, les vitesses des PNJ et les distances de départ des PNJ, créant une tâche pour chaque combinaison de paramètres (par défaut 2 × 2 × 2 = 8 tâches). Chaque tâche capture des données multicapteurs à partir des points de vue de la caméra que vous sélectionnez et produit le résultat suivant :

  • Images RGB depuis le point de vue de chaque caméra sélectionné

  • Cadres de segmentation sémantique

  • Nuages de points LiDAR () .ply

  • Boîtes de délimitation 2D et 3D (format KITTI)

  • Per-camera vidéos de scénarios (H.264 MP4)

  • Vidéo en grille cousue (si vous sélectionnez plusieurs caméras)

La vidéo suivante présente le flux de travail de simulation CARLA sur Deadline Cloud.

Durée estimée : 1 à 2 heures, y compris la création de l'image Docker. Les tâches se terminent généralement en 13 minutes chacune.

L'exécution de ce didacticiel entraîne des frais pour les instances de travail GPU qui traitent les tâches et pour le stockage d'images Amazon ECR.

Présentation de

Pour terminer ce didacticiel, procédez comme suit :

  1. Respectez les conditions préalables de .

  2. Configurez votre ferme.

  3. Créez et diffusez l'image Docker.

  4. Soumettez la tâche de simulation.

  5. Surveillez le travail.

  6. Vérifiez la sortie.

  7. nettoyer les ressources.

Conditions préalables

Avant de commencer, effectuez la configuration suivante :

  1. Créez un AWS compte si vous n'en avez pas déjà un, en vous assurant qu'il a accès aux instances GPU (g6.4xlargerecommandé).

  2. Installez Docker localement pour créer l'image CARLA.

  3. Créez un référentiel Amazon ECR dans votre compte pour héberger l'image créée.

  4. Installez la CLI Deadline Cloud localement.

Configurez votre ferme

Vous avez besoin d'une ferme Deadline Cloud avec une file d'attente dotée d'un environnement de file d'attente conda (canaux :conda-forge, packages :ffmpeg) et d'un parc de GPU (minimum : 1 GPU NVIDIA avec 16 processeurs virtuels et 64 Go de mémoire).

Autorisations IAM  : votre rôle de file d'attente nécessite des autorisations d'extraction Amazon ECR, car le script de tâche s'exécute avec les informations d'identification du rôle docker pull de file d'attente. Joignez une politique comme celle-ci :

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

Configuration de l'hôte de la flotte  : les employés de votre flotte ont besoin de Docker et du NVIDIA Container Toolkit. Associez le script de configuration hôte Docker et NVIDIA Container Toolkit GitHub à votre flotte. Pour de plus amples informations, veuillez consulter Exécutez des conteneurs Docker avec des GPU NVIDIA sur Deadline Cloud Workers.

Créez et diffusez l'image Docker

La tâche s'exécute dans un conteneur Docker basé sur l'image de base:0.9.16 sur Docker carlasim/carla Hub. L'image CARLA de base inclut le simulateur mais ne dispose pas de l'environnement Python, de l'exécuteur de scénarios et des scripts de capture de capteurs nécessaires à cette tâche. Les couches d'images personnalisées sur Python 3.10 et les scripts de point d'entrée et de capture permettent à chaque tâche Deadline Cloud de démarrer CARLA, d'exécuter le scénario de conduite et d'enregistrer les données des capteurs dans un seul conteneur. scenario_runner

Pour créer et diffuser l'image Docker
  1. Créez un référentiel Amazon ECR si vous n'en avez pas :

    aws ecr create-repository --repository-name carla-deadline --region REGION
  2. Depuis le docker/ répertoire du autonomous_driving_carla bundle, créez l'image :

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

    Le Dockerfile est carlasim/carla:0.9.16 extrait de Docker Hub comme image de base. La première version télécharge environ 8 Go.

  3. Transférez l'image vers 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

Soumettre la tâche de simulation

Pour soumettre la tâche à l'aide de l'expéditeur de l'interface graphique
  1. Dans le répertoire du bundle, ouvrez l'émetteur :

    cd autonomous_driving_carla deadline bundle gui-submit .
  2. Dans l'onglet Job-specific Paramètres, sous Paramètres du scénario, configurez les vitesses ego, les vitesses des PNJ et les distances des PNJ sous forme d'entiers séparés par des virgules. Le produit croisé crée votre grille de tâches.

  3. Sous Points de vue de la caméra, sélectionnez les caméras à capturer. Front est la sélection par défaut. Les positions disponibles sont avant, avant gauche, avant droite, arrière, arrière gauche et arrière droite.

  4. Dans Avancé, définissez l'URI de votre image de conteneur sur ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/carla-deadline:0.9.16 et la AWS région dans laquelle se trouve votre référentiel Amazon ECR.

  5. Sélectionnez Soumettre.

Vous pouvez également soumettre via l'interface de ligne de commande :

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

Surveillance de la tâche

Suivez la progression dans la console Deadline Cloud. Chaque tâche affiche ses valeurs de paramètres (EgoSpeed,NpcSpeed,NpcDistance) dans le tableau des tâches. Les tâches se terminent généralement en 13 minutes chacune.

La sortie du journal indique :

  • Génération de scénarios et valeurs de paramètres

  • Démarrage et préparation du serveur CARLA

  • Progression de la capture du capteur (nombre d'images par caméra)

  • Encodage vidéo pour chaque caméra

  • Assemblage vidéo en grille (si vous avez sélectionné plusieurs caméras)

Passez en revue la sortie

Pour télécharger la sortie
  1. Une fois la tâche terminée, exécutez la commande de téléchargement depuis le répertoire que vous avez utilisé au moment de l'envoi, afin que le OutputDir chemin (par défaut./outputs) soit résolu au même endroit :

    deadline job download-output --job-id job-id
  2. Deadline Cloud restaure la sortie OutputDir dans le répertoire que vous avez sélectionné lors de la soumission de la tâche.

Chaque tâche produit une sortie dans un sous-répertoire nommé d'après ses paramètres :

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

Limitations connues

  • Linux uniquement  : l'image CARLA Docker nécessite un hôte Linux équipé de pilotes GPU NVIDIA. Les travailleurs doivent fonctionner sur des flottes Linux.

  • x86_64 uniquement — L'image CARLA Docker ne prend pas en charge les architectures ARM.

  • Images en mosaïque  : la tâche génère des images en RGB/semantic mosaïque lorsque vous sélectionnez au moins deux caméras. La disposition est 2 × 3 lorsque les 6 sont actifs, ou une grille plus petite dans le cas contraire.

  • La fréquence de capture varie en fonction du nombre de caméras  : le script de capture écrit des fichiers PNG de manière synchrone par flux. Avec les 6 caméras, chaque flux écrit 14 PNG au lieu de 2 avec une seule caméra, et l'augmentation I/O ralentit les flux en dessous de l'objectif de 7 images par seconde. L'encodeur vidéo étant fixé à 7 images par seconde, le même scénario produit une vidéo par caméra plus longue avec peu de caméras activées et une vidéo multi-vues plus courte et plus dense avec de nombreuses caméras activées. Cette conception synchrone est un compromis délibéré visant à réduire la taille de l'architecture de l'échantillon et à la rendre facile à adapter. Un pipeline de production paralléliserait le capteur. I/O

Nettoyage

Pour éviter des frais récurrents, nettoyez les ressources que vous avez créées pour ce didacticiel :

Pour nettoyer les ressources du didacticiel
  1. Si vous avez créé un parc de GPU spécifiquement pour ce didacticiel, arrêtez-le ou supprimez-le. Si vous avez utilisé une flotte partagée préexistante, laissez-la en place.

  2. Supprimez le référentiel carla-deadline Amazon ECR si vous n'avez plus besoin de l'image.

Les ressources suivantes fournissent des informations supplémentaires :