Jetson - nano的開源應用 Jetbot 實測分享

Updated: Jul 4, 2019




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


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

Jetbot 的零件清單 : https://github.com/NVIDIA-AI-IOT/jetbot/wiki/Bill-of-Materials


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

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

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

Jet – falcon : https://www.icshop.com.tw/product_info.php/products_id/27367


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


電源

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

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

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

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

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

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

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

因此,在使用一般行動電源,或是一般電源供應器的電源( 如樹莓派的專用電源供應器 : https://www.icshop.com.tw/product_info.php/products_id/26946 ),皆需要特別注意電源線的長度。

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


本次實測之行動電源規格

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

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

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

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

測試使用的 HDMI轉VGA轉接器 : https://www.icshop.com.tw/product_info.php/products_id/11673

「有」使用外接 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 上的電子零件位置。

您可以

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

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

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

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

  • 查看 Jetson-nano的 GPIO腳位

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

  • 調整直流供應器的電壓與電流。

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

Jet - falcon 的風扇組裝示意圖

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

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

  • 風量(Airflow):3.24CFM

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


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

NVIDIA - AI – IOT , Jetbot : https://github.com/NVIDIA-AI-IOT/jetbot

基本移動

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

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


使用 Basic Motion 程式碼移動的 Jet-falcon

影像擷取

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

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

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


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

避免碰撞

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


人臉辨識

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



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

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

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

Jetson-Nano 壓克力外殼:https://www.icshop.com.tw/product_info.php/products_id/27373

Jet-falcon : https://www.icshop.com.tw/product_info.php/products_id/27367

創客萊吧MakerLab

高雄市左營區博愛二路202號B1F        

0989-250-580