Back to Raspberry Pi Taiwan

【活動/社群聚會】Raspberry Pi 社群聚會 #35 會後資料 (Raspberry Pi 新產品介紹)

Last Updated on 2023 年 6 月 5 日 by 小編

第三十五次 Raspberry Pi 社群聚會會後資料,希望透過社群活動的分享和交流,找到更多 Raspberry Pi 的可能。本次主題是「Raspberry Pi 新產品介紹」。Raspberry Pi 社群聚會 #35 會後資料 提供下載

過往資訊可看共筆,報名可到 KKTIX

這次活動 Creative5 贊助 USB 小禮物,有各種 USB 轉 microUSB 和 USB 轉 USB-Type-C 等傳輸線和轉接頭。台灣樹莓派 贊助 Raspberry Pi Zero 2 W(需抽籤)。element14 贊助 Raspberry Pi 特色紅包袋等,所以這次來參加的朋友都很開心的拿了各種紀念品,感謝各位乾爹。


 

這次是年度聚會,距離上次 社群聚會 #34 已經有一年了,按照慣例年度聚會都會一起吃 Pizza 和喝可樂,大家一起同歡變肥~


 

分享者1:Larry(Joybien 科技)

Topic:AIoT Fusion with mmWave Portfolio Solution

第一位分享者是 Joybien 科技 的 Larry,他曾經在 樹莓派社群聚會 #25樹莓派社群聚會 #34 分享過有關 mmWave 的應用,例如生命跡象偵測(VSD)、人員動態行為(PMB)、高精度量測(HAM)等。這次要介紹的是如何將 mmWave 和其他感測器整合,做 Sensor Fusion 的應用。


 

Larry 一開始先比較 mmWave 和其他 AIoT 會用到的感測器,例如超音波感測器(Ultrasonic Radar)、相機(Camera)、紅外線熱像儀(Infrared Sensor)、光達(Lidar)等。只能說不同感測器都有各自的優缺點,實做上需要根據應用的場域範圍才能選擇適合的感測器。


 

由於各種感測器都有各自的優缺點,因此 先進駕駛輔助系統(ADAS, Advanced Driver Assistance Systems)無法靠單一感測器完成所有需要的功能,因此需要整合這些感測器,並計算出最後的結果提供駕駛人輔助決策,為了降低單一感測器的不確定性而將不同來源的感測器資訊整合在一起的過程稱為感測器融合(Sensor Fusion)。


 

除了車用系統以外,在智慧醫療(Smart Healthcare)領域因為隱私等議題,也會需要整合多種感測器做監控,這時候非相機(Camera)類型的感測器例如毫米波(mmWave)等就適合應用在這類的場域。


 

因此 玖邦科技 也推出以 TI IWR6843AOP 為平台的 BM502 EVM Kit,減小 PCB 和天線的面積,讓整個開發模組可以更小,希望能在智慧醫療這領域能有更多發揮的空間。


 

除了 BM502 系列以外,玖邦科技 也推出以 TI IWR1843 為平台的 BM601 系列,可以提供更遠距離的偵測功能等。


 

而 BM601 的天線類型是 Vertical(BM502 是 ODS),另外 BM601 使用 76GHz – 81GHz 頻段(BM502 是 60GHz – 64GHz),因此能偵測更遠距離的物件,做更多有趣的應用。


 

玖邦科技的 mmWave 開發套件持續進化,舊版的 BM101 已經被 BM201 取代,而新版的 BM601 天線排列不同、使用頻段也不同,能有更長的偵測距離,是玖邦科技下一個要推的產品。

有鑑於初學者對於毫米波(mmWave)的應用不是很熟悉,因此玖邦科技製作了 應用場域/涵蓋範圍/產品 這樣的矩陣,方便使用者容易針對自己的需求選擇適合的產品。


 

接下來就是一系列的 mmWave 展示了。由於 BM502 的偵測範圍為正負 65º,單一感測器可偵測 130º,因此結合三個 BM502 就可以做 360º 的感測。


 

將 360º 的感測結果繪製成雷達圖,可以視覺化物體的移動情形,再進一步做成熱圖(Heatmap),可以更清楚的看出物體在空間上聚集或變化的情形。


 

如果結合 FLIR Lepton Thermal Sensor 做感測器融合,可量測物件距離,因而可更精準的推估溫度。


 

當結合姿態偵測框架,例如 MediaPipe,就可以偵測人體姿態等,做更多有趣的應用。


 

Larry 的分享非常精彩,休息時還被團團圍住,大家都想多瞭解 mmWave 的使用經驗。

AIoT Fusion with mmWave Portfolio Solution 的投影片下載

 

分享者2:sosorry(台灣樹莓派)

Topic:Raspberry Pi Camera 3 介紹

Raspberry Pi Camera 3 在 2023/01/09 推出,我們這次從硬體開始,介紹 Sony IMX708 感光元件特色、自動對焦(Autofocus)功能、廣視場(Wide FOV)和 高動態範圍成像(HDR)等。再介紹 libcamera 和 picamera2 架構和特色。


 

在 Arducam 的教學中說明,如果需要有自動對焦功能(Autofocus),需同時具備對焦馬達(Focus Motor)和控制系統(Control System)。而 Raspberry Pi Camera 3 也同時具備這些功能來實現自動對焦功能,以下慢動作影片可以看到對焦馬達有作動來對焦。

Raspberry Pi Camera 3 的對焦演算法是透過 Sony IMX708 原生的相位自動對焦(PDAF, Phase Detection Autofocus)和 Raspberry Pi 自己開發的對比度自動對焦(CDAF, Contrast Detection Autofocus)兩種類型混合而成,如果 PDAF 的計算結果不具有高的信心水準,系統可動態調整到使用 CDAF 演算法來得到最佳的拍照效果。

圖片來源:Raspberry Pi Camera Autofocus: The Complete Guide (V1, V2, HQ)

Raspberry Pi Camera 一代和二代的水平視角(Horizontal FoV)分別是 53° 和 62°,而 Raspberry Pi Camera Module 3 的標準視角是 75° 對角線視場(66° 水平視場),Raspberry Pi Camera Module 3 的廣角有 120° 對角線視場(102° 水平視場和 67° 垂直視場),可以比較使用標準視角和廣角拍出的相片如下。

圖片來源:Raspberry Pi Camera Module 3 – 12MP with Auto Focus lens

由於我們周圍環境會受到發光強度(動態範圍)的顯著變化的影響。而圖像感測器的攝影動態範圍較窄,無法拍攝到人眼所能看到的範圍。因此要拍攝明亮的場景,黑暗區域將被遮擋,而要拍攝黑暗的場景,明亮的區域將變得過曝。由於拍攝使用的硬體愈來愈小,例如智慧型手機,因此用圖像感測器的補光能力也下降,因此可拍攝的亮度範圍將更小。這就是為什麼在使用智慧型手機拍攝逆光等亮度差異較大的場景時,拍攝結果可能與肉眼不同的原因。

HDR(高動態範圍)是一種用於捕捉場景亮度(動態範圍)差異大的的技術。在 HDR 模式下,通過改變快門速度來捕捉具有不同亮度的圖像訊號。再將這些圖像組合成一個資料,建立出有寬動態範圍的訊號。並進行亮度分佈調整和灰度校正後,可以得到接近人眼所見的圖像,並同時抑制了過曝或是曝光不足的現象。

而支援三重曝光的 Sony IMX708 QBC 圖像感測器在短曝光、長曝光和中曝光三種曝光條件下同時拍攝四個相同顏色像素的圖像,並合成圖像。因此 HDR 會降低輸出的解析度,由原本的 12M 降低到 3MP。

圖片來源:High Dynamic Range (HDR) Technology for Mobile

而 Raspberry Pi Camera 3 只支援 libcamerapicamera2 也是一大特色(?)。

picamera2 的一些特色包括:

  • 當 X Windows 沒有執行時,預覽視窗使用 OpenGL 加速硬體輔助渲染或使用 DRM/KMS 進行高效的渲染。
  • 可以將 Picamera2 輸入到 Python 直譯器或程式中。
  • 支援 Picamera2 嵌入到 Qt 應用程式中。
  • 整合 NumPy 使 OpenCV、TensorFlow 和其他 Python 的科學計算套件的使用更加容易。
  • 繪圖顯示可疊加(overlay)在相機圖像上。
  • 支援官方 Raspberry Pi 相機和 Arducam 的一些第三方相機。

Raspberry Pi Camera 和手機的相機模組使用相同的硬體,由上而下是 Lens(透鏡)可讓光穿透進來,VCM(音圈馬達)可做光學變焦,IR Cut(紅外光濾片)可過濾紅外光只讓可見光進入到 Sensor(感光元件),通常是 CMOS 或是 CCD 將光訊號轉成電訊號,最後透過 PCB(印刷電路板)將電訊號傳到 ISP(影像訊號處理器)進行第一級的影像處理。

圖片來源:13MP camera tipped for Samsung Galaxy S IV

光訊號從 Sensor 轉為電訊號後,圖像感測器(Sensor Chip)會將訊號放大,並且透過 ADC 轉為數位訊號輸出成 RAW 格式影像。

而 ISP 常見的功能有 Demosaic(去馬賽克)、Denoise(去噪)、Sharpen(銳利化)、White Balance(白平衡)、Gamma、Compress(壓縮)。當 RAW 影像經過 ISP 的第一級影像處理後可優化壓縮成 JPEG 格式輸出。

圖片來源:从影像形成的角度再谈相机成像

但每一家 ISP 的功能和實做方式都不一樣,樹莓派的第一顆 SoC BCM2835 的軟體架構可以參考下圖。如果是 2D/3D 的應用,將透過 OpenGL 或是 OpenVG 交由 CPU 運算。而多媒體應用,例如相機或是 H.264 等格式,則透過 OpenMAX 界面交由 CPU 運算。

由於 OpenMAX 只是定義了操作界面,如果要使用硬體加速需要透過 MMAL(Multi-Media Abstraction Layer)。Raspberry Pi 使用的 MMAL 是一個由 Broadcom 為VideoCore 4 系統設計的 API,因此如果要做硬體加速,可以透過 MMAL 的 API 存 取VideoCore GPU。例如 raspicam 應用程式使用了三個 OpenMAX 組件,包括 camera 和 preview 和 encoder。但是即使有了這些範例,操作 MMAL 還是不容易理解和使用。

圖片來源:Raspberry Pi VideoCore APIs

如果是 Python 程式需要透過 GPU 做硬體加速,例如 JPEG 或是 H.264 的編碼/解碼,BCM2835 SoC 會使用 VideoCore Host Interface(VCHI) 處理 ARM Cortex CPU 和 VideoCore IV GPU 之間的通訊。詳細的步驟可參考 picamera 的文件

圖片來源:picamera

但因為相機影像要透過 CPU 到 GPU 處理的操作比較複雜,使用者在初期(2012 年)文件不是很齊全的時候不容易開發,因此採取 V4L2(Video4Linux 2nd) 存取 Raspberry Pi Camera 就是一個不錯的方向。

V4L2 是一套 Linux 針對視訊設備(例如 Webcam)所定義好的 Userspace API,因此硬體廠商只要能實做 API 的功能,就能讓使用者透過統一的介面控制硬體。如此一來上層的使用者就即使不知道硬體的廠牌與底層的實做方法,只要知道呼叫相同的 V4L2 函式就能得到相同的結果。

圖片來源:Video for Linux Two API Specification

Raspberry Pi 在 2013 年釋出 V4L2 的驅動程式,讓使用者可以使用類似 v4l2-ctl 的指令控制 Raspberry Pi Camera。


 

Raspberry Pi Camera 同時支援 V4L2 和 MMAL 很長一段時間,但過了很久出現新的問題,主要是 V4L2 的限制。例如硬體必須支援 UVC(USB Video device Class),但 USB 的速度比較慢(相較於 DMA)。更重要的是,V4L2 難以處理日益複雜的相機架構,硬體層的圖形處理演算法更無法發揮作用。

因此 2020 年 Raspberry Pi 宣佈採用 libcamera 作為新的 Camera Stack,如此一來可以讓使用者/開發者透過開源的相機堆疊來存取 Raspberry Pi Camera,並且多了更多彈性,例如能接到 VideoCore 使用硬體加速處理影像,或是使用軟體方式做影像處理。


 

libcamera 是 Linux 和 AndroidChrome OS使用者空間開源相機堆疊和框架(An userspace open source camera stack and framework for Linux, Android, and Chrome OS.)。libcamera 目的是從 Linux 提供一個統一的 API 來支援各種不同的相機模組,號稱是相機界的 Mesa(一個開源的3D/2D圖形加速軟體)。

目前支援的硬體有 Intel IPU3(僅限部分設備), NXP i.MX7, Raspberry Pi 3/4, RockChip RK3399, UVC 網路攝影機和VIMC 虛擬測試設備。

就 Raspberry Pi 而言,libcamera 使我們能夠直接從 ARM 處理器上的開放原始碼驅動相機系統;相對於原本透過 Broadcom GPU 控制相機系統,使用者是無法直接存取的閉源程式碼幾乎完全被繞過,這是最大的好處。

libcamera 的架構由下圖可看出,完全在使用者空間上運作。而 libcamera 為了要相容目前常見的相機架構,例如原生的 V4L2 應用程式可以透過轉接層(Adaptation Layer)接到 libcamera 框架;gstreamer 也可以透過 gstreamer 的相機框架接到 libcamera;Android 應用程式也可透過 Android Camera HAL 接到 libcamera。

圖片來源:libcamera: The Future of Cameras on Linux is Now

libcamera 逐漸成為主流的相機堆疊,主要有以下特色,例如使用 plugin 方式載入(pipeline handler)影像處理演算法(IPA),讓開源和閉源的影像處理演算法都能在受保護的環境下被執行。並且讓開發者可以使用統一的 API 進行應用程式開發,降低嵌入式相機硬體的複雜性。此外,在 libcamera 提供 Adaptation Layer 整合 V4L2 和 gstreamer 和 Android Camera HAL 等主流架構,希望能有更高的相容性。而提供 Python Binding(例如 picamera2)也能讓更多開發者撰寫更多相機應用。支援多相機模組或是單相機模組的多個串流,符合目前複雜的相機架構。還可對每個幀進行控制(per-frame controls)等特性,都是愈來愈多相機支援 libcamera 的原因。


 

libcamera 提供管道方式(Pipeline)和第三方製作的 plugin 通訊。例如 Raspberry Pi 從頭開始開發了自己的一套 ISP 演算法(3A 演算法,包括自動曝光控制 AEC/自動增益控制 AGC/自動白平衡 AWB),並且將這些演算法公開給使用者。一些常見的演算法包括

  • AEC(動曝光控制)/AGC(自動增益控制):這會監控圖像的統計資訊,使相機有適合的曝光。
  • AWB(自動白平衡):這可以校正場景的環境光,使我們眼中看起來是灰色的物體在最終圖像中實際上變成灰色。

這些演算法都是從 ISP 接收統計資訊,並通過管道對每個圖像填入後設資料(metadata),最後後設資料用於更新圖像感測器和 ISP 中的控制參數。以前這些功能是閉源的,並且在 Broadcom GPU 上運作。現在,GPU 只是通過 ISP 硬體改變每一個像素,並且在完成時通知我們。上述的 3A 演算法都是 Raspberry Pi 提供的開源軟體,使用者還可以透過 Camera Tuning Tool 文以自行修改或是替換。

圖片來源:Raspberry Pi Camera Algorithm and Tuning Guide

Raspberry Pi OS 已經更新 libcamera 可完全支援。如果使用 raspios_armhf-2022-09-26 版本,只需要將 Raspberry Pi Camera 3 插入後,更新 libcamera-appskernel

$ sudo apt-get update
$ sudo apt-get install libcamera-apps raspberrypi-kernel

再修改 /boot/config.txt,在檔案最後面加上

dtoverlay=imx708

重開機後,就可以使用 libcamera-hello 預覽新的 Camera 3 效果了!

$ libcamera-hello -t 0 --autofocus-mode continuous


 

libcamera-hello 是 libcamera-apps 的一個指令。而 libcamera-apps 一套基於 libcamera 的小工具,用來取代 raspicam。例如 libcamera-hello 只預覽不做其他動作;libcamera-still 單次拍照,功能和 raspistill 類似;libcamera-vid 視訊擷取,功能和 raspivid 類似;libcamera-raw 取得原始 Bayer 幀,和加上 --raw 參數類似功能。


 

Raspberry Pi Camera 3 介紹 投影片下載

Raspberry Pi Camera 3 介紹

更多照片請參考 台灣 RaspberryPi 社群聚會 #35(樹莓派新產品介紹)相簿

Raspberry Pi Camera 3 參考資料:

#35, camera, event, meetup, mmWave, Raspberry Pi Camera 3, Raspberry Pi 社群聚會 #35 會後資料, Sensor Fusion, 感測器融合, 新產品, 會後資料, 社群聚會

馬上購買 Raspberry Pi Camera 3 標準視角標準視角 NoIR廣角廣角 NoIR

我們很高興能持續舉辦社群聚會,如果大家有想分享的主題,可以來信告訴我們(hi_AT_piepie.com.tw)。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Back to Raspberry Pi Taiwan
has been added to your cart.
Checkout