Jetson Nano開源應用 Jetbot 實測分享

Jetson -nano 從 2019年4月初開始發行到現在,也快經過了將近三個月的時間,相信大家也快要把 Jetson-nano 各種基本效能都測試得差不多了。那麼接下來,Jetson-nano 可以做什麼應用呢?

在 NVIDIA 官方開源出的各種 Jetson-nano應用中,有個很經典的應用「Jetbot」,讓更多人能夠更方便地,學習如何在Jetson-nano上訓練、推論神經網路技術,以實現各種關於自駕車技術的應用。那麼,到底應該從哪裡取得,Nvidia 開源的Jetbot零件呢?可參考Jetbot 的零件清單

相信大家一定跟小編一樣,非常開心 Nvidia 分享了 Jetbot 的零件清單,不過零件清單中每個零件的取得,有些須從 Amazon找尋、有些又要從 Adafruit 下單、而有些又要從 Sparkfun購買。

等到把 Jetbot 上需要的所有零件都下單完畢後,還要再等一陣子海運時間。漫長的等待時間,讓急性子的小編等不及拉~~~

於是一台可以完整使用 Jetbot 開源程式碼的小車 – 「Jet-falcon 千年鷹 」,就這樣在小編手中誕生啦!

Jet-falcon

Jet-falcon

接下來,我們就來介紹如何使用Jetbot 開源程式碼,與小編自行測試的人臉辨識,在 Jet-falcon上實現吧!

電源測試

首先,因為目前世界各地的網友們在測試時,有發現到 Jetson-nano 對於電源供給的要求較為嚴苛,因此在開始實現各種應用前,我們先來看一下 Jet-falcon 的電源部份。

在一開始製作 Jet-falcon時,為了考慮到後續能夠更新 「JetPack」( Nvidia為了建立人工智慧應用程式,所開發的軟體) ,因此特別設計了兩種電源版本 :

行動電源版本 – 輕巧方便、易於隨時使用

鋰電池版本 – 車體擴展性強韌、模型推論效率佳、方便後續更新 JetPack軟體

其中,行動電源版本,官方建議雙孔輸出共 3A 的規格使用。但小編卻發現了一個重點:MicroUSB 電源供應線的長度

經小編實測,即使是擁有雙孔輸出3A的行動電源,若是 MicroUSB電源線長度超過大約 「 45 公分 」的長度(目前測試結果,實際長度仍需要再多加測試 ),也一樣容易因為壓降過多,導致 Jetson-nano 無法正常執行。

過長的 MicroUSB線將無法正常啟動 Jetson-nano

過長的 MicroUSB線將無法正常啟動 Jetson-nano

因此,在使用一般行動電源,或是一般電源供應器的電源(如樹莓派的專用電源供應器),皆需要特別注意電源線的長度。

相反地,只要線材的長度短於小編目前測試的 「 45公分」MicroUSB電源線,且能夠承受 2A 以上的電流,即使是一般行動電源(需雙孔輸出共 2A 規格 ),也能夠正常使用 Jetson-nano喔!不過要記得將 Jetson-nano的「 功率模式 」,調整成 「 5W 」 喔

行動電源規格

本次實測之行動電源規格

利用 5V/2A 行動電源執行 Jet-falcon,並開啟網頁瀏覽器

利用 5V/2A 行動電源執行 Jet-falcon,並開啟網頁瀏覽器

另外很重要的一點,目前也有非常多朋友們在使用部份HDMI轉 VGA的轉接頭時,Jetson-nano 會無法出現畫面。

經小編實測,使用可外接 MicroUSB電源的轉接器較佳,因可額外供給電源給予轉接器,讓螢幕畫面正常輸出。

下兩圖為使用可外接 MicroUSB電源的HDMI轉 VGA轉接器,與是否接入 MicroUSB電源的實測結果。

「有」使用外接 MicroUSB 外接電源的 HDMI轉 VGA轉接器測試結果

「有」使用外接 MicroUSB 外接電源的 HDMI轉 VGA轉接器測試結果

「無」使用外接 MicroUSB 外接電源的 HDMI轉 VGA轉接器測試結果

「無」使用外接 MicroUSB 外接電源的 HDMI轉 VGA轉接器測試結果

透過此次實測結果,目前認為Jetson – nano 使用轉接器無法輸出畫面的原因之一,或許與 Jetson -nano developer kit 上的 HDMI接口有做相關保護,導致供給轉接器的電壓不足有關,讓螢幕無法輸出畫面。

至於鋰電池版本的 Jet -falcon,則是採用 2S 的鋰電池,規格為5200 mah 、25C ,搭配一組可限制電流輸出量的直流降壓器,並配有一個鋰電池專用警報器,提醒您注意電池的電量。

需要限制電流的主要原因,是防止 Jetson-nano 在功率全開時,某些執行動作(像是使用 cuda推論神經網路 ),讓通過 Jetson-nano developer kit 的瞬間電流過大自動啟動保護裝置形成「死機」的狀態

可限制電流的直流穩壓器平台設計

可限制電流的直流穩壓器平台設計

Jet-falcon設計規格

Jet-falcon 的初版壓克力平台

Jet-falcon 的初版壓克力平台

在設計 Jet-falcon 時,為了降低讓大家尋找安裝機構平台的時間,便在壓克力板材上裁切出了許多孔位。讓使用者可以依照自己的喜好,彈性地調整 Jet-falcon 上的電子零件位置。

您可以

● 自行旋轉 Jetson-nano 四個方位角度安裝

● 自行調整鏡頭架於平台的相對位置,也可自行設計相對應的 3D列印機構裝置

● 較大的圓形孔位讓您放置線材

也可以在不拆除整個 Jet-falcon 平台下,執行下列動作:

● 查看 Jetson-nano的 GPIO腳位

● 調整馬達控制版的母座螺絲

● 調整直流供應器的電壓與電流

另外,為了幫助 Jetson-nano 降低溫度,也特別為他搭配了一組風扇,並且為了之後能夠方便的安裝 M2網路卡,也在安裝風扇的壓克力材料上,預留了兩根天線的孔位。


Jet – falcon 的風扇組裝示意圖

風扇的轉速與風量規格如下:

● 轉速(Speed):9000RPM±10%

● 風量(Airflow):3.24CFM

使用這一組風扇後,Jetson-nano上的散熱片溫度變大幅下降,即使是在執行推論神經網路模型時,溫度也能夠維持在手指能夠觸碰的溫度範圍內。

了解 Jet -falcon 硬體的部分後,下面我們就來實測看看 JetBot的開源程式碼吧!

不論是使用行動電源版,或是鋰電池版本的 Jet – falcon,都建議以遠端連線的方式,操作 Jetson-nano,主要是為了增加 Jetson-nano的使用效率。畢竟外接螢幕時,Jetson-nano 會為了將影像輸出至螢幕,而占用些許運算資源。

根據 Jetbot的開源程式碼,小編成功地透過 Jupyter Notebook ,遠端連線至 Jet-falcon上,並執行了關於 Jetbot中,「 Basic Motion」程式碼,結果顯示於下方的 gif動畫圖。

使用 Basic Motion 程式碼移動的 Jet-falcon影像擷取

使用 Basic Motion 程式碼移動的 Jet-falcon影像擷取

Jetson- nano 支援使用樹莓派的鏡頭設備,來擷取影像畫面。

因此目前在Jet- falcon 上,小編安裝的是樹莓派鏡頭。

小編使用的是 「 collision_avoidance 」 中的 「 live_demo 」部份程式碼, 實測的結果在下方的 gif動畫圖。

使用 「 collision_avoidance 」 中的 「 live_demo 」部份程式碼,測試影像畫面

使用 「 collision_avoidance 」 中的 「 live_demo 」部份程式碼,測試影像畫面

避免摔落實測

Jetbot 的經典使用方法,便是避免碰撞障礙物的實驗。在 「collision_avoidance」 範例程式中,使用遷移式學習( transfer learning ) ,搭配知名的預訓練模型( pre-trained model ),來完成避免碰撞障礙物的實驗。下方的影片,便是 Jet-falcon 使用此種方法,完成避免掉落於桌面的實驗。

 jet-falcon 避免摔落程式實測

人臉辨識

測試完 Jetbot的開源程式碼後,小編也自己測試了「人臉辨識」的功能應用,相關的實驗結果在下方影片中。

人臉辨識功能應用

本次的 Jet – falcon與 Jetbot 實驗到這裡就告一段落啦!

接下來,小編仍舊會持續測試 Jetson-nano的許多應用,包含如何在 Jetson-nano上,使用「 ROS 系統喔」!

另外,大家有沒有發現,在測試影像擷取的實驗中,測試的影像是什呢?其實是 「 Jetson-nano壓克力外殼」喔!