基於 Qualcomm AI Hub 模型在 ASR-D501 上實現避障功能
本範例將示範如何在 ASR-D501 上建立障礙物避障流程。
概述
- 模型最佳化與 NPU 加速:使用 Qualcomm AI Hub 匯出專門針對 QCS6490 晶片組量身打造的 YOLO 物件偵測模型。此無縫部署讓裝置能夠直接在其 NPU 上執行高速的硬體加速推論。
- 可擴展的 ROS 2 架構:使用 OrbbecSDK ROS 2 從 3D 相機發布即時 RGB Topic 與深度影像 Topic。此發布-訂閱機制確保了模組化且低延遲的感測器通訊,能輕鬆與無人機控制系統整合。
- 分析與決策: 本範例結合偵測邊界框與深度資料來估算障礙物距離,最終提供給飛行控制器障礙物方向(左、中或右)。
什麼是 Qualcomm AI Hub?
Qualcomm AI Hub 是一個集中式模型儲存庫與最佳化服務,旨在簡化將 AI 模型部署到 Qualcomm 邊緣裝置的流程。
- 預先優化 AI 模型:可存取專為 Qualcomm 架構特別調校的豐富模型庫(例如 YOLO、MobileNet 和 ResNet)。
- 硬體加速 (NPU/GPU/CPU):輕鬆將模型編譯並量化為 ONNX、TFLite 或 Qualcomm AI Runtime 等格式,充分發揮晶片上 AI 加速器的效能。
- 縮短上市時間:降低嵌入式開發人員手動進行模型量化與硬體特定核心調整的複雜度。
系統需求與元件
| 元件 | 規格 |
|---|---|
| 平台 | ASR-D501 (Qualcomm QCS6490) |
| 作業系統映像檔 | ASRD501A1-Ubuntu24.04-x07_v1.0.0 |
| 3D 相機 | Orbbec Gemini 335Lg (USB) |
| 飛行控制器 | Pixhawk® 6C |
| 模型 | YOLOv8-Detection (從 Qualcomm AI Hub Models 取得) |
工作流程
下載 Qualcomm AI Hub 上之模型:
- 步驟 1:從 Qualcomm AI Hub 選擇相容於 QCS6490 的模型
- 步驟 2:準備獨立的 Python 環境
- 步驟 3:虛擬環境設定(安裝模型套件)
- 步驟 4:Qualcomm AI Hub Workbench 驗證
- 步驟 5:匯出相容於 QCS6490 的模型
障礙物偵測展示:
- 步驟 1:連接並識別 USB 相機
- 步驟 2:環境設定(安裝 OrbbecSDK 與 OrbbecSDK ROS 2)
- 步驟 3:下載 Python 檔案並執行即時推論
- 步驟 4:連接至飛行控制器
下載 Qualcomm AI Hub 上之模型
步驟 1:從 Qualcomm AI Hub 選擇相容於 QCS6490 的模型
開啟 Qualcomm AI Hub 模型頁面,選擇 Qualcomm Dragonwing™ QCS6490 進行篩選。
選擇您要在裝置上執行的模型。在此範例中,我們選擇 YOLOv8-Detection。
如需匯出的詳細操作資訊,請參閱 YOLOv8-Detection 原始程式碼與說明文件 (GitHub).
步驟 2:準備獨立的 Python 環境
首先,先確認您的 Python 版本受到所選 qai-hub-models 發行版本的支援。
您可以在 GitHub 頁面上檢查支援的 Python 版本。
建立並啟用 Python 虛擬環境,使相依性與系統 Python 保持隔離。
將 <venv_name> 替換為您想要的環境名稱:
sudo apt update
sudo apt install python3-venv
python3 -m venv <venv_name>
source <venv_name>/bin/activate
步驟 3:虛擬環境設定(安裝模型套件)
安裝 Qualcomm AI Hub Models 和 YOLOv8-Detection 模型:
pip install qai-hub-models==0.61.0
qai-hub-models install yolov8_det
在匯出之前,使用 W8A8 量化執行展示結果:
python3 -m qai_hub_models.models.yolov8_det.demo --quantize w8a8
展示結果如下所示。
成功的展示可確認在匯出之前,模型及其相依性皆已正確安裝。
步驟 4:Qualcomm AI Hub Workbench 驗證
建立 Qualcomm AI Hub Workbench 帳戶,並從 Account → Settings → API Token 取得您的 API 金鑰。
設定從 Qualcomm AI Hub Workbench 帳戶中取得的 <API_TOKEN>:
qai-hub configure --api_token <API_TOKEN>
注意:請將 <API_TOKEN> 視為機密資訊。切勿公開分享、張貼至網路或包含在任何截圖中。
步驟 5:匯出相容於 QCS6490 的模型
在匯出模型之前,您可以使用以下指令列出所選模型支援的選項:
qai-hub-models export yolov8_det --help
匯出 W8A8 量化後的 TensorFlow Lite (TFLite) 模型:
qai-hub-models export yolov8_det \
--target-runtime tflite \
--quantize w8a8 \
--chipset qcs6490
在此範例中,匯出流程為:
| 步驟 | 階段 | 動作與格式 | 說明 |
|---|---|---|---|
| 01 | 初始編譯 | PyTorch (.pt) → ONNX | 將原始的 PyTorch 模型轉換為 ONNX 格式。 |
| 02 | 量化 | W8A8 | 套用 W8A8 量化以壓縮模型權重與活化值。 |
| 03 | 目標編譯 | 量化的 ONNX → TFLite | 將量化後的模型編譯為目標執行階段格式 (.tflite)。 |
| 04 | 效能分析 | 設備基準測試 | 在實體裝置上測量延遲與記憶體消耗。 |
| 05 | 推論 | 範例驗證 | 使用範例輸入執行測試推論。 |
匯出作業及其個別階段可在 Qualcomm AI Hub Workbench 中檢視。
Qualcomm AI Hub Workbench 畫面可用來檢查提交的模型匯出作業與階段結果。
當所有流程完成後,
輸出結果將存於 ./export_assets/yolov8_det-tflite-w8a8 資料夾中。
模型匯出完成後,您可以安全地離開虛擬環境:
deactivate
障礙物偵測展示
步驟 1:連接並識別 USB 相機
將 Orbbec Gemini 335Lg 連接到 ASR-D501 的 USB Type-C 連接埠。
您可以執行以下指令來確認系統已偵測到相機硬體:
lsusb
在輸出列表中尋找 Orbbec 裝置以確認實體連接成功。
步驟 2:環境設定(安裝 OrbbecSDK 與 OrbbecSDK ROS 2)
由於本專案使用 Orbbec 相機與 ROS 2, 我們需要安裝官方的 OrbbecSDK 與 OrbbecSDK ROS 2 以取得相機的資料。
- OrbbecSDK v2 - v2.9.3 [官方 GitHub 倉庫]
請參考 GitHub 倉庫,並依指示先設定您的工作區。
成功安裝 Orbbec SDK v2 後,
你可以啟動 OrbbecViewer。
這圖形介面提供一系列功能,包括資料串流預覽、相機設定及後製處理。
OrbbecViewer 介面如下所示。

- OrbbecSDK ROS 2 - v2.9.3 [官方 GitHub 倉庫]
請參考 GitHub 倉庫的說明,將程式碼複製到 ROS 2 工作空間的目錄(~/ros2_ws/src)中。
在建置套件之前,您必須先修改 gemini_330_series.launch.py 檔案
(位於 ~/ros2_ws/src/OrbbecSDK_ROS2/orbbec_camera/launch 資料夾中)
來設定 RGB 與深度的解析度及畫面更新率:
- Width: 640, Height: 480
- FPS: 30
請參考下圖以了解需修改的確切參數:


在儲存 launch 檔案中的變更後, 建置工作區使設定生效:
cd ~/ros2_ws
colcon build --event-handlers console_direct+ --cmake-args -DCMAKE_BUILD_TYPE=Release
成功建置套件後, 您已準備好可以啟動相機發布 topics 並監控即時串流。
- 在終端機 1 - 啟動相機節點
source ~/ros2_ws/install/setup.bash
ros2 run orbbec_camera list_devices_node # Check if the camera is connected
ros2 launch orbbec_camera gemini_330_series.launch.py
- 在終端機 2 - 透過 RViz2 來視覺化相機輸出
source ~/ros2_ws/install/setup.bash
rviz2
當 RViz2 開啟,你可以新增 Image display 來查看即時的 RGB 和深度 topics。
你可以跟著下面的圖片來加入 topics:

- 在終端機 3 - 列出啟動中的 ROS 2 topics
source ~/ros2_ws/install/setup.bash
ros2 topic list
請確保您的相機成功發布 RGB 與深度 topics,如下所示。

步驟 3:下載 Python 檔案並執行即時推論
下載 obstacle_det.py 檔案,
並將其放在與您匯出的模型相同的資料夾中。
此指令碼會處理即時的 ROS 2 影像串流,
用來偵測鳥類(障礙物)與人類,並使用深度資料計算畫面中障礙物的位置(左、中或右)。
執行推論程式碼:
source ~/ros2_ws/install/setup.bash
python3 obstacle_det.py
您現在會看到一個視窗,顯示即時的物件偵測與距離估算!
步驟 4:連接至飛行控制器
在我們完整的無人機系統中,
一旦 obstacle_det.py 程式碼識別出障礙物的位置(左、中或右),
它就會傳送訊息給飛行控制器。
接著,飛行控制器會觸發相對應的馬達來移動無人機以避開障礙物。
以下是簡單的工作流程說明:
展示影片
觀看下方我們的實際測試影片,親眼見證避障功能的運作!