iT邦幫忙

2022 iThome 鐵人賽

DAY 28
2

當初在 Jetson Nano 於 GTC 發表之時,NVIDIA 也隨之同步發表了一個社群專案 JetBot ,並將硬體材料與軟體範例以開放原始碼方式釋出,運用其低成本與 GPU 加速AI推論之優勢,受到社群相當高度的評價與回響!今天這篇就來一起看看 JetBot 這台 AI 自走車有什麼樣的獨特魅力吧!

https://ithelp.ithome.com.tw/upload/images/20221009/20152064PXCRnnQoa6.png
JetBot (source: NVIDIA YouTube Channel)

硬體指南

JetBot 的硬體零組件可以參考官方的材料清單自行採購零件進行組裝,若以方便起見亦可購買第三方已驗證測試過的套件。以筆者過往的經驗,提供以下幾點硬體上面需要留意之處:

  • 若使用官方提供 3D 列印檔案進行列印,組裝鎖螺絲時須留意規格,避免崩牙。
  • CSI 攝影鏡頭務必選用廣角,避免無法偵測到車前狀況。
  • 馬達驅動板在接線上須留意 Jetson Nano Pin 腳定義,以免功能異常。
  • 行動電源必須有雙 Type A 輸出,且驅動電流至少 2.5A 以上。

軟體指南

若使用 NVIDIA Jetson Nano Dev Kit 可以使用專案提供的 SD Card image 燒錄後直接使用。若是使用 reComputer J1010/J1020 這類量產版本的 Jetson Nano,則需要自行從 Github 專案下載後安裝。即便專案有提供 Docker Image,但是其 JetPack 版本停留在 4.4,和目前主流的 4.6 有些落差,因此不建議使用。(筆者也要注意到 Docker Hub 有第三方 Image 支援 JetPack 4.6,但因為沒有實際驗證過,僅提供此資訊給想要嘗試的朋友XD)

程式範例

在 JetBot 專案中,各範例都是使用 JupyterLab 進行操作,對於入門新手相當友善,在程式碼與說明對照的情況一下, STEP by STEP 即可以完成各項功能應用。

Basic Motion

第一個範例基礎運動控制重點在於驗證軟硬體功能是否都設置正確,譬如馬達驅動與軟體套件等,並且能夠順利地啟動 ipynb 筆記本檔案進行操作。若發現 JetBot 小車的左轉右轉不正確或是無法順利控制,都可以在這階段進行修正。

Basic Motion (source: JetBot Project)
Basic Motion (source: JetBot Project)

Teleoperation

第二個範例遠端遙控需要額外準備一個遊戲手把(如 XBOX 或類 PS 搖桿),將遊戲手把接在 PC 端上面執行此 ipynb 範例後,可以藉由遊戲手把來控制 JetBot 的動態並且拍攝快照。這個範例雖然僅是遙控 JetBot 小車而已,但很有機會可以做二次修改應用在往後自己的專案上來做影像資料的收集喔!

Teleoperation (source: JetBot Project)
Teleoperation (source: JetBot Project)

Collision Avoidance

第三個範例影像避障就開始用的 Edge AI 的推論整合控制小車了!以往的自走車都是依據紅外線或是超音波等感測器來做障礙物偵測,而此範例則是使用 CSI 廣角攝影鏡頭作為感測器,並且收集資料訓練一個影像分類模型,將影像資料分類為有障礙物與沒障礙物兩種類別。JetBot 即時的從攝影鏡頭抓取影像進行 AI 推論,當判讀為有障礙物則連動小車控制進行轉向,反之則讓小車繼續前進。此範例訓練資料不需要太龐大,即可有相當不錯的成果,對於初次接觸 Edge AI 與自走車做整合的學習者,可以藉此獲得高度的成就感!

Collision Avoidance

Road Following

第四個範例道路循線用了前面曾經提到過的影像回歸,在大量道路資料上標記 X-Y 座標,藉此回歸推論出 JetBot 的轉向與油門控制。在這範例中會充分體會到資料標記的正確性對於模型訓練的結果會有多麼巨大的影響。除此之外,在每個不同的道路上所訓練出來的模型是無法互相套用的。以NVIDIA 官方來說使用的是 LEGO 的道路做為場地,而你也可以購買不同場地來訓練模型。但以筆者客家的精神來說,去文具店買牛皮紙跟有色的布膠帶貼一貼也能達到相同的效果喔!(看看下面的範例 XD)

Road Following

Object Following

第五個範例物件跟隨功能是在藉由物件偵測 AI 推論後,可以讓 JetBot 跟隨特定的物件,像是智慧型的購物車一樣XD。但可惜的是官方提供的ssd_mobilenet_v2_coco.engine預訓練模型是基於 JetPack 4.3 版本,和現在這個時間點(2022 Oct.)的主流版本有所落差,因此在執行上可能就沒辦法順利完成了。這部分就有待開發者去做整合了!(也許可以參考筆者前面提到的 YOLOv5)

Object Following (source: JetBot Project)
Object Following (source: JetBot Project)

Community Examples

社群的開發者 abuelgasimsaadeldin 將上述視覺避障與道路循線兩個範例合而為一,在同一個 ipynb 腳本中實踐了兩個專案的整合,這也是托龐大 JetBot 使用者社群的福,讓各種想法都有機會在 JetBot 上實現。

Jetbot-Road-Following-and-Collision-Avoidance
Jetbot-Road-Following-and-Collision-Avoidance

小結

以筆者的經驗來說,不管是自己玩或是帶領學習者一起玩,JetBot 專案的確是 Edge AI 相當容易入門的學習範例,不但範例說明完整,且能有實際的反饋,對於學習來說真的很加分!完全符合 NVIDIA 提到的三大特點:價格實惠、學習容易、好玩有趣!但因為篇幅有限, 加上太忙沒辦法把內容再跑重新一遍 ,對於 JetBot 應用範例的部分僅止於心得與重點提示,若想要了解進一步的資訊可參考 JetBot 官網與其 Github repo。總的來說,筆者非常建議用此專案來學習 Edge AI 喔!真心大推!


上一篇
【Day 27】客製化 YOLOv5 模型 (六):使用 TensorRT 加速推論
下一篇
【Day 29】Jetson Nano Projects
系列文
就用 Jetson Nano 來實作 Edge AI 吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言