2025年4月10日 星期四

Python 程式檔案副檔名的詳細說明

Python 檔案副檔名說明

  • .py
    • 這是 Python 的原始碼檔案。
    • 包含可讀的 Python 程式碼。
    • 可以直接由 Python 直譯器執行。
  • .pyc
    • 這是 Python 原始碼編譯後的位元組碼檔案。
    • 當 Python 執行 .py 檔案時,如果找到對應的 .pyc 檔案,它會直接執行 .pyc 檔案,從而加快載入速度。
    • .pyc 檔案與平台無關。
    • 通常由 Python 直譯器自動產生。
  • .pyo
    • 這也是 Python 原始碼編譯後的位元組碼檔案,但它是經過優化後的版本。
    • 使用 -O 參數執行 Python 時產生,例如:python -O -m py_compile file.py
    • 優化後的位元組碼檔案通常比 .pyc 檔案小。
  • .pyd
    • 這是一個 Python 的動態連結庫檔案,通常由其他語言(如 C 或 C++)編寫。
    • 它允許 Python 呼叫其他語言編寫的函式。
    • 在 Windows 平台上,.pyd 檔案類似於 DLL 檔案。

Python 程式的執行原理

Python 是一種解釋型語言,但它並非完全是解釋執行。Python 程式的執行過程如下:

  1. 編譯: Python 直譯器將原始碼 .py 檔案編譯成位元組碼 .pyc.pyo 檔案。
  2. 執行: Python 虛擬機器執行位元組碼檔案。

編譯 Python 檔案

  • 單個檔案編譯:
    • 可以使用 py_compile 模組來編譯單個 .py 檔案。
    • 例如:import py_compile; py_compile.compile('test.py')
  • 資料夾編譯:
    • 可以使用 compileall 模組來編譯整個資料夾中的 .py 檔案。
    • 例如:import compileall; compileall.compile_dir('directory')
  • 編譯為 .pyo 檔案:
    • 在命令列使用python -O -m py_compile file.py 指令。

程式發布的選擇

  • 打包為 EXE 檔案:
    • 使用工具(如 PyInstaller)將 Python 程式打包成可執行的 EXE 檔案。
    • 這種方式方便使用者使用,但檔案通常較大。
  • 發布 .pyc.pyo 檔案:
    • 如果使用者有 Python 環境,可以發布編譯後的 .pyc.pyo 檔案,以隱藏原始碼。
  • 發布原始碼 .py 檔案:
    • 通常用於開源專案,允許使用者查看和修改原始碼。

無人機(Unmanned Aerial Vehicle,UAV)

 無人機(Unmanned Aerial Vehicle,UAV),也稱為無人航空載具,是一種不需要人類駕駛員在機上控制的飛行器。它們可以透過遙控、導引或自動駕駛來飛行。以下是關於無人機的一些基本說明:

主要類型:

  • 多旋翼無人機:
    • 這類無人機具有多個旋翼(通常為四個或更多),使其能夠垂直起降和懸停。
    • 它們在空中操作靈活,適合用於攝影、測繪和檢查等應用。
  • 固定翼無人機:
    • 這類無人機具有固定的機翼,類似於傳統飛機。
    • 它們能夠飛行更長的距離和更高的速度,適合用於長距離監測和運輸。
  • 單旋翼無人機:
    • 這類無人機類似單旋翼直升機,有較高的載重能力,和較長的飛行時間。
    • 通常應用於專業領域。

應用領域:

  • 攝影和攝像:
    • 無人機常用於拍攝空中照片和影片,提供獨特的視角。
  • 測繪和勘測:
    • 無人機可用於創建高精度的地圖和模型,用於建築、農業和環境監測。
  • 軍事和國防:
    • 無人機可用於偵察、監視和攻擊等軍事任務。
  • 農業:
    • 無人機可用於噴灑農藥、監測作物生長和進行農田分析。
  • 救援和應急:
    • 無人機可用於搜索和救援、災後評估和運輸醫療用品。
  • 娛樂:
    • 消費型無人機,用於休閒娛樂的空拍等等。

重要組件:

  • 飛行控制器:
    • 控制無人機的飛行穩定性和導航。
  • 全球定位系統(GPS):
    • 提供無人機的定位和導航信息。
  • 慣性測量單元(IMU):
    • 測量無人機的加速度和旋轉,以保持穩定。
  • 相機和傳感器:
    • 用於拍攝照片、影片和收集其他數據。
  • 電池和動力系統:
    • 提供無人機飛行所需的動力。

注意事項:

  • 無人機的使用受到各國和地區的法律和法規的限制。
  • 飛行安全至關重要,操作員必須具備足夠的知識和技能。
  • 飛行區域的限制,與高度限制。

希望這些資訊對您有所幫助。

保留 Hailo-8(邊緣推論)vs 不使用 Hailo-8(集中推論於桌機)

 

📦 方案 A:保留 Hailo-8(邊緣推論)

推論執行在 Raspberry Pi 4 + Hailo-8,強調「本地避障 + 桌機導航」的 混合式架構,兼顧反應速度與全局規劃。

🎯 特點:

  • YOLO 推論本地執行,延遲極低(<50ms)

  • 遇人、障礙可緊急停止

  • 桌機仍負責 SLAM、導航與遠端任務下達

🧩 Node 配置圖:

bash
🟢 Raspberry Pi 4 + Hailo-8 ├── usb_cam_node → /camera/image_raw ├── imu_node → /imu/data ├── encoder_node → /wheel/encoder ├── motor_bridge_node ← /cmd_vel ├── hailo_yolo_node → /detected_objects │ └── 判斷危險 → 發佈 /emergency_stop └── emergency_stop_node → 控制 /cmd_vel 允不允許送出 🟠 ROS 2 Desktop (i5 + RTX4060) ├── orb_slam3_node ← /camera/image_raw + /imu/data ├── nav2 stack │ ├── map_server │ ├── planner_server │ ├── controller_server │ └── bt_navigator ├── obstacle_costmap merger ← /detected_objects ├── rviz2 ← /map, /odom, /tf └── ros2 bag / debug tools

📦 方案 B:不使用 Hailo-8(集中推論於桌機)

推論、SLAM、導航皆由桌機執行,Raspberry Pi 僅負責感測與馬達執行。適合網路穩定、高效能桌機、延遲容許的場景。

🎯 特點:

  • 整個 AI 推論與規劃集中於桌機 RTX4060

  • Pi 僅送影像與感測資料,硬體簡化

  • 價格較低、部署較單純

🧩 Node 配置圖:

bash
🟢 Raspberry Pi 4 ├── usb_cam_node → /camera/image_raw ├── imu_node → /imu/data ├── encoder_node → /wheel/encoder ├── motor_bridge_node ← /cmd_vel 🟠 ROS 2 Desktop (i5 + RTX4060) ├── yolo_node (TensorRT) ← /camera/image_raw │ └── 發佈 /detected_objects ├── orb_slam3_node ← /camera/image_raw + /imu/data ├── nav2 stack │ ├── map_server │ ├── planner_server │ ├── controller_server │ └── bt_navigator ├── costmap_merger_node ← /detected_objects ├── emergency_stop_node ← /detected_objects │ └── /cmd_vel 覆蓋保護 ├── rviz2 ← /map, /odom, /tf └── ros2 bag / rqt 工具

✅ Node 功能總結對比表

功能項目方案 A:Hailo-8 在 Pi 上方案 B:不使用 Hailo-8
AI 推論Pi 本地 + Hailo-8桌機 GPU 推論(如 RTX)
反應速度快(即時避障)慢(依賴傳圖與回傳)
架構穩定性高(離線也可停車)中(需穩定網路)
架構複雜度高(需加 SDK、資源管理)低(全靠桌機)
成本稍高(Hailo 加速器)低(簡化硬體)
適合情境遠端 / 室外 / 容錯要求高實驗室 / 學術模擬

📌 開發提示建議

  • 可在兩種架構下都維持相同的 ROS topic 和 message 格式,例如:

    • /detected_objectsvision_msgs/Detection2DArray

    • /cmd_velgeometry_msgs/Twist

  • launch 檔控制不同平台啟動不同 node,保持模組化部署

  • 建議所有重要 topic 都進行 rosbag2 錄製,利於後續模型訓練或錯誤追蹤

Raspberry Pi 4 是否還需要搭配邊緣 NPU(Hailo-8)?

 分散式 ROS 2 架構中,Raspberry Pi 4 是否還需要搭配邊緣 NPU(Hailo-8),要依照你希望 AI 推論的執行位置與即時性需求 來決定。


✅ 是否需要 Hailo-8?取決於下列因素:

🎯 你要在哪一端執行 AI 推論(物件偵測、避障)?

執行端是否需要 Hailo-8備註
Pi 上本地執行 YOLO + 避障邏輯✅ 需要 Hailo-8Pi 本身無法跑 YOLO,需硬體加速
桌機負責推論(Pi 傳 raw image 回桌機)❌ 可不需要若桌機跑推論,Pi 只需送圖片
混合模式(Pi 推論基本避障,桌機做導航)✅ 建議有強化容錯,減少影像傳輸負載
僅用 IMU + SLAM 導航,不用 AI 避障❌ 可省略不做 AI 推論就不需 NPU

🧠 決策重點

✅ 建議保留 Hailo-8 的情境:

  1. 即時避障需求強(例如目標是「看到人就立刻停車」)
    → 推論必須在車上立即完成,不能等 Wi-Fi 回傳圖像 → 桌機推論 → 回傳控制指令

  2. 網路頻寬有限或不穩定(例如 Wi-Fi 頻繁干擾)
    → 影像資料太大,傳到桌機會延遲,直接在 Pi 上推論效率更穩定

  3. 需要邊緣容錯能力(如桌機斷線時仍可繼續基本避障)
    → Pi 本地的 YOLO + 急停可以保障最基本安全性


❌ 可以不裝 Hailo-8 的情境:

  1. 已經有強力桌機 GPU(如你的 RTX4060)
    → 讓桌機跑 YOLOv5 / YOLOv8,效能更好

  2. 允許 100~200ms 推論延遲的任務(如非高速自走車)
    → Pi 只需當視覺感測器,把影像發回桌機

  3. 僅做學術/模擬/非 AI 任務(例如只跑 SLAM、導航、不需物件辨識)
    → 無需額外加速器


📌 建議策略(混合式設計最靈活)

模式執行位置推薦組合
即時安全避障(人車偵測)Pi 上(Hailo)✅ 保留 Hailo-8
高階任務導航 / SLAM / 多任務決策桌機 RTX4060✅ 使用桌機推論
推論結果回傳給桌機Pi ➜ topic /detected_objects用於 costmap 增強

✅ 結論:

若你的車輛要自主避障、具容錯性,或具備獨立行動能力,建議保留 Hailo-8 在 Pi 上。

若你完全仰賴桌機運算、網路穩定、且追求極限性能(GPU 炸 YOLOv8n),則 可選擇不搭配 Hailo-8,讓 Pi 只是 IO 中繼站。

ROS 2 桌機(高性能電腦) 加入架構中

 

ROS 2 桌機(高性能電腦) 加入架構中,可大幅提升運算能力、管理整體導航/SLAM/監控/決策邏輯,讓 Raspberry Pi 4 專注處理車體低層感測與控制邏輯,這樣的架構非常「實戰型」,以下是完整的任務分配與修正後的分散式 ROS 2 系統架構規劃


🧠 架構總覽:Raspberry Pi 4 + Desktop ROS 2 分散式任務分配

plaintext
╔══════════════════════════╗ ║ ROS 2 Desktop Workstation (i5 + RTX4060) ║ ╚══════════════════════════╝ │ (Wi-Fi / LAN) ▼ ┌─────────────────────────────────────────────┐ │ ROS 2 DDS 通訊(Fast DDS / Cyclone DDS) │ └─────────────────────────────────────────────┘ ▲ (USB Camera / IMU / Motor Control) │ ╔═══════════════════════╗ ║ Raspberry Pi 4 (with Hailo-8) ║ ╚═══════════════════════╝

🧩 任務分配建議(基於 ROS 2 架構)

📦 Raspberry Pi 4(Edge device - 車載端)

功能ROS 2 node 建議備註
Camera 驅動usb_cam / v4l2_camera發佈 /camera/image_raw
IMU 資訊處理imu_driver_node發佈 /imu/data
編碼器回報encoder_node發佈 /wheel/encoder
馬達控制motor_bridge_node訂閱 /cmd_vel
AI 推論hailo_yolo_node發佈 /detected_objects
基本本地反應控制可有(緊急停止)可判斷前方障礙即停車

🖥️ 桌機端 ROS 2(主要計算端)

功能ROS 2 node 建議備註
VSLAM(視覺定位)orb_slam3_ros / vins_fusion訂閱 /camera/image_raw + /imu/data
地圖建構map_server, slam_toolbox可記錄地圖供重用
導航規劃nav2 stack利用 /map, /odom, /goal 計算 /cmd_vel
路徑避障dwb_controller, bt_navigator整合 YOLO + SLAM 作為 costmap
視覺監控rviz2顯示車體、路徑、推論結果
記錄與調試rosbag2, rqt_graph非常適合除錯

🔌 網路通訊設定(必做)

1️⃣ ROS 2 DDS 多裝置通訊

ROS 2 使用 DDS 通訊(推薦 Fast DDS 或 Cyclone DDS),不需額外安裝 bridge,只要:

bash
# 在桌機與 Raspberry Pi 都設環境變數(IP = 各自的 IP) export ROS_DOMAIN_ID=0 export RMW_IMPLEMENTATION=rmw_fastrtps_cpp export ROS_NAMESPACE=robot1

2️⃣ 確認能互 ping

確保 Raspberry Pi 與桌機處於 同一個子網段 或透過 ROS bridge/router 進行中繼。


📐 修正後的系統模組圖(含 ROS Node 與 Topic)

bash
[Desktop ROS2] ┌────────────┬────────────────────┬─────────────┐ │ /map │ ← SLAM Node │ │ │ /odom │ ← nav2 │ │ │ /goal │ → nav2 │ │ │ /cmd_vel │ → Pi motor │ │ │ /rviz2 │ 視覺化 │ │ └────────────┴────────────────────┴─────────────┘ ▲ │ DDS ▼ [Raspberry Pi 4 + Hailo-8] ┌────────────┬────────────┬────────────┬────────────┐ │ /camera/image_raw → SLAM/YOLO │ │ /imu/data → SLAM │ │ /detected_objects → nav2 costmap │ │ /cmd_vel ← nav2 控制 │ │ /wheel/encoder → 本地控制 or nav2 │ └────────────┴────────────┴────────────┴────────────┘

🧠 系統運作順序建議

  1. Pi 上啟動

    • 相機節點

    • IMU 驅動

    • Hailo 推論節點

    • motor_bridge 控制橋節點

  2. 桌機上啟動

    • ORB-SLAM3 + IMU 模式(需同步相機與 IMU 時間)

    • nav2 stack

    • RViz2 監控

    • /goal 發送器(可用點選方式設定導航點)

  3. ROS 2 DDS 溝通

    • /camera/image_raw ➜ 傳回桌機

    • /cmd_vel ➜ 傳給 Pi 控制器


🔧 開發與測試建議

項目建議
預測延遲Pi → Desktop 相機圖像傳輸延遲需低(建議 640x480 @ 15fps)
系統時鐘同步可用 chronyntpdate 將 Pi 對桌機做時間同步
頻寬限制建議使用壓縮影像(image_transport + compressed)
AI 推論優化YOLO 推論在 Pi 上進行,僅送回推論結果

🎁 加值選項

類別功能技術建議
即時監控Web UI用 Flask + MJPEG 串流
語音指令與導航整合使用 ros2_whisper 搭配指令 topic
手動控制手機/滑鼠透過 /cmd_vel 控制

這樣架構非常模組化且未來擴展性強,你可以:

  • 加多台車 ➜ 設 ROS_NAMESPACE 不衝突

  • 在桌機記錄資料 ➜ 後處理或訓練新模型

  • 混合控制模式(遠端規劃 + 本地避障)

智慧視覺 SLAM 雙輪自走車

 

「智慧視覺 SLAM 雙輪自走車」🚗💨!你這樣的設計結合了:

  • Hailo-8:即時 AI 物件辨識

  • webcam:影像輸入 + VSLAM

  • IMU:車體姿態估算

  • STM32F4:馬達與低層控制

  • Raspberry Pi 4:ROS 中樞處理器

  • ROS:整體感知、推論、控制與導航整合框架

下面幫你規劃出完整的 軟體架構圖 + 硬體需求 + 推薦模組 + 開發流程


🧠 系統整體架構圖

scss
📷 Webcam (UVC) │ ▼ [Image pipeline] │ ┌────────────────────┐ │ VSLAM node (e.g. │──┐ │ ORB-SLAM3 / VINS) │ │ └────────────────────┘ ▼ │ [Map / Pose] │ │ ▼ ▼ [Hailo AI 推論 (YOLO)] [IMU (I2C)] │ │ ▼ ▼ [物件位置 + 車身姿態整合] │ ▼ [導航決策 + 控制策略 (ROS node)] │ ▼ [STM32F4 馬達控制板 (UART) ⟵ 編碼器回授]

🧩 硬體需求建議清單

模組建議選擇備註
🎯 主控板Raspberry Pi 4 (4G)可執 ROS + Hailo 推論
📷 攝影機USB UVC Camera(Logitech C270 / C922)支援 ROS image node
🧠 AI 加速器Hailo-8 USB處理 YOLO / 避障模型
📡 IMU 感測器MPU9250 / ICM20948提供 VSLAM / 控制所需姿態資訊
⚙️ 馬達控制板STM32F4 + Encoder + PWM 控制接 UART 與 Pi 溝通
🔋 電源5V/3A 給 Pi,12V 給馬達建議用 DC-DC 模組分壓
🛞 底盤差速雙輪(TT 馬達 + 編碼器)輕量、避震佳

⚙️ 軟體堆疊與工具鏈建議

📦 作業系統與基本環境

  • Raspberry Pi OS 64-bit

  • ROS 2 Humble 或 Foxy(推薦 Humble,長期支援)

  • Python 3.10 / C++17

  • OpenCV 4.x

  • Hailo SDK(Model Zoo + HailoRT + Profiler)


📦 ROS 軟體架構(建議 node 切分)

功能ROS Node 建議
相機驅動usb_cam / v4l2_camera_node
Hailo 推論hailo_yolo_node(自建 node,呼叫 HailoRT)
VSLAMorb_slam3_ros / vins_fusion
IMU 驅動imu_com_node(讀取 I2C,轉為 sensor_msgs/Imu)
STM32 控制通訊motor_bridge_node(用 serial node 封裝)
控制器motion_control_node(如 Pure Pursuit、MPC)
地圖導航nav2 或自製簡易 decision node
可視化rviz2 / rqt_graph / rqt_plot

📍 推薦模組與工具

功能模組工具
VSLAMORB-SLAM3支援單鏡頭 / IMU
物件偵測YOLOv5s / YOLOv8n轉 ONNX ➜ Hailo ➜ .hef
AI 推論HailoRT + ROS bridge自建 wrapper node
控制器Pure Pursuit / PID 控制根據姿態 + 目標點產生速度指令
通訊橋rosserial / custom UART parserPi ↔ STM32 通訊
RVIZ2即時視覺化SLAM 地圖、IMU 資訊、推論結果

🔁 部署開發流程建議

Step 1:建置 ROS 2 與 Camera 驅動

bash
sudo apt install ros-humble-desktop sudo apt install ros-humble-usb-cam ros-humble-teleop-twist-keyboard

Step 2:串接 IMU 與 STM32

bash
# 用 Python I2C 或 C 驅動 IMU # UART 通訊解析 motor 指令/回報編碼器

Step 3:安裝 Hailo SDK 並轉換模型

bash
hailo_model_optimizer yolov5s.onnx hailo_compile yolov5s.hmo ➜ yolov5s.hef

Step 4:建立 ROS 推論 node(hailo_yolo_node

python
# 訂閱 /camera/image_raw,使用 HailoRT 執行推論,發佈到 /detected_objects

Step 5:整合 VSLAM(ORB-SLAM3)

bash
# 使用 USB 攝影機 + IMU 結合建圖 ros2 launch orbslam3 monocular_imu.launch.py

Step 6:控制流程設計

bash
# 訂閱 VSLAM pose + IMU + 推論結果,判斷是否要避障或跟線 # 計算 linear / angular velocity ➜ 傳送至 STM32 控制馬達

🔧 延伸優化方向(進階)

功能技術
車道追蹤CNN 模型(LaneNet / 自訓)搭配中心線偵測
多鏡頭視覺USB + CSI 混合使用
建圖導航搭配 ROS 2 nav2 套件,做路徑規劃與避障
數據記錄rosbag2 記錄資料做離線分析
分散架構IMU / 控制器使用 micro-ROS 搭配 STM32 通訊

Raspberry Pi 4 4G + Hailo-8 + IMU + webcam 雙輪自走車

 Raspberry Pi 4 4G + Hailo-8 + IMU + webcam 非常適合做雙輪自走車(兩輪平衡車或差速驅動車),可以結合 AI 視覺、感測器融合與機器控制來打造完整的智慧車系統。這邊幫你規劃出一套 模組化的系統設計架構,包含推薦工具鏈、模型與部署流程。


🧠 總體系統規劃架構圖(模組化)

css
[Webcam] --> [Hailo-8 AI 推論][物件辨識 / 車道追蹤][IMU + Encoder] --> [狀態估測(速度、角度)][控制邏輯(PID / Pure Pursuit)][STM32 驅動雙輪馬達(透過 UART / I2C)]

🔌 硬體構成建議

元件建議規格
Raspberry Pi 44GB RAM,搭配主動散熱
Hailo-8USB 加速器版本
Webcam支援 UVC,可用 Logitech C270 / C922
IMUMPU6050 / ICM-20948(支援 6 或 9 軸)
驅動板STM32F4(透過 UART 控制馬達)
雙輪底盤差速輪車底盤 + 編碼器(encoder)

🛠️ 工具鏈建議(含整合模組)

📦 開發環境

  • OS: Raspberry Pi OS 64-bit (Bookworm)

  • SDK: Hailo SDK(含 Model Zoo + HailoRT)

  • 通訊: UART / I2C(與 STM32、IMU 溝通)

  • 控制程式語言:Python + C/C++(整合 RT 與控制)

  • 視覺處理:OpenCV、GStreamer

  • 感測器處理:smbus / pyserial / mpu6050 等 lib


🤖 推薦 AI 模型(Hailo Model Zoo)

模型用途是否支援
YOLOv5n / s即時物件偵測(人、障礙物)
LaneNet / 自製 CNN車道追蹤可轉換為 ONNX ➜ Hailo
Mobilenet-SSD輕量物件偵測
EfficientNet-lite圖像分類(可判斷路口、標誌)

📌 開發建議流程:

  1. 用 TFLite / ONNX 格式訓練或轉換模型

  2. 使用 hailo_model_optimizer + hailo_compile.hef 模型

  3. 在 Pi 上用 HailoRT 或 GStreamer 播放 + 推論


📡 感測器與驅動整合

1️⃣ IMU(例如 MPU6050) ➜ 姿態估測

  • 透過 I2C 使用 mpu6050 or RTIMULib

  • 融合加速度與角速度,估算俯仰角或車體傾斜

2️⃣ STM32 馬達驅動

  • 用 UART 通訊傳送指令(如 PWM 值、速度)

  • STM32 回報車輪編碼器資訊

  • 可設計 PID 控制 + 編碼器回授封閉迴路


🔁 控制邏輯建議

功能模組說明
影像處理分割道路、檢測障礙物或車道中心線
狀態估測利用 IMU + 編碼器估算線速度 / 角速度
控制策略Pure Pursuit 或 PID 控制轉向
行為決策根據推論結果(如前方有人)做停止 / 避障

🧪 部署流程建議

Step 1:安裝 Hailo SDK(包含模型 Zoo 與 Compiler)

bash
# 須向 Hailo 官網註冊帳號取得 SDK sudo ./install.sh

Step 2:下載模型並測試

bash
cd ~/hailo_model_zoo python3 main.py download --model-name yolov5s python3 main.py run --model-name yolov5s --camera

Step 3:感測器初始化

python
# MPU6050 I2C 初始化 from mpu6050 import mpu6050 imu = mpu6050(0x68) accel_data = imu.get_accel_data() # UART 傳輸指令給 STM32 import serial ser = serial.Serial('/dev/ttyUSB0', 115200) ser.write(b'V100;T20\n') # V=速度,T=轉向

Step 4:整合推論與控制邏輯

python
# 讀攝影機 + 推論 + 控制 image = get_camera_frame() objects = run_hailo_inference(image) center = get_lane_center(image) if detect_obstacle(objects): stop_vehicle() else: steering = compute_steering(center) control_motor(steering)

🧩 Bonus:加值模組可考慮

功能技術 / 模組
遠端監控WebSocket + Web UI + MJPEG Streaming
即時記錄Log 推論與控制數據 (CSV 或 SQLite)
ROS2 整合用 micro-ROS 將 STM32 資訊封裝成 Topic
可視化用 OpenCV 標示推論結果與方向指示線


Raspberry Pi 5 + Hailo-8L

 

Raspberry Pi 5 + Hailo-8L)是目前性價比非常高的邊緣 AI 處理平台,適合做多鏡頭視覺、即時物件偵測、智慧車、自走車等應用。

以下是我幫你整理的推薦工具鏈、部署流程與模型建議:


🧰 一、Hailo-8L + Raspberry Pi 5 工具鏈概觀

硬體需求:

  • Raspberry Pi 5(建議搭配主動散熱)

  • Hailo-8L USB 加速器(或 Hailo M.2 PCIe 模組 + 對應轉接板)

  • Raspberry Pi OS 64-bit(Bookworm 或 Bullseye)

  • USB 3.0 埠(若用 USB 版 Hailo)


🛠️ 二、開發工具鏈建議

1️⃣ 開發環境安裝

安裝 Hailo 開發套件(Hailo SDK)

bash
# 加入 Hailo 軟體源(需註冊帳號取得) wget https://hailo.ai/downloads/hailo-ai-sdk.tar.gz tar -xzf hailo-ai-sdk.tar.gz cd hailo-ai-sdk sudo ./install.sh

Hailo SDK 包含:

  • hailo_model_zoo: 含 YOLO, SSD, Mobilenet 等模型

  • hailo_compile: 編譯模型為 Hailo 格式(HEF 檔案)

  • hailort: Hailo 推論執行時(Runtime API)

  • hailo_profiler: 效能分析工具


🤖 三、模型選擇建議(針對自駕、物件偵測)

模型名稱模型特色適合應用Hailo Model Zoo 支援
YOLOv5 nano / s輕量、速度快物件偵測、自走車、障礙物辨識
SSD-MobileNet v2速度快、體積小基本物件偵測、室內辨識
ResNet-18/34影像分類穩定路況判斷、路口分類
EfficientDet-lite效能平衡車道、交通標誌偵測✅(透過 ONNX 轉換)

你可以直接用 hailo_model_zoo 指令拉下範例:

bash
cd ~/hailo_model_zoo python3 main.py download --model-name yolov5s

🔁 四、部署流程建議

Step 1:下載並轉換模型(若用自己訓練的)

bash
# 假設你已有 ONNX 模型 hailo_model_optimizer --onnx my_model.onnx hailo_compile -m my_model.hmo -o my_model.hef

Step 2:部署到 Raspberry Pi

  • .hef 模型部署至 Pi

  • 使用 Python API 或 C++ API 推論:

python
from hailo_platform import HailoRuntime rt = HailoRuntime("my_model.hef") input_tensor = load_image("test.jpg") output = rt.infer(input_tensor)

或使用官方 C++ demo 執行:

bash
hailort_app run --hef yolov5s.hef --input image.jpg

🖼️ 五、視覺串流實作(選配)

你可以加上:

  • OpenCV 做影像預處理

  • GStreamer + hailort_gstreamer 插件來做硬體加速的視訊串流

  • 使用 Flask + Web UI 建立影像 Dashboard


✅ 六、開發小技巧與注意事項

項目建議
模型格式最好從 Hailo Model Zoo 起步,可穩定編譯
自訓模型建議先轉為 ONNX,再透過 Hailo 工具鏈轉換
效能調校可用 hailo_profiler 看 FPS 與資源使用率
熱管理Pi 5 與 Hailo 推論時發熱量大,請加散熱裝置
多鏡頭應用建議搭配 CSI + USB 相機混合架構分流

Hailo vs Coral 邊緣 AI 推論平台

 Hailo 和 Coral 都是專為 邊緣 AI 推論 設計的加速器平台,適合在開發自駕車、IoT、影像處理等應用。

詳細的對比分析。


🚀 Hailo vs Google Coral 邊緣 AI 加速器比對

項目Hailo-8 / 8LGoogle Coral (Edge TPU)
公司 / 原廠Hailo(以色列)Google / Coral
主要晶片Hailo-8 / Hailo-8LEdge TPU(Google 自研)
推論效能🔥 高:26 TOPS(Hailo-8) / 13 TOPS(8L)中高:4 TOPS(單精度 INT8)
功耗2.5W ~ 4.5W(典型)0.5W ~ 2W(視應用而定)
運算精度INT8INT8
模型格式支援TFLite / ONNX / Pytorch (透過轉換工具)主要為 TFLite(需量化)
工具鏈Hailo SDK(Model Zoo + HailoRT)Coral Dev Board / Edge TPU Compiler
模組類型M.2 / Mini PCIe / USB / 模組板USB 加速棒 / Dev Board / PCIe 模組
Raspberry Pi 相容性✅(M.2、USB 版本可用)✅(USB Accelerator)
TensorFlow 支援間接支援(需轉為 TFLite 或 ONNX)✅ 原生支援 TFLite
可視化與監控Hailo GUI Profiler 工具edgetpu_compiler 有基本輸出
軟體開發難易度中~高(需要 Hailo 特定 SDK)低(適合初學者,整合 TensorFlow)
應用強項複雜 AI 模型(如多鏡頭影像辨識)較輕量的即時影像分類、物件偵測
價格(參考)Hailo-8L ~$60–$90 / Hailo-8 ~$150+Coral USB ~$60 / Dev Board ~$150

🔍 應用場景建議:

使用情境建議選擇
想跑 多路鏡頭影像 / 複雜 CNN 模型(如 YOLOv5)Hailo-8 / 8L
初學者 / TensorFlow 開發者 / TFLite 為主Google Coral
使用 Raspberry Pi 為邊緣裝置、注重 功耗與效能比✅ Hailo-8L 更適合
快速開發原型 / 教學用途✅ Coral USB 或 Dev Board



🧰 開發流程差異簡述

Hailo

  1. 使用 Hailo Model Zoo 模型或轉換自己的模型(ONNX / TF)

  2. 使用 hailo_model_optimizerhailo_compile

  3. 在裝置上用 HailoRT 執行推論

Coral

  1. 使用 TensorFlow 訓練後轉為 TFLite(需量化)

  2. 使用 edgetpu_compiler 編譯為 .tflite 加速版本

  3. 在裝置上用 tflite_runtime + Coral 驅動推論