RoBoard魔人的機器人日誌

2019/5/8

[Jetson Nano] 用 ImageNet 對圖像進行分類

大家好,

今天本魔要繼續和大家分享如何用 Jetson Nano 來做圖像分類,

這是上次我們安裝的 Hello AI World 其中一個範例,

首先我們要將目錄切換至我們上次編譯完的目錄下,開啟 Terminal 視窗並輸入:
$ cd jetson-inference/build/aarch64/bin
然後執行 imagenet-console 這支程式,輸入:
$ ./imagenet-console orange_0.jpg output_0.jpg
第一個參數 orange_0.jpg 是你要讓他進行分類的圖片,

第二個參數 output_0.jpg 則是你要匯出的圖片。

在第一次運行程序時,TensorRT 可能需要幾分鐘優化網絡,

但運行完成後,優化的網絡將會存起來,因此之後的運行速度會比較快。

完成後各位可以到資料夾下看看是不是多了一個 output_0.jpg 的圖片,


或是各位可以輸入:
$ display orange_0.png
也可以看到輸出後的圖片:


可以看到左上角它會顯示分類的名稱與相似度,

很明顯這是一顆柳橙,

我們可以再匯入其它圖片試試,
$ ./imagenet-console granny_smith_1.jpg output_1.jpg


一樣可以用 display 指令來開啟圖片:
$ display output_1.png

很明顯這是一顆青蘋果,

它的英文讓本魔困惑了一下,Granny Smith?史密斯奶奶?

結果上了 wiki 查了一下原來是澳洲青蘋,

以下是 wiki 的描述:
它是在1868年在澳大利亞一次無意中由一位「老奶奶」瑪麗亞·安·舍伍德·史密斯(Maria Ann Sherwood Smith)繁殖的。因此其英文名成為紀念這位史密斯老奶奶(Granny Smith)

原來是個人名阿!長知識了呢!



本篇的教學就到此為止啦~,

各位可以嘗試用其它圖片來測試看看哦!

喜歡這個系列的話可以追蹤我的blogger哦,

本魔近期都會不定時更新此系列教學,

如果有疑問或任何指教也歡迎在下方留言提出哦!
Share:

2019/5/7

[Jetson Nano] 官方範例介紹與安裝

大家好,

今天本魔要和大家分享 NVIDIA 在 Jetson Nano 上的開源範例。

我們可以在 NVIDIA 的官方教學中找到兩個範例,

一個是 JetBot


它是用 Jetson Nano 控制的一台開源機器小車。

而另一個就是我將會拿來做系列教學的 Hello AI World

在此系列你將能夠操作 Jetson Nano 做出一系列目前最夯的 AI 深度學習的範例,

雖然不需寫程式,但能讓我們快速的瞭解如何使用這種 AI 程式。

那就開始今天的正題吧!

首先第一步,當然就是要安裝啦~!

在這之前我們可以看到 Github 下的教學要我們先安裝 JetPack 這個開發套件,

但我們並不需要做這一步哦,

各位有印象先前本魔有教各位製作 Jetson Nano 開機碟吧?

而這個 Jetson Nano Developer Kit SD 卡映像檔已經包含了這個 JetPack開發套件了,

所以使用官方 Imgae 的 Jetson Nano 系統上並不需要去做安裝囉!

「那我們今天就可以下課囉!」 (被毆

開玩笑的啦~本魔怎麼可能那麼黑心呢?

我們來下載原始碼並安裝吧!

我們在鍵盤上按下 Ctrl + Alt + T 來開啟 Terminal 視窗


首先我們要安裝 CMake 這隻程式,輸入:
$ sudo apt-get install git cmake
在使用 sudo 指令時會被要求輸入密碼哦,

這時候只要直接鍵入並按 ENTER 就可以了,

接下來系統就會開始下載並安裝 CMake 了。

接下來我們要將 Github 上的源始碼給 Clone 下來,

這一步會花較多時間,畢竟要將整隻程式下載下來,輸入:


$ cd ~/
$ git clone https://github.com/dusty-nv/jetson-inference
$ cd jetson-inference
$ git submodule update --init
完成後你會發現 Home 目錄下多了一個 jetson-inference 資料夾,

裡面包含了我們之後會用到的原始碼。

接下來我們在裡面建造一個資料夾 build,並執行 CMake:
$ mkdir build
$ cd build
$ cmake ../


執行 CMake 也是需要一點時間呢,

這隻程式將會幫忙生成 Makefile。

有了 Makefile ,當然就要來編譯並進行安裝啦~,
$ make
$ sudo make install
這兩個指令一樣會花較多時間。

完成 make

完成 make install

完成後基本上就可以準備來玩範例囉!

你會發現在 build 資料夾下多了許多檔案,

我們甚至可以直接開啟範例程式的原始碼來看看他們做了些什麼,

例如我們可以輸入:
$ gedit aarch64/include/imageNet.h
這可以讓我們看到 imageNet 這個圖像辨識程式的標頭檔,

或是也可以輸入:
$ gedit aarch64/include/detectNet.h
來看看 detectNet 這個圖像偵測的標頭檔。

我們可以稍微理解一下這些 AI 程式的架構,

程式碼的注解也相當完整呢!



本篇的教學就到此為止啦~,

下一篇將會和大家分享如何用這個 Hello AI World 辨識圖片中的物體哦!

喜歡這個系列的話可以追蹤我的blogger哦,

本魔近期都會不定時更新此系列教學,

如果有疑問或任何指教也歡迎在下方留言提出哦!
Share:

2019/5/3

[教學] 在Jetson Nano上安裝 ROS 系統

大家好,

今天要和大家分享如何在 Jetson Nano 上安裝 ROS,

畢竟這是本魔要學習的課題嘛~。

ROS上支援 Ubuntu 18.04 的版本為 ROS Melodic Morenia

此版本是 2018 年 5 月釋出的,並且將會支援到 2023 年的 5 月。

為了安裝 ROS,首先我們要在鍵盤上按下 Ctrl + Alt + T 來開啟 Terminal 視窗,



啟動後輸入指令,讓 Jetson Nano 接受 packages.ros.org 的軟體:
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
之後新增 apt 金鑰,輸入:
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
並更新 apt,輸入:
$ sudo apt update
接下來就可以安裝 ROS 啦!在此安裝的是桌面版,輸入:
$ sudo apt install ros-melodic-desktop
在此注意一下:
雖然 ROS Desktop Full 是個更完整版本,但不建議用於嵌入式平台,
因為 2D / 3D 的模擬器都將同時安裝上去,這會使 ROM 佔用太多空間,
並且可能會因為計算量太大而無法在 Jetson Nano 上使用。

接下來做 rosdep 的初始化設定,輸入:
$ sudo rosdep init 
$ rosdep update
並且設置環境變數,輸入:
$ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc 
$ source ~/.bashrc
到此為止 ROS 算是安裝完成囉!

但好像沒什麼實際感對吧?

那我們來跑個 ROS 的控制烏龜範例吧!

首先我們要安裝 turtlesim 功能包,輸入:
$ sudo apt install ros-melodic-turtlesim
安裝完成後我們需要按下 Ctrl + Alt + T 三次,開啟三個 Terminal 視窗,

首先第一個 Terminal 視窗,我們要創建 ROS Master 節點,輸入:


$ roscore
接著在第二個 Terminal 視窗,我們要開啟 turtlesim 的模擬小烏龜節點,輸入:
$ rosrun turtlesim turtlesim_node
最後在第三個 Terminal 視窗,我們要開啟 turtlesim 的鍵盤控制節點,輸入:
$ rosrun turtlesim turtle_teleop_key
最終你將會看到這樣的畫面,


在鍵盤控制節點的視窗點擊方向鍵即可控制小烏龜移動囉!


看得出來本魔畫的是什麼嗎XD?



本篇的教學就到此為止啦~,

喜歡這個系列的話可以追蹤我的blogger哦,

本魔近期都會不定時更新此系列教學,

如果有疑問或任何指教也歡迎在下方留言提出哦!
Share:

2019/5/2

[教學] 製作 Jetson Nano 開機碟

大家好,

今天本魔要來和大家分享如何製作一個 Jetson Nano 專用的開機 MicroSD 卡,

教學基本上與官方一致,如果不是英文苦手可以直接至官網學習

因為本魔的電腦是使用 Windows 作業系統,所以以下教學僅適用於 Windows,

如果有強烈需求請於下方留言,本魔會視情況增加其它系統的安裝教學。

首先我們需要以下的東西:

  • MicroSD 卡 (最低16GB)
  • MicroSD 卡讀卡機
  • USB 鍵盤滑鼠
  • 電腦顯示器(HDMI 或 DP)
  • 網路線或 USB WIFI 提供上網
  • Micro-USB 電源(5V⎓2A)
  • 一台電腦

接著下載並安裝 SD Memory Card formatter

安裝完後將 MicroSD 卡用讀卡機接上電腦,



開啟 SD Card Formatter 應用程式,你會看到這樣的畫面:


選取 MicroSD 卡的磁碟並直接點選 Format 選項,其餘設定使用預設即可。


點選是(Y),之後將會開始進行格式化。

接下來我們要準備將映像檔燒錄至 MicroSD 上,


並且安裝並執行 Etcher


首先選取方才我們下載的 Jetson Nano Developer Kit SD 卡映像檔,


接著選取 MicroSD 卡的磁碟,


選取完成後就可以按下 Flash 開始燒錄了!


過程需要花費一點時間,各位可以先去泡個茶來喝🍵。

完成後就可以將 MicroSD 卡戳上 Jetson Nano 了,

還記得插槽的位置嗎?

在 SoC Module 的背面哦!


然後接上鍵盤滑鼠與網路以及 Micro-USB 電源,

啟動後就可以看到 NVIDIA 的開機畫面,


接下來會有一連串的設定,

照著輸入即可,建議系統選用英文,各位若是有需要再改成中文,

否則在 Terminal 視窗下要切換中文路徑會非常麻煩。

閱讀過 licenses 後選取我同意並繼續

系統語言

鍵盤設定

時區設定

名稱與密碼,建議設置容易輸入的密碼
因為使用 sudo 指令時會需要經常性輸入密碼


系統重開之後就可以登入 Ubuntu 的作業系統囉!


下面這些介紹直接 Next 關掉就可以了!



可以看到在 Jetson Nano 上的系統是 Ubuntu 18.04 LTS,並且已經預先安裝好一些開發套件了!




本篇的教學就到此為止啦~,

喜歡這個系列的話可以追蹤我的blogger哦,

本魔近期會不定時更新此系列教學,

如果有疑問或任何指教也歡迎在下方留言提出哦!
Share:

2019/4/29

[開箱] 寒暄與 Jetson Nano 開箱分享

哈囉各位,許久不見,

距離上一次發文章也過了兩年了,

可能有人會問:「魔人跑去哪裡逍遙啦?怎麼這麼久沒有技術分享了?」

如果有在關注 86Duino 的就會發現,本魔這一兩年都在用 86ME Mk-II 與 86Scratch

甚至還開了教學影片與直播(86ME小學堂86Scratch上學趣),

當然還有繼續做一些機器人的專案

算是進了精神時光屋修練了一陣子!

寒暄至此,如果有更多問題可以在下方留言問本魔哦。



接著就是進入今天的主題啦!

因為最近本魔多了一些課題學習,

那就是機器人作業系統 Robot Operating System (簡稱 ROS )

畢竟這是機器人當前的趨勢,為了要跟上腳步,所以必須要好好的苦讀一番,

我的桌上甚至多了兩本相關書籍呢!


左邊那本是古月大大寫的精華,若有興趣可以至古月居學習。

右邊那本是一位印度 Qbotics Labs 的創辦人兼 CEO,Lentin Joseph寫的。

當然今天不是要介紹這兩本書,

而是本魔最近入手的這片 Jetson Nano,


這是一片 NVIDIA 推出的 AI 系統開發專用的控制板,

主要可以拿來做一些 AI 的視覺計算與簡單的嵌入式應用。

可以看到官方的影片,將 Jetson Nano 拿來一些視覺辨識的應用:



接下來看一下實體,


比起本魔之前不小心撿到的 Jetson TK1,小了非常多,並且是無風扇的設計呢!



Jetson Nano 的規格如下:

GPUNVIDIA Maxwell 架構配備 128 個 NVIDIA CUDA® 核心
CPU四核心 ARM® Cortex®-A57 MPCore 處理器
記憶體4 GB 64-bit LPDDR4
儲存空間16 GB eMMC 5.1 快閃記憶體
影片編碼4K @ 30 (H.264/H.265)
影片解碼4K @ 60 (H.264/H.265)
相機12 個通道 (3x4 或 4x2) MIPI CSI-2 DPHY 1.1 (1.5 Gbps)
連線能力Gigabit 乙太網路
顯示器HDMI 2.0 或 DP1.2 | eDP 1.4 | DSI (1x2) 2 個同步
UPHY1 個 1/2/4 PCIE、1 個 USB 3.0、3 個 USB 2.0
I/O1 個 SDIO / 2 個 SPI / 6 個 I2C / 2 個 I2S / GPIO
大小69.6 mm x 45 mm
機械規格260-pin 邊緣接頭

我們在購買時,賣家也附贈了一張 MicroSD 卡與 5V Adapter:


有 2.5A 呢!應該蠻耐操的!

MicroSD 卡的插槽有點隱密,在 SoC Module 的背面:


和 86Duino 一樣是 MicroSD 彈簧卡榫。



可能有人會好奇,魔人怎麼要忽然介紹這片控制板呢?

該不會是在業配阿?

其實並不是,只是因為這片 Jetson Nano 是今年剛推出不久,

網上其實資源並不多,更別說是中文相關的分享、交學文章,

而本魔碰巧因為需要學習 ROS 與 Jetson Nano 相關的一些應用,

所以才想著能夠秉持著無私的精神和大家分享,以及互相學習的!

魔人:「子民們!還不奉上你們的膝蓋!」  (被毆



今天開箱大概到這裡啦~,

下一篇將會介紹如何製作 Jetson Nano 開機碟哦!
Share:
技術提供:Blogger.

追蹤者