【教學】Intel RealSense LR200的SDK安裝以及範例教學(Raspberry Pi、Jetson Nano、Tinker Edge R )

Intel RealSense LR200的範例程式,在Jetson Nano、Raspberry Pi、Tinker Edge R上都可以安裝使用。

本篇文章將教你如何在Jetson Nano、Raspberry Pi、Tinker Edge R上安裝Intel RealSense LR200 SDK,並且介紹範例程式(C/C++)。這個型號沒有提供Python範例程式,不過沒有C/C++基礎的人也可以順利執行。閱讀本篇文章需要對Terminal以及Linux常見指令有基礎了解。

 

本文大綱

  • 認識 Intel RealSense LR200
  • 在不同開發板上安裝RealSense LR200 SDK
    • Raspberry Pi 4
    • Jetson Nano & Tinker Edge R
  • 範例程式介紹
    • 對齊-cpp-alignimages
    • 回傳函式-cpp-callback & cpp-callback-2
    • 基礎影像串流組圖-cpp-capture
    • 使用者互動介面-cpp-config-ui
    • 列出可用項目-cpp-enumerate-devices
    • 儲存影像-cpp-headless
    • 同步顯示多裝置影像-cpp-multicam
    • 三維點雲-cpp-pointcloud
    • 選擇顯示組合-cpp-restart
    • 低延遲的多執行緒範例-cpp-stride
    • 教學範例一:取得深度資訊-cpp-tutorial-1-depth
    • 教學範例二:顯示四種影像組圖-cpp-tutorial-2-streams
    • 教學範例三:顯示三維點雲-cpp-tutorial-3-pointcloud.cpp
作者/攝影 蔡雨錡/CAVEDU教育團隊
時間 1.5hr
難度 ★★☆☆☆
材料表

 

認識Intel RealSense LR200

Intel RealSense LR200 是 RealSense攝影機家族的成員之一,推出時間為2016年Q3,可用距離範圍為0.5m-3.5m,解析度為480×360@60fps,彩色影像的單獨解析度可以到1920×1080。可以點此看Intel RealSense攝影機的歷代成員,並且可以點選任意想要比較的成員進行規格比較。

本篇文章著重在安裝SDK跟範例程式介紹,想要了解更多細節可以參考RealSense LR200 SDK的Github

 

在不同開發板上安裝RealSense LR200 SDK

以下指令皆為在Terminal中執行。如果你之前已經為了RealSense D435(i)安裝過librealsense,由於並不相容於LR200,必須重新安裝。

此函式庫將安裝在/ usr / local / lib;header files安裝在/ usr / local / include;

範例、教學、測試程式位於/ usr / local / bin。

 

1. Raspberry Pi 4

Step1. 同步apt軟體資料庫、軟體升級、系統升級 (這個步驟可以處理一些軟體相依/相斥的問題)

$ sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Step2. 安裝一些librealsense需要的套件

$ sudo apt-get install libusb-1.0-0-dev pkg-config libglfw3-dev git cmake
$ sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev

 

Step3. 從Github下載 legacy Realsense SDK

$ git clone -b legacy --single-branch 

https://github.com/IntelRealSense/librealsense.git

Step4. 編譯並安裝librealsense

$ mkdir build && cd build
$ cmake ../ -DBUILD_EXAMPLES=true
$ make && sudo make install

2. Jetson Nano & Tinker Edge R

Step1. 同步apt軟體資料庫、軟體升級、系統升級 (這個步驟可以處理一些軟體相依/相斥的問題)

$ sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Step2. 安裝一些librealsense需要的套件

$ sudo apt-get install libusb-1.0-0-dev pkg-config libglfw3-dev git 

Step3. 從Github下載 legacy Realsense SDK

$ git clone -b legacy --single-branch 

https://github.com/IntelRealSense/librealsense.git

Step4. 編譯並安裝librealsense

$ mkdir build && cd build
$ cmake ../ -DBUILD_EXAMPLES=true
$ make && sudo make install

範例程式介紹

如下圖中所示,完成安裝後,你可以在~/librealsense/examples資料夾中找到範例程式。

接下來的內容為範例程式在Jetson Nano B01開發板上測試的成果,程式的介紹順序按照Github中的字母排列順序。

想要執行範例程式時,只要在Terminal中輸入該範例名稱即可順利執行,例如想要執行cpp-capture.cpp這個程式,輸入以下指令即可執行。

$ cd ~/librealsense/examples
$ cpp-capture

A.對齊-cpp-alignimages

顧名思義這個程式會對齊彩色影像、深度影像、紅外光影像,因為兩個影像的涵蓋範圍略有差異,畢竟鏡頭位置不一樣。從左至右,從上到下顯示的影像順序分別為彩色影像、彩色影像對齊深度影像、紅外光影像對齊深度影像、深度影像對齊彩色影像、深度影像、深度影像對齊紅外光影像。

B.回傳函式-cpp-callback & cpp-callback-2

cpp-callback提供了深度跟彩色資訊(寬、高、影像格式、時間戳記)的回傳函式,如下圖。

cpp-callback-2中有寫這是Multi-threading範例三,執行後會在Terminal中顯示使用的硬體名稱、序列編號跟韌體版本。另外會跳出組圖畫面,從左至右,從上到下顯示的影像順序分別為深度影像、彩色影像、紅外線影像一、紅外線影像二。回傳函式會提供影像解析度以及是第幾個stream等資訊。

C.基礎影像串流組圖-cpp-capture

執行程式後可以看到跳出四張組圖的影像串流,從左至右,從上到下顯示的影像順序分別為深度影像、彩色影像、紅外線影像一、紅外線影像二。Terminal中顯示組圖中的每張影像資訊(影像類型、解析度、FOV、有沒有變形校正)

D.使用者互動介面-cpp-config-ui

由於最新的RealSense Viewer讀不到LR200的資訊,這個程式可以想成是初代/簡化版本的使用者互動介面。可以調整的項目有明亮度、對比、白平衡、多項深度閾值等等,有興趣的人可以全部調整看看。顯示的畫面是基於cpp-capture程式延伸改寫的。

E.列出可用項目-cpp-enumerate-devices

非常實用的程式,可以列舉所有可用的項目,執行後能依序獲得以下資訊:

  • 獲取系統上當前存在的設備清單
  • 顯示每項設備名稱和資訊(序列編號、韌體版本等)
  • 顯示每項設備支持哪些選項
  • 顯示每項設備支持哪些影像串流以及個數
  • 顯示每種影像串流的每種可用模式(寬度、高度、格式、幀率、以及在此模式下啟用影像串流所需的設定)
  • 取得內建函式
  • 檢視水平跟垂直的FOV(Field Of View)

像一份直接攤開來的規格書。下圖為執行後的成果。

F.儲存影像-cpp-headless

這個範例會取得30幀並將最後一幀的彩色影像、深度影像、兩張紅外線影像分別寫入程式同資料夾下,如下圖。

對於檢測沒有辦法顯示圖片的嵌入式系統很有用。

G.同步顯示多裝置影像-cpp-multicam

如果專題中需要用到至少兩個LR200,就可以使用這個程式來檢視所有LR200的彩色影像跟深度影像。

由於手邊只有一個LR200,所以只有一直排的影像;如果有n個LR200,就可以顯示n直排的影像(上方為彩色影像,下方為深度影像)。

H.三維點雲-cpp-pointcloud

執行程式後,顯示的三維點雲畫面如下圖。左上角為影像的fps。可以使用滑鼠進行視角旋轉。令人感動的是旋轉視角的過程十分順暢不卡頓。

I.選擇顯示組合-cpp-restart

Intel很貼心地準備了20種影像顯示組合供使用者選擇,有單圖/多圖、不同解析度、不同格式等設定,詳細可以看程式碼。執行程式後會按順序顯示這20種影像顯示組合。下方即為其中一種,顯示過程中也可以看每張圖片左上角的細節設定。

J.低延遲的多執行緒範例-cpp-stride

這是個多執行緒、低延遲、有回傳函式、零複製的範例,為了縮小延遲感會適當地丟掉多餘的幾幀影像。程式中設定最多只可以有一幀影像在排隊,排超過的就捨棄。

執行後顯示影像如下圖,此程式重點在程式碼

 

 

K.教學範例一:取得深度資訊-cpp-tutorial-1-depth

這個教學範例就是D435i第一個教學範例的前身了,用ASCII碼 ” .:nhBXWW”來代表深度,下圖因為天花板的燈太遠,所以只有用到前兩個的” ”跟”.”。

L.教學範例二:顯示四種影像組圖-cpp-tutorial-2-streams

基本上跟cpp-capture差不多,但深度影像的套用的假彩色變成紅色色階。從左至右,從上到下顯示的影像順序分別為深度影像、彩色影像、紅外線影像一、紅外線影像二。

M.教學範例三:顯示三維點雲-cpp-tutorial-3-pointcloud.cpp

跟cpp-pointcloud的顯示略不同以外,code比較簡潔少了40幾行,一樣是顯示三維點雲資訊。

其中有一個cpp-motion-module範例沒有講是因為LR200沒有motion frame,所以這個範例無法執行。

手邊有LR200可以試著修改這些範例玩玩看,有任何有趣的相關主題都歡迎在留言區跟大家分享!

 

參考資料:

 

發佈留言

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