View a markdown version of this page

使用 CARLA 執行自動駕駛模擬掃描 - 截止日期雲端

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 CARLA 執行自動駕駛模擬掃描

本教學課程會逐步引導您使用可設定的多感應器擷取執行 CARLA 自動駕駛模擬參數掃描。您可以建置 Docker 映像,將其推送至 Amazon Elastic Container Registry (Amazon ECR),並將 GitHub 上的自動駕駛 CARLA 任務套件提交至截止日期雲端陣列上的 GPU 機群。

此任務會執行車道變更切入案例,其中 NPC 車輛開始於 Ego 車輛後方,在 105 秒的前方階段加速至距離 Ego 20 公尺的位置,然後切入 Ego 車道。它會跨可設定的自我速度、VPC 速度和 NPC 起始距離進行掃描,為每個參數組合建立任務 (預設 2×2×2 = 8 個任務)。每個任務會從您選取的攝影機視點擷取多感應器資料,並產生下列輸出:

  • 來自每個所選攝影機視點的 RGB 影格

  • 語意分割影格

  • LiDAR 點雲 (.ply)

  • 2D 和 3D 週框方塊 (KITTI 格式)

  • 每個攝影機案例影片 (H.264 MP4)

  • 拼接網格影片 (如果您選取多個攝影機)

以下影片示範在截止日期雲端上的 CARLA 模擬掃描工作流程。

預估時間:1–2 小時,包括 Docker 映像組建。任務通常會在大約 13 分鐘內完成。

執行本教學課程會針對處理任務的 GPU 工作者執行個體和 Amazon ECR 映像儲存體產生費用。

概觀

若要完成本教學課程,請遵循下列步驟:

  1. 完成先決條件。

  2. 設定您的陣列。

  3. 建置並推送 Docker 映像。

  4. 提交模擬任務。

  5. 監控任務。

  6. 檢閱輸出。

  7. 清除資源。

先決條件

開始之前,請先完成下列設定:

  1. 如果您還沒有AWS 帳戶,請建立帳戶,確保其可存取 GPU 執行個體 (g6.4xlarge建議)。

  2. 在本機安裝 Docker 以建置 CARLA 映像。

  3. 在帳戶中建立 Amazon ECR 儲存庫以託管建置的映像。

  4. 在本機安裝截止日期雲端 CLI

設定您的陣列

您需要具有 Conda 佇列環境 (頻道:conda-forge、套件:ffmpeg) 和 GPU 機群 (下限:1 個 NVIDIA GPU 搭配 16 vCPU 和 64 GiB 記憶體) 佇列的截止日期雲端陣列。

IAM 許可 – 您的佇列角色需要 Amazon ECR 提取許可,因為任務指令碼在佇列角色登入資料docker pull下執行。連接如下所示的政策:

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

機群主機組態 – 您的機群工作者需要 Docker 和 NVIDIA Container Toolkit。將 GitHub 上的 Docker 和 NVIDIA Container Toolkit 主機組態指令碼連接至您的機群。如需詳細資訊,請參閱在截止日期雲端工作者上使用 NVIDIA GPUs 執行 Docker 容器

建置並推送 Docker 映像

任務會根據 Docker Hub 上的 carlasim/carla:0.9.16 基礎映像在 Docker 容器內執行。基本 CARLA 映像包含模擬器,但缺少此任務所需的 Python 環境、案例執行器和感應器擷取指令碼。Python 3.10、 scenario_runner和 進入點上的自訂映像層,並擷取指令碼,以便每個截止日期雲端任務可以啟動 CARLA、執行駕駛案例,並在單一容器中記錄感應器資料。

建置和推送 Docker 映像
  1. 如果您沒有 Amazon ECR 儲存庫,請建立 Amazon ECR 儲存庫:

    aws ecr create-repository --repository-name carla-deadline --region REGION
  2. autonomous_driving_carla套件的 docker/目錄中,建置映像:

    cd docker/ docker build -t carla-deadline:0.9.16 .
    注意

    Dockerfile 從 Docker Hub carlasim/carla:0.9.16 提取為基礎映像。第一個組建會下載約 8 GB。

  3. 將映像推送至 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

提交模擬任務

使用 GUI 提交者提交任務
  1. 從套件目錄中,開啟提交者:

    cd autonomous_driving_carla deadline bundle gui-submit .
  2. 任務特定設定索引標籤的案例設定下,將自我速度、NSC 速度和 NPC 距離設定為逗號分隔的整數。跨產品會建立您的任務網格。

  3. 攝影機視點下,選取要擷取的攝影機。正面是預設選擇。可用的位置為前、左前、右前、後、左後和右後。

  4. 進階下,將容器映像 URI 設定為 ,ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/carla-deadline:0.9.16以及 Amazon ECR 儲存庫所在的 AWS 區域。

  5. 選擇提交

或者,使用 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

監控工作

在截止日期雲端主控台中監控進度。每個任務都會在任務資料表中顯示其參數值 (EgoSpeedNpcSpeedNpcDistance)。任務通常會在大約 13 分鐘內完成。

日誌輸出會顯示:

  • 案例產生和參數值

  • CARLA 伺服器開機和準備

  • 感應器擷取進度 (每個攝影機的影格計數)

  • 每個攝影機的視訊編碼

  • 網格視訊拼接 (如果您選取多個攝影機)

檢閱輸出

下載輸出
  1. 任務完成後,從您在提交時使用的相同目錄執行下載命令,因此OutputDir路徑 (預設 ./outputs) 會解析為相同的位置:

    deadline job download-output --job-id job-id
  2. 截止日期 雲端會將輸出還原至您在提交任務時選取的OutputDir目錄。

每個任務都會在其參數名為 的子目錄中產生輸出:

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

已知限制

  • 僅限 Linux – CARLA Docker 映像需要使用 NVIDIA GPU 驅動程式的 Linux 主機。工作者必須在 Linux 機群上執行。

  • 僅限 x86_64 – CARLA Docker 映像不支援 ARM 架構。

  • 賽克影像 – 當您選取 2 個以上的攝影機時,任務會產生 RGB/語意馬賽克影像。當所有 6 皆為作用中時,配置為 2×3,否則為較小的網格。

  • 擷取速率會隨著攝影機計數而擴展 – 擷取指令碼會在每次排清時同步寫入 PNGs。對於所有 6 個攝影機,每個排清會使用單一攝影機寫入 14 個 PNGs,而不是 2 個 PNG,而增加的 I/O 會將排清速度減到低於 7 個 FPS 目標。影片編碼器固定為 7 FPS,因此相同的案例會產生每個攝影機的較長影片,其中啟用了少數攝影機,而啟用了許多攝影機的較短、更密集的多視角影片。這種同步設計是刻意的權衡,讓範例的架構保持較小且易於調整。生產管道會將感應器 I/O 平行化。

清除

為了避免持續收費,請清除您為此教學課程建立的資源:

清除教學課程資源
  1. 如果您特別為此教學課程建立 GPU 機群,請停止或刪除它。如果您使用預先存在的共用機群,請將其保留在原處。

  2. 如果您不再需要映像,請刪除 carla-deadlineAmazon ECR 儲存庫。

下列資源提供其他資訊: