邊緣計算原理與JETSON平臺開發(fā) 課件 第3-5章 JETSON嵌入式平臺、JETSON平臺開發(fā)基礎(chǔ)、JETSON平臺開發(fā)實戰(zhàn)_第1頁
邊緣計算原理與JETSON平臺開發(fā) 課件 第3-5章 JETSON嵌入式平臺、JETSON平臺開發(fā)基礎(chǔ)、JETSON平臺開發(fā)實戰(zhàn)_第2頁
邊緣計算原理與JETSON平臺開發(fā) 課件 第3-5章 JETSON嵌入式平臺、JETSON平臺開發(fā)基礎(chǔ)、JETSON平臺開發(fā)實戰(zhàn)_第3頁
邊緣計算原理與JETSON平臺開發(fā) 課件 第3-5章 JETSON嵌入式平臺、JETSON平臺開發(fā)基礎(chǔ)、JETSON平臺開發(fā)實戰(zhàn)_第4頁
邊緣計算原理與JETSON平臺開發(fā) 課件 第3-5章 JETSON嵌入式平臺、JETSON平臺開發(fā)基礎(chǔ)、JETSON平臺開發(fā)實戰(zhàn)_第5頁
已閱讀5頁,還剩251頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第3章JETSON嵌入式平臺3.1

JETSON平臺簡介3.2

JETSON平臺硬件資源介紹3.3

JETSON平臺軟件資源介紹

NVIDIAJETSON嵌入式平臺(簡稱JETSON平臺)提供的性能可提高自主機器軟件的運行速度,而且功耗更低。JETSON平臺的每個系統(tǒng)都是一個完備的模塊化系統(tǒng)(SOM),具備CPU、GPU、電源管理集成芯片(PowerManagementIntegratedCircuit,PMIC)、動態(tài)隨機存儲器(DynamicRandomAccessMemory,DRAM)和閃存,可節(jié)省開發(fā)時間和資金。JETSON平臺還具備可擴展性,用戶只需要選擇適合應(yīng)用場合的SOM,就能構(gòu)建自定義系統(tǒng),滿足特定的應(yīng)用需求。

3.1JETSON平臺簡介

2015年11月,NVIDIA嵌入式開發(fā)板家族迎來了第一個成員——JETSONTX1,其設(shè)計緊湊的、只有50?mm?×?90?mm的JETSONTX核心板包含了NVIDIATegraX1core、板載Wi-Fi和Bluetooth、帶風(fēng)扇的散熱片和工業(yè)連接器。JETSONTX1開發(fā)模組旨在針對機器人、無人機等的應(yīng)用,其核心模組和開發(fā)人員套件外形如圖3.1所示。

圖3.1JETSONTX1的核心模組和開發(fā)人員套件外形

2017年3月,JETSONTX1的升級版JETSONTX2問世。JETSONTX1的配置是TegraX1+4GBLPDDR4,GPU是擁有256個CUDA核心的NVIDIAMaxwell架構(gòu),而JETSONTX2則升級為TegraParker處理器,CPU部分也升級為NVIDIAPascal架構(gòu),同樣是擁有256個CUDA核心,但其性能提高了50%。JETSONTX2可在像信用卡大小的模塊中提供1萬億次浮點計算性能,其核心模組和開發(fā)人員套件外形如圖3.2所示。

圖3.2JETSONTX2的核心模組和開發(fā)人員套件外形

2018年6月,一款重量級的JETSON家族成員JETSONXavier問世。作為NVIDIAISAAC平臺的核心,JETSONXavier是全球首款專為機器人設(shè)計的智能芯片。它有6個處理器,包括1個VoltaTensorCoreCPU、1個8核ARM64CPU、2個NVIDIA深度學(xué)習(xí)加速器、1個圖像處理器和1個視頻處理器,每秒可執(zhí)行30萬億次操作,其處理能力與配備了10萬美元GPU的工作站大致相當(dāng),但功耗僅為30?W。JETSONXavier的核心模組如圖3.3所示。

圖3.3JETSONXavier的核心模組

019年3月,在硅谷召開的GTC(GPUTechnologyConference)大會上,NVIDIA的CEO黃仁勛又發(fā)布了一款輕量級的、為機器人開發(fā)人員量身定制的工具套件——

JETSONNano。JETSONNano搭載了4核Cortex-A57處理器,CPU則是擁有128個CUDA核心的NVIDIAMaxwell架構(gòu),可以提供472千兆浮點計算性能,而功耗卻低至5?W。雖然其計算能力不及JETSONXavier和JETSONTX2,但其價格僅為JETSONXavier的1/7,在各種提供邊緣計算功能的開發(fā)板中具有最高性價比。JETSONNano的核心模組和開發(fā)人員套件外形如圖3.4所示。

圖3.4JETSONNano的核心模組和開發(fā)人員套件外形

NVIDIA迄今為止推出的4款嵌入式人工智能平臺的參數(shù)及性能對比見表3.1。

3.2JETSON平臺硬件資源介紹3.2.1JETSON平臺網(wǎng)絡(luò)接口JETSON平臺在硬件資源方面不僅具有USB、HDMI、以太網(wǎng)等常規(guī)輸入/輸出(I/O)接口,還具有豐富的硬件可擴展接口資源,為開發(fā)人員進行擴展應(yīng)用提供了無限可能。開發(fā)人員不僅可以通過UART(異步收發(fā)傳輸器)、GPIO(通用型輸入/輸出)、I2C(總線)等外設(shè)接口實現(xiàn)其他單片機、嵌入式系統(tǒng)的所有功能,還可以通過自身強大的性能,勝任其他單片機、嵌入式系統(tǒng)無力支撐的高數(shù)據(jù)密度業(yè)務(wù)和高處理實時性業(yè)務(wù),如智能機器人、無人駕駛汽車等。

1.?JETSON平臺的網(wǎng)絡(luò)接口

JETSON平臺支持千兆有線網(wǎng)絡(luò)接口,而且網(wǎng)絡(luò)接入速度穩(wěn)定,因此,在項目開發(fā)過程中推薦采用有線方式接入網(wǎng)絡(luò)。通常,路由器端都是通過DHCP(動態(tài)主機配置協(xié)議)方式設(shè)置自動分配IP,所以只要用網(wǎng)線把JETSON平臺連接到路由器上即可實現(xiàn)上網(wǎng)。

(1)基于M.2的無線網(wǎng)絡(luò)接口。M.2接口是Intel推出的專為便攜設(shè)備量身定制的一種主機接口方案,可以兼容多種通信協(xié)議,如SATA(串口硬盤)、PCIe、USB、HSIC(高速集成電路)、UART、SMBus(系統(tǒng)管理總線)等。M.2接口主要有兩方面的優(yōu)勢:

第一是速度優(yōu)勢。

第二是體積優(yōu)勢。

(2)?IntelWireless-AC8265網(wǎng)卡。目前在JETSON設(shè)備上官方推薦的M.2接口的無線網(wǎng)卡是IntelWireless-AC8265,其外形如圖3.5所示。

圖3.5IntelWireless-AC8265無線網(wǎng)卡的外形

IntelWireless-AC8265網(wǎng)卡的無線接入功能和藍牙接入功能必須插接天線才能正常使用,所支持的天線有兩種:一種是FPC軟排線天線,帶3M膠,可隨意粘貼固定;另一種是膠棒天線,在外殼上需要有固定裝置,如圖3.6所示。用戶可以根據(jù)實際情況選擇使用這兩種天線。圖3.6IntelWireless-AC8265無線網(wǎng)卡天線

①在JETSONNano上安裝M.2接口無線網(wǎng)卡。

JETSONNano使用M.2接口連接設(shè)備需要拆卸開發(fā)板,一旦操作有誤,就有可能損壞開發(fā)板,而這種人為損壞不在保修范圍內(nèi),所以用戶在動手前一定要謹慎!

拆卸過程:先將JETSONNano核心模組(見圖3.7)的固定螺絲旋轉(zhuǎn)取下,然后用雙手按壓松脫核心模組兩端的固定卡扣,將核心模組翻轉(zhuǎn)后脫離連接器。

安裝過程:用手指將天線按壓到無線網(wǎng)卡上,再將開發(fā)板上M.2接口的螺絲擰下,把無線網(wǎng)卡插至該接口上,用剛剛擰下的螺絲將無線網(wǎng)卡固定好后,重新將JETSONNano核心模組固定到開發(fā)板上。

圖3.7JETSONNano的核心模組

②在JETSONXavier上安裝M.2接口無線網(wǎng)卡。

在JETSONXavier上,M.2接口無線網(wǎng)卡的安裝稍微容易一些,無須拆裝模組,只需將JETSONXavier底部朝上放置,即可看到其連接無線網(wǎng)卡的M.2接口。

安裝過程:將JETSONXavier底部朝上放置,將JETSONXavier底部連接無線網(wǎng)卡的M.2接口上的螺絲擰下,用手指將天線按壓到無線網(wǎng)卡上,再將無線網(wǎng)卡插至JETSONXavier底部的M.2接口上,用剛剛擰下的螺絲將無線網(wǎng)卡固定好即可。

2.基于USB的無線網(wǎng)絡(luò)接口

和M.2接口相比,通過USB方式接入無線網(wǎng)卡的接口操作簡單,只需插入即可。由于L4T平臺(JETSON平臺定制的Linux操作系統(tǒng),即Ubuntu定制款)的兼容性問題,并不是所有的USB接口的無線網(wǎng)卡都能即插即用。NVIDIA官方推薦的USB接口無線網(wǎng)卡是EdimaxEW-7811Un,如圖3.8所示。

圖3.8EdimaxEW-7811Un無線網(wǎng)卡

3.接入無線網(wǎng)絡(luò)及設(shè)置無線熱點

連接好無線網(wǎng)卡后,用戶可以在桌面上設(shè)置進入無線網(wǎng)。用鼠標點擊桌面上的“網(wǎng)絡(luò)連接”圖標,在列出的無線網(wǎng)絡(luò)中點擊可用的無線熱點,在彈出的對話框中輸入該無線熱點的密碼并點擊確認,即可將JETSON設(shè)備接入互聯(lián)網(wǎng)。

在有些實際應(yīng)用場景中,可能并不需要將JETSON設(shè)備接入廣域網(wǎng)絡(luò),但是需要讓其他移動設(shè)備和JETSON設(shè)備互連。這時將JETSON設(shè)備設(shè)置為熱點是一個不錯的備選方案。

將JETSON設(shè)備設(shè)為熱點的操作步驟如下:

(1)用鼠標點擊桌面上的“網(wǎng)絡(luò)連接”圖標,在彈出的菜單中選擇“EditConnections...”菜單項,再在彈出的“NetworkConnections”對話框中點擊左下角的“+”按鈕。

(2)在彈出的連接類型選擇對話框中下拉選擇“Wi-Fi”,點擊“Create...”按鈕。

(3)在彈出的網(wǎng)絡(luò)連接對話框中,修改“Connectionname”為“MyHotspot”,在“Wi-Fi”頁面中填寫“SSID”為“Nano”,選擇“Mode”為“Hotspot”,選擇“Device”為“wlan0(08:BE:AC:06:3B:38)”,切換至“Wi-FiSecurity”頁面,選擇“Scurity”為“WEP40/128bitKey(HexorASCII)”,填寫“Key”為相應(yīng)密碼,如“12345”,點擊“Save”按鈕即可。

(4)再用鼠標點擊桌面上“網(wǎng)絡(luò)連接”圖標,在彈出的菜單中選擇“ConnecttoHiddenWi-FiNetwork”菜單項,在彈出的連接到隱藏網(wǎng)絡(luò)對話框中選擇“Connection”,修改為之前創(chuàng)建的“MyHotshot”,點擊“Connect”按鈕。

(5)片刻后,在系統(tǒng)桌面的右上角會顯示“YouarenowconnectedtotheWi-Finetwork‘Nano’.”的字樣,說明SSID為“Nano”的熱點已經(jīng)成功創(chuàng)建了。

一般來說,當(dāng)前機器的IP應(yīng)該是“”這時就可以用其他移動設(shè)備搜索SSID為“Nano”的無線網(wǎng)絡(luò),并使用所設(shè)定的密碼接入該無線熱點網(wǎng)絡(luò)中,接入設(shè)備就可以通過當(dāng)前機器的IP和當(dāng)前機器進行網(wǎng)絡(luò)通信。

3.2.2JETSON平臺外設(shè)接口

JETSON平臺的外設(shè)接口有多種,下面將詳細介紹不同版本JETSON平臺的外設(shè)接口以及其中的重要接口。

1.外設(shè)接口圖

1)?JETSONNano開發(fā)板套件的外設(shè)接口

JETSONNano開發(fā)板套件的前視圖如圖3.9所示,頂視圖如圖3.10所示。

圖3.9JETSONNano開發(fā)板套件的前視圖

圖3.10JETSONNano開發(fā)板套件的頂視圖

2)?JETSONTX2開發(fā)板套件的外設(shè)接口圖

JETSONTX2開發(fā)板套件的頂視圖如圖3.11所示。圖3.11JETSONTX2開發(fā)板套件的頂視圖

3)?JETSONXavier開發(fā)板套件的外設(shè)接口圖

JETSONXavier開發(fā)板套件的前視圖和后視圖如圖3.12所示,頂視圖如圖3.13所示。圖3.12JETSONXavier開發(fā)板套件的前視圖和后視圖圖3.13JETSONXavier開發(fā)板套件的頂視圖

2.?GPIO接口

GPIO接口是通用型輸入/輸出接口的簡稱,其接腳可以供開發(fā)人員通過程序控制自由使用。GPIO接口可根據(jù)實際情況作為通用輸入或通用輸出,也可以作為通用輸入與輸出。JETSON系列開發(fā)板中都包含40引腳的GPIO接口,其中JETSONXavier和JETSONNano只有一個40針2.54?mm間隔的GPIO接口,而JETSONTX2有兩個GPIO接口,一個40針、2.54?mm間隔的通用接口J21和一個30針2.54?mm間隔的擴展接口J26。

GPIO接口可以用于輸入、輸出或其他特殊功能。對于輸入,可以通過讀取某個寄存器來確定引腳電位的高低;對于輸出,可以通過寫入某個寄存器來讓引腳輸出高電位或低電位;對于其他特殊功能,則由另外的寄存器來控制。以JETSONNano為例,GPIO引腳排列見表3.2。

對于如何通過控制GPIO輸出來打開和關(guān)閉發(fā)光二極管(LED),首先,選取LED燈、NPN晶體管、3300?Ω電阻、10?kΩ電阻和若干電線,用面包板將所有器件連接起來;其次,在控制LED的過程中,需要通過添加限流電阻來確保LED能夠承受的電流量,簡而言之,通過選擇合適的電阻可以設(shè)定LED實際吸收電流的上限。根據(jù)歐姆定律選擇電阻(在同一電路中,通過某段導(dǎo)體的電流與該導(dǎo)體兩端的電壓成正比,與該導(dǎo)體的電阻成反比):

(3-1)

當(dāng)已知LED的參數(shù)時可以計算出合適的電阻值,即根據(jù)LED的正向電壓(陰極和陽極之間的最小電壓差)計算正向電流,即LED能夠連續(xù)處理的最大電流。本節(jié)中LED正向電流為20?mA,正向電壓為2.0?V,當(dāng)使用JETSONNano的5?V引腳驅(qū)動LED時,按照歐姆定律,有

如果以最大電流運行,將會影響LED壽命。通常,使用220~470?Ω的電阻來實現(xiàn)此應(yīng)用,本節(jié)使用330Ω。

在實際連接過程中,將JETSONNano上的引腳2(?+?5V)用導(dǎo)線接入面包板電路?+?5?V相應(yīng)位置,將引腳6(GND)用導(dǎo)線接入面包板電路GND相應(yīng)位置,將引腳12(gpio79)用導(dǎo)線經(jīng)由基極電阻連接到晶體管基座。連接好后運行如下命令:

3.串行通信接口

JETSON系列開發(fā)板上有4種類型的串行通信接口,分別為USB、SPI、UART和I2C。USB接口是插入鼠標和鍵盤的接口。對于SPI接口,在默認的JETSON配置中沒有SPI接口訪問權(quán)限,但以JETSONNano為例,可以通過J41擴展接頭重新配置設(shè)備樹以訪問SPI。本節(jié)重點介紹UART和I2C兩類接口。

1)?UART接口

通過電線傳輸串行數(shù)據(jù)可以追溯到百年前,計算機行業(yè)中的串行通信無處不在。UART是串行控制臺,允許直接訪問串行和調(diào)試控制臺。除了提供典型的控制臺之外,串行控制臺在許多其他情況下也很有用,包括為不同的啟動映像(Linux內(nèi)核映像)選擇菜單條目的功能,以及訪問沒有鍵盤、鼠標、網(wǎng)絡(luò)或顯示器的設(shè)備。本節(jié)以通過J44上的UART接口將PC計算機連接到JETSONNano為例,介紹UART接口功能。

運行查看串口的命令時,如果出現(xiàn)無法找到ttyTHS2的問題,可以將系統(tǒng)的設(shè)備樹文件進行反編譯,使能ttyTHS2后再重新編譯。注意:下面的命令如果操作不當(dāng)可能會引起系統(tǒng)無法啟動。

要在確保JETSONNano未通電的情況下按如下方式接線,如圖3.14所示。圖3.14JETSONNano的UART接線圖

2)?I2C接口

I2C是一種簡單的串行協(xié)議,用于單個器件內(nèi)的短距離通信。通常有兩條連接線,一條串行數(shù)據(jù)線(SDA),另一條串行時鐘線(SCL),但大多數(shù)器件還需要電源(VCC)和地(GND)。NVIDIAJETSON開發(fā)板可以通過GPIO接口訪問I2C總線0和12C總線1。

安裝ServoKit庫并設(shè)置I2C和GPIO權(quán)限,以便可以從用戶空間運行程序,添加GPIO權(quán)限以支持底層JETSON.GPIO庫。群組更改在登錄前不會生效,必須注銷/登錄或重新啟動計算機才能使更改生效。

(1)單電機角度伺服。

值得注意的是,在連接JETSON平臺之前,要確保斷開電源。因為插入電源后,即使處理器本身處于關(guān)閉狀態(tài),接口上的電源和地也始終處于工作狀態(tài)。

值得注意的是,在連接JETSON平臺之前,要確保斷開電源。因為插入電源后,即使處理器本身處于關(guān)閉狀態(tài),接口上的電源和地也始終處于工作狀態(tài)。

J41引腳3(SDA)→PCA9685SDA;

J41引腳5(SCL)→PCA9685SCL;

J41引腳1(3.3V)→PCA9685VCC;

J41引腳6(CND)→PCA9685GND。

(2)雙電機云臺單獨控制。

關(guān)閉并拔下JETSONNano電源后,連接PCA9685進行雙電機云臺伺服控制,通過I2C總線0連接伺服電機的接線方式如下:

J41引腳27(SDA)→PCA9685SDA;

J41引腳28(SCL)→PCA9685SCL;

J41引腳1(3.3V)→PCA9685VCC;

J41引腳6(GND)→PCA9685GND。

3.2.3JETSON平臺開發(fā)板接口

JETSON開發(fā)板及應(yīng)用套件的研發(fā),能夠為行業(yè)用戶提供低成本高可靠的產(chǎn)品級解決方案,擺脫硬件平臺搭建的風(fēng)險,讓他們?nèi)W?yīng)用層面的開發(fā),快速推出面向特定應(yīng)用市場的整體解決方案。

1.?JETSONTX1/TX2擴展開發(fā)板

1)瑞泰新時代(北京)公司RTSO-9001開發(fā)板

RTSO-9001是一款搭配JETSONTX1/TX2核心模塊的低成本、小體積開發(fā)板,包括上下堆棧兩塊板卡。開發(fā)板長、寬尺寸與JETSONTX1/TX2模塊相當(dāng),適合緊湊型部署需求;面向工業(yè)部署應(yīng)用,其主要接口進行了靜電安全保護設(shè)計;采用了高可靠性的電源應(yīng)用方案,具有豐富的對外接口,全板器件采用寬溫型號。產(chǎn)品接口及說明如表3.3所示。

RTSO-9001開發(fā)板的外觀如圖3.15所示。RTSO-9001開發(fā)板的外觀如圖3.15所示。

2)瀝拓科技(深圳)有限公司LEETOP-A300開發(fā)板

LEETOP-A300是一個高性能、尺寸小、接口豐富的JETSONTX1/TX2開發(fā)板,開發(fā)板大小與JETSONTX1/TX2模塊一致,提供USB3.0、千兆以太網(wǎng)、HDMI2.0、USB2.0、UART、GPIO、I2C、CAN、風(fēng)扇等接口。LEETOP-A300開發(fā)板的外觀如圖3.16所示。

圖3.16LEETOP-A300開發(fā)板外觀

該產(chǎn)品的其他接口及說明如表3.4所示。

3)?Auvidea公司J121開發(fā)板

JI21開發(fā)板將JETSONTX2計算模塊轉(zhuǎn)變?yōu)槌⌒陀嬎銠C,用于桌面使用或者集成到機器人和無人機中。JI21與JETSONTX2具有相同的高度,并延伸到一側(cè),為千兆以太網(wǎng)、兩個USB3.0和迷你HDMI的標準連接器騰出空間;具有一個M.2型M插槽,用于超快速SSD(2280mm外形尺寸),通過4個PCIe通道連接,實現(xiàn)高達2500?Mb/s的讀寫性能。該產(chǎn)品的其他接口及說明如表3.5所示。

J21開發(fā)板的外觀如圖3.17所示。圖3.17J21開發(fā)板外觀

2.?JETSONNano擴展開發(fā)板

1)瑞泰新時代(北京)公司RTSO-6001開發(fā)板

RTSO-6001是針對Nano的工業(yè)級開發(fā)板,工作溫度為-40~+80℃,低功耗,安全級別高,可滿足各種苛刻條件。該產(chǎn)品的接口及說明如表3.6所示。

RTSO-6001開發(fā)板的外觀如圖3.18所示。圖3.18RTSO-6001開發(fā)板外觀

EETOP-A200是一個高性能、接口豐富的JETSONNano開發(fā)板,提供了HDMI2.0、千兆以太網(wǎng)、USB3.0、USB2.0、M.2Wi-Fi/BT、CSICAMERA、SATA、Mini-PCIe/mSATA、UART232串口、SIM卡、GPIO、I2C、I2S風(fēng)扇等豐富的外圍接口,搭載科大訊飛專門為JETSONNano設(shè)計的麥克風(fēng)陣列、慣導(dǎo)模塊等外部設(shè)備。LEETOP-A200開發(fā)板的外觀如圖3.19所示。LEETOP-A200接口及說明見表3.7。

圖3.19LEETOP-A200開發(fā)板的外觀

3)?Auvidea公司JN30開發(fā)板

JN30專為JETSONNano設(shè)計,將Nano計算模塊轉(zhuǎn)變?yōu)槌売嬎銠C。JN30支持輕松自動閃存(USBOTG電纜)和高性能存儲(M.2NVMEPCIe×4)。JN30接口及說明見表3.8。

3.?JETSONXavier擴展開發(fā)板

1)瀝拓科技(深圳)有限公司LEETOP-A501開發(fā)板

LEETOP-A501開發(fā)板主要應(yīng)用于物流行業(yè)中具有陸運貨車裝卸口的、需要計算機視覺分析的場地,如中轉(zhuǎn)場、重貨、網(wǎng)點、快遞、零擔(dān)(運輸)、冷運裝卸口、商超裝卸口、港口裝卸口、海關(guān)裝卸口、鐵路運輸裝卸口,以及具有行為檢測需求的幼兒園、工廠、銀行等。LEETOP-A501開發(fā)板的外觀如圖3.20所示。

圖3.20LEETOP-A501開發(fā)板外觀

LEETOP-A501開發(fā)板的主要端口及說明見表3.9。

2)?Auvidea公司X200開發(fā)板

X200是JETSONAGXXavier的首款開發(fā)板,其特點是以透明的方式利用計算模塊的所有接口,給出了5個PCIe插槽上的所有PCIe接口,其他接口包括USB2.0、USB3.0、2?×USB-C、2個HDMI、2個CAN、8個CSI-2、GPIO、GbE、UART,電源輸入為12~48?V,擁有9個基于PCIe的千兆以太網(wǎng)(GbE)接口,可連按9個GigE攝像頭,用于多攝像頭應(yīng)用。每個GbE接口都是本機連接的,并提供最大的數(shù)據(jù)傳輸速率。X200開發(fā)板的外觀如圖3.21所示。

圖3.21X200開發(fā)板外觀

3.3JETSON平臺軟件資源介紹

3.3.1JETSON平臺的架構(gòu)JETSONSDK平臺中涵蓋的軟件開發(fā)資源及依賴關(guān)系如圖3.22所示。

圖3.22JETSONSDK平臺中涵蓋的軟件開發(fā)資源及依賴關(guān)系

這套開發(fā)工具包括:

(1)?CUDA(ComputeUnifiedDeviceArchitecture):一種由NVIDIA推出的通用并行計算架構(gòu)和編程模型,能使GPU解決復(fù)雜的計算問題。

(2)?cuBLAS(CUDABasicLinearAlgebraSubroutines):CUDA專門用來解決線性代數(shù)運算的庫,可以實現(xiàn)向量相乘、矩陣乘向量、矩陣乘矩陣等運算。

(3)?cuFFT(CUDAFastFourierTransform):CUDA提供的封裝的FFT庫,還提供了與CPU的FFT庫相似的接口,讓用戶能夠輕易地挖掘GPU強大浮點處理能力,不需要用戶自己實現(xiàn)專門的FFT內(nèi)核函數(shù)。

(4)?cuDNN(CUDADeepNeuralNetworklibrary),是NVIDIA專門針對深度神經(jīng)網(wǎng)絡(luò)中的基礎(chǔ)操作推出的庫,為深度神經(jīng)網(wǎng)絡(luò)中的標準流程提供了高度優(yōu)化的實現(xiàn)方式,如convolution、pooling、normalization及activationlayers的前向及后向過程。

(5)?TensorRT(TensorRuntime):一個高性能的深度學(xué)習(xí)推理引擎,用于在生產(chǎn)環(huán)境中部署深度學(xué)習(xí)應(yīng)用程序,應(yīng)用包括圖像分類、分割和目標檢測等。TensorRT可提供最大的推理吞吐量和效率,用戶無須安裝并運行深度學(xué)習(xí)框架。

(6)?VisionWorks:一個用于計算機視覺和圖像處理的軟件開發(fā)包,實現(xiàn)并擴展了KhronosOpenVX標準,并對支持CUDA的GPU和片上系統(tǒng)(SoC)進行了優(yōu)化,使開發(fā)人員能夠在可伸縮的、靈活的平臺上實現(xiàn)計算機視覺(ComputerVision,CV)應(yīng)用。

(7)?OpenCV(OpenComputerVision):一個跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和MacOS操作系統(tǒng)上,可以實現(xiàn)圖像處理和計算機視覺方面的很多通用算法。OpenCV4Tegra是NVIDIA專為Tegra平臺優(yōu)化的一個OpenCV版本。

(8)?OpenGL(OpenGraphicsLibrary):一個跨編程語言、跨平臺的專業(yè)圖形程序接口,可用于二維/三維圖像處理,是一個功能強大、調(diào)用方便的底層圖形庫。

(9)?libargus:為攝像機應(yīng)用程序提供了低級幀同步應(yīng)用編程接口(ApplicationProgrammingInterface,API)、每幀攝像機參數(shù)控制、多個/同步攝像機支持和設(shè)備說明表(EquipmentGuideList,EGL)流輸出。

(10)?GStreamer:用來構(gòu)建流媒體應(yīng)用的開源多媒體框架,其目標是簡化音/視頻應(yīng)用程序開發(fā),主要用來處理MP3、MPEG1(MPEG組織制定的第一個視頻和音頻有損壓縮標準)、MPEG2、AVI(音頻視頻交錯格式)、Quicktime等多種格式的多媒體數(shù)據(jù)。

3.3.2基于Tegra核心的Linux系統(tǒng)

JETSON平臺使用的是NVIDIA公司推出的Tegra處理器。Tegra處理器是采用單片機系統(tǒng)設(shè)計的SoC(SystemonChip)芯片,集成了ARM架構(gòu)處理器和NVIDIA的GeForceGPU,面向便攜設(shè)備提供高性能、低功耗體驗。在Tegra芯片上運行的是Linux內(nèi)核,采用U-Boot(UniversalBootLoader)來實現(xiàn)系統(tǒng)引導(dǎo)。在Linux內(nèi)核上,Jetpack采用Ubuntu桌面系統(tǒng),目前最新版本的Jetpack已經(jīng)集成了Ubuntu18.04。此外,Jetpack還集成了BusyBox,包括了300多個最常用Linux命令和工具軟件,并結(jié)合相關(guān)硬件的外部設(shè)備重新編譯內(nèi)核,稱之為Linux4Tegra,簡稱L4T。

1.從操作系統(tǒng)到Ubuntu

操作系統(tǒng)(OperatingSystem,OS)是管理和控制計算機硬件與軟件資源的計算機程序,是直接運行在“裸機”上的最基本的系統(tǒng)軟件,其他任何軟件都必須在操作系統(tǒng)的支持下才能運行。操作系統(tǒng)并不是與計算機硬件一起誕生的,它是在人們使用計算機的過程中,為了滿足兩大需求——提高資源利用率和增強計算機系統(tǒng)性能,同時隨著計算機技術(shù)本身及其應(yīng)用的日益發(fā)展而逐步形成和完善起來的。

Linux是個人操作系統(tǒng)的另一個分支中的杰出之作,它是一種類UNIX操作系統(tǒng),和Windows系統(tǒng)相比,有以下幾個優(yōu)點:

(1)自由與開放。

(2)配置需求低。

(3)內(nèi)核強大且穩(wěn)定。

(4)適合于嵌入式系統(tǒng),

2.常用的Linux操作命令

在Linux系統(tǒng)里,大部分在圖形界面下可以完成的操作都可以在Terminal應(yīng)用界面通過鍵入相應(yīng)的命令行來實現(xiàn)。特別地,對于JETSON平臺的程序開發(fā)人員來說,大多數(shù)操作也都是在Terminal應(yīng)用界面中完成的。Terminal應(yīng)用的運行界面如圖3.23所示。

圖3.23Terminal應(yīng)用的運行界面

下面針對不同的場景介紹Ubuntu系統(tǒng)中的常用命令。

1)文件/文件夾管理常用命令

(1)?pwd命令是“PrintWorkingDirectory”的簡寫,指令內(nèi)容顯示當(dāng)前工作目錄的路徑,在Terminal界面的使用格式為:

$pwd

(2)cd命令是“ChangeDirectory”的簡寫,指令內(nèi)容是進入到指定目錄下,其參數(shù)是指定目錄相對于當(dāng)前目錄的路徑,在Terminal界面中的使用格式為:

$cd<文件夾相對路徑>

cd命令后面的參數(shù)還支持一些特殊的指代符號,如進入當(dāng)前目錄的上一級目錄:

(3)?ls命令是“List”的簡寫,指令內(nèi)容是列出指定目錄下的文件/文件夾,在Terminal界面中的使用格式為:

$ls<文件夾相對路徑>

①后綴“-l”參數(shù),會列出文件/文件夾的詳細信息,具體包括文件類型、所有者/所有者權(quán)限、組用戶權(quán)限、其他用戶權(quán)限、鏈接數(shù)/子目錄數(shù)、用戶名、組名、文件大小、最后修改時間和文件名。

②后綴“-lh”參數(shù),會將列出的文件大小以K、M、G的格式顯示,更便于查看。

(4)?mkdir命令是“MakeDirectory”的簡寫,指令內(nèi)容是創(chuàng)建指定名稱的文件夾,在Terminal界面中的使用格式為:

$mkdir<文件夾名稱>

(5)?cp命令是“Copy”的簡寫,指令內(nèi)容是將原始路徑的文件復(fù)制到目標路徑。這個命令可以在復(fù)制文件的同時修改文件名,在Terminal界面中的使用格式為:

$cp<原始路徑><目標路徑>

①后綴“-i”參數(shù),可以在覆蓋目標文件之前給出提示,要求用戶確認。

②后綴“-r”參數(shù),會將源目錄下的所有文件夾及文件夾下的文件復(fù)制到目標目錄下。

(6)?mv命令是“Move”的簡寫,指令內(nèi)容是將原始路徑的文件移動到目標路徑。這個命令也可用于(在移動文件的同時)修改文件名,在Terminal界面中的使用格式為:

$mv<原始路徑><目標路徑>

(7)?rm命令是“Remove”的簡寫,指令內(nèi)容是刪除指定的文件。該命令支持常見的通配符,在Terminal界面中的使用格式為:

$rm<文件名>

①后綴“-r”參數(shù),可以刪除指定目錄下的所有文件和文件夾(包括子文件夾)。

②后綴“-f”參數(shù),可以實現(xiàn)強制刪除。

【注意】“rm-rf*”是非常危險的命令,謹慎使用!

2)應(yīng)用安裝常用命令

目前,Linux系統(tǒng)下最常用的應(yīng)用程序管理器是AdvancedPackageTool,簡稱apt。apt應(yīng)用程序管理器最初于1998年發(fā)布,用于檢索應(yīng)用程序并將其加載到DebianLinux系統(tǒng)。apt成名的原因之一在于其出色的解決軟件依賴關(guān)系的能力,使用apt可以自動從互聯(lián)網(wǎng)的多個軟件倉庫中搜索、安裝、升級、卸載軟件或操作系統(tǒng)。

apt命令一般需要root權(quán)限執(zhí)行,所以都會結(jié)合sudo命令使用。下面介紹apt命令的一些常用選項及相關(guān)功能。

(1)?update選項可以更新安裝源,在Terminal界面中的使用格式為:

$sudoaptupdate

(2)?upgrade選項可以升級所有可升級的軟件包,在Terminal界面中的使用格式為:

$sudoaptupgrade

一般在第一次運行aptupdate命令之后,就會運行aptupgrade命令。

(3)?install選項可以安裝指定的軟件包。

install選項結(jié)合參數(shù)“-y”使用,可以在命令行交互式提示“[Y/N]”時自動輸入“y”;如果結(jié)合參數(shù)“-no-install-recommends”使用,則可以避免安裝非必需的文件。在Terminal界面中的使用格式為:

在使用apt命令時,偶爾會遇到“E:Couldnotgetlock/var/lib/dpkg/lock”“E:Couldnotget/var/lib/dpkg/lock-frontend”“E:Couldnotget/var/cache/apt/archives/lock”等錯誤,這是由于用戶上一次調(diào)用apt命令時沒有正確退出,系統(tǒng)還鎖定著apt進程,以避免同時運行兩個apt進程而導(dǎo)致沖突。因此,在實際操作時,用戶應(yīng)首先確認沒有其他的apt進程正在工作,然后使用rm命令將相應(yīng)的lock文件刪除,就可以正常使用apt命令。

rm命令使用格式為:

【注意】此時使用rm命令千萬不要帶“-r”參數(shù),以免操作不慎將“dpkg”目錄或其他目錄刪除。

(9)?dpkg命令可以實現(xiàn).deb格式軟件包的安裝及卸載。

①后綴“-i”參數(shù),可以實現(xiàn).deb格式軟件包的安裝。

②后綴“-r”參數(shù),可以實現(xiàn).deb格式軟件包的卸載。

dpkg命令在Terminal界面中的使用格式為:

$sudodpkg-i<安裝包文件名>.deb

$sudodpkg-r<軟件包名稱>

3)其他常用命令

(1)?tar命令可以實現(xiàn)對指定的文件/文件夾進行打包或解包的功能,可選是否壓縮。

①后綴“-c”參數(shù),實現(xiàn)打包功能。

②后綴“-x”參數(shù),實現(xiàn)解包功能。

③后綴“-z”參數(shù),實現(xiàn).gzip格式的壓縮/解壓功能。

④后綴“-f”參數(shù),指定文件名,這個參數(shù)必須放在最后。

(4)?find命令在指定路徑下查找文件。

①后綴“-name”參數(shù),指定要查找的文件名,文件名中支持通配符。

②后綴“-iname”參數(shù),表示忽略文件名中的大、小寫。

③還可以后綴各種不同的參數(shù),實現(xiàn)指定文件更新時間、文件類型等功能。

find命令在Terminal界面中的使用格式為:

$find<路徑>-name<文件名>

還有一些常用的信息查詢命令,在此就不一一具體說明了,可以參見表3.10。

3.3.3基于CUDA的智能計算平臺

1.?CUDA簡介

20世紀90年代,NVIDIA的第一個通用計算圖形處理單元(GPU)被設(shè)計成圖形加速器,它提供了可編程的功能,GPU出色的浮點性能很快被應(yīng)用于通用計算。2003年,由伊恩·巴克(IanBuck)領(lǐng)導(dǎo)的一組研究人員公布了Brook,這是第一個被廣泛采用的編程模式,它使用數(shù)據(jù)并行結(jié)構(gòu)擴展了C語言。伊恩·巴克后來加入了NVIDIA,并在2006年發(fā)布了由他領(lǐng)導(dǎo)的CUDA,這是世界上第一個基于GPU的通用計算解決方案。

GPU并不是一個獨立運行的計算平臺,它需要與CPU協(xié)同工作,也可以看成是CPU的協(xié)處理器,因此說GPU的并行計算其實就是指基于CPU+?GPU的異構(gòu)計算架構(gòu)(見圖3.24)。在這個異構(gòu)計算架構(gòu)中,GPU與CPU通過PCIe總線連接在一起協(xié)同工作,CPU所在位置稱為主機端(host),GPU所在位置稱為設(shè)備端(device)。

圖3.24基于CPU+GPU的異構(gòu)計算框架

典型的CUDA程序的執(zhí)行流程如下:

①分配host內(nèi)存,進行數(shù)據(jù)初始化;

②分配device內(nèi)存,從host將數(shù)據(jù)拷貝到device上;

③調(diào)用CUDA的核函數(shù),在device上完成指定的運算;

④將device上的運算結(jié)果拷貝到host上;

⑤釋放device和host上分配的內(nèi)存。

要想深刻理解核函數(shù),就必須詳細了解核函數(shù)的線程層次結(jié)構(gòu)。GPU上有很多并行化的輕量級線程,核函數(shù)在device上執(zhí)行時實際上是啟動了很多個線程(thread)。一個核函數(shù)啟動的所有線程稱為一個網(wǎng)格(grid),同一個網(wǎng)格上的線程共享相同的全局內(nèi)存空間,網(wǎng)格是線程結(jié)構(gòu)的第一個層次;其次,網(wǎng)格又可以分為很多線程塊(Block),一個線程塊包含了很多線程,線程塊是線程結(jié)構(gòu)的第二個層次。核函數(shù)上的兩層線程組織結(jié)構(gòu)如圖3.25所示。

圖3.25核函數(shù)上的兩層線程組織結(jié)構(gòu)(二維)

2.?CUDA的內(nèi)存模型

CUDA的內(nèi)存模型如圖3.26所示。圖3.26CUDA的內(nèi)存模式

GPU硬件的一個核心組件是SM,SM的核心組件包括CUDA核心、共享內(nèi)存和寄存器等。SM的并發(fā)能力取決于SM擁有的資源數(shù),可以并發(fā)地執(zhí)行數(shù)百個線程。當(dāng)一個核函數(shù)被執(zhí)行時,其網(wǎng)格中的線程塊被分配到SM上。一個線程塊只能在一個SM上被調(diào)度,而SM則可以調(diào)度多個線程塊,調(diào)度線程塊的數(shù)量取決于SM自身的能力。還有可能是一個核函數(shù)的各個線程塊被分配到多個SM上,所以網(wǎng)格只是邏輯層,而SM才是執(zhí)行的物理層。CUDA編程的邏輯層和物理層如圖3.27所示。

圖3.27CUDA編程的邏輯層和物理層

基于JETSON平臺的實際開發(fā)中,很多時候用戶并不需要編寫底層的CUDA核函數(shù)。因為NVIDIA在CUDA的基礎(chǔ)上,還提供了cuBLAS、cuFFT和cuDNN等運行庫,這些運行庫相當(dāng)于對CUDA又做了一層封裝,用戶只需對這些運行庫提供的函數(shù)進行調(diào)控就可以完成計算任務(wù)。

3.3.4基于DeepStream的智能視覺平臺

1.?DeepStream簡介

視頻是當(dāng)下最常見的傳感器數(shù)據(jù)之一。2020年,全球啟用的攝像頭數(shù)量達10億,這是一個難以置信的原始傳感器數(shù)據(jù)量,可利用攝像頭和流數(shù)據(jù)分析構(gòu)建一些功能強大的應(yīng)用,如機場的入境管理、制造中心和工廠的生產(chǎn)線管理、停車管理和客流分析等,這對構(gòu)建智慧城市是很重要的。另外,利用視頻分析可以讓人們具備更全面的洞察力。

以上這些以往需要開發(fā)人員逐步去實現(xiàn)的步驟,DeepStream可以一站式解決。DeepStream是基于NVIDIA運行的工具,主要應(yīng)用于視覺整個流程的解決方案。它與其他視覺庫(如OpenCV)的區(qū)別在于,DeepStream建立了一個完整的端到端的支持方案,換句話說,用戶的源無論是Camera、Video還是云服務(wù)器上的視頻,從視頻的編、解碼到后臺的圖像推理,再到展示,對這一完整流程上的各個細節(jié),DeepStream都能起到輔助的作用。在這個流程中,用戶只需加上自己的內(nèi)容,比如,視頻檢索需要訓(xùn)練一個模型用于識別或檢測視頻中的人臉,只需將人臉識別和人臉檢測的相關(guān)模型添加到方案中即可,對于設(shè)置視頻源的完整流程,DeepStream可自動完成。

2.?DeepStream的核心組件

DeepStream是一個建立在GStreamer基礎(chǔ)上的軟件開發(fā)工具包(SDK),而GStreamer是一個開源的多媒體分析框架,由幾個核心組件組成。GStreamer底層(第一個層次)最基本的單元是插件(plug-ins)。GStreamer支持很多種不同的插件,每個插件都具有自己特定的功能。例如,第一個插件從數(shù)據(jù)源接收數(shù)據(jù),并解碼原始數(shù)據(jù)幀中的像素,再將數(shù)據(jù)發(fā)送給第二個插件;第二個插件做圖像縮放處理,然后將數(shù)據(jù)發(fā)送給下一個插件。這些最基本的插件是基于GStreamer的基本功能塊。

GStreamer第二個層次的基本單元是功能箱(bin)。在GStreamer和DeepStream里,其功能箱包含了很多功能塊,許多功能塊一起工作來完成某種具體的功能。GStreamer第三個層次實際上是一種總線,一種基于GStreamer或DeepStream的管理數(shù)據(jù)流動和同步的總線。

GStreamer為應(yīng)用程序和管道之間的通信和數(shù)據(jù)交換提供了4種機制:第一種交換機制其本質(zhì)是緩沖區(qū),負責(zé)在插件之間傳遞流數(shù)據(jù)。在管道中,緩沖區(qū)將數(shù)據(jù)從視頻文件傳遞到解碼器,再傳遞到縮放插件,再傳遞到過濾器插件,最終傳遞到顯示插件。第二種交換機制叫作事件(event),用于在GStreamer框架中多個插件之間傳遞信息,也可用于將應(yīng)用程序的信息傳遞給某個插件。第三種交換機制是消息(messages),通過消息將信息發(fā)布到消息總線上,從而讓其他應(yīng)用通過接收消息來采集這些信息。第四種交換機制是查詢(queries),允許應(yīng)用程序主動請求信息,不用等待信息發(fā)到應(yīng)用程序上才收集。

對于建立在GStreamer框架上的DeepStream來說,其主要構(gòu)建塊是插件。DeepStream提供了一個基于插件的模型,用戶基于該模型可以創(chuàng)建一個基于圖形的管道插件,還能將管道插件組合到應(yīng)用程序中,通過插件的互連,對應(yīng)用程序進行深度優(yōu)化。DeepStream允許應(yīng)用程序利用GPU和CPU進行異構(gòu)處理,這意味著當(dāng)應(yīng)用程序使用提供的GPU加速插件時,該插件就可以訪問底層NVIDIA優(yōu)化庫。由于DeepStream是專為GPU處理而構(gòu)建的,因此數(shù)據(jù)可以在管道中傳遞。另外,DeepStream還可以自動實現(xiàn)并行處理與同步,開發(fā)人員不用關(guān)心過程是如何實現(xiàn)的,只需要專注于構(gòu)建自定義用例組件。

這也意味著DeepStream本身就是多線程的,通過啟用多線程的異構(gòu)化,使用構(gòu)建管道架構(gòu)的插件來處理應(yīng)用程序的創(chuàng)建。DeepStream既可以針對NVIDIAGPU進行優(yōu)化,還可以在CPU上有效運行。

3.?DeepStream的處理流程

有許多應(yīng)用程序需要實時或準實時延遲運行,還有一些應(yīng)用程序需要提供服務(wù)級別的協(xié)議以針對特定情況提供某些延遲,因此有效管理應(yīng)用程序的內(nèi)存至關(guān)重要。使用DeepStream無須關(guān)注數(shù)據(jù)交流的優(yōu)化情況,因為DeepStream提供了一條處理視頻流數(shù)據(jù)的流水線。

DeepStream同時還提供了一種標準化的、可擴展的元數(shù)據(jù)結(jié)構(gòu),當(dāng)用戶有需要時,如應(yīng)用程序有更多的類別或需要其他描述性信息,則能方便地擴展流數(shù)據(jù)。DeepStream元數(shù)據(jù)的結(jié)構(gòu)除了每幀圖像的信息外,還包括部分與本幀相關(guān)的、所檢測到的對象的信息。

4.?DeepStream4.0的新特性

DeepStream4.0有以下重要的新特性:

(1)跨平臺的統(tǒng)一版本豐富了應(yīng)用程序的可移植性,支持最新的AI平臺JETSONNano;

(2)內(nèi)存占用減少了50%,可以實現(xiàn)更出色的流處理密度;

(3)與AzureEdgeIoT實現(xiàn)整合,可以構(gòu)建應(yīng)用程序和服務(wù),充分利用了Azure云的強大功能;

(4)?JETSON平臺的容器化部署,增強了將應(yīng)用程序部署到Dockers的能力,大大增強了大規(guī)模應(yīng)用程序的交付和維護效率;

(5)可將消息模式轉(zhuǎn)換器和消息代理插件用于推理;

(6)新的參考跟蹤器可實現(xiàn)穩(wěn)健的對象跟蹤;

(7)增加了對異構(gòu)相機、分割網(wǎng)絡(luò)、單色圖像和硬件加速JPEG解碼及編碼的支持。

DeepStream4.0還支持以下領(lǐng)域的人工智能應(yīng)用程序的開發(fā):

(1)智能零售。支持分割和多目標跟蹤、構(gòu)建端到端應(yīng)用程序、生成用戶觀察視角、創(chuàng)建自動付款系統(tǒng)、設(shè)定預(yù)防損失策略等。

(2)工業(yè)檢驗。硬件加速JPEG解碼和編碼;基于YOLO(YouOnlyLookOnce)和U-Net(U型結(jié)構(gòu))等網(wǎng)絡(luò)創(chuàng)建應(yīng)用程序;自動檢查制造缺陷,速度快于手動檢測。

(3)智能交通。物聯(lián)網(wǎng)集成傳輸傳感器數(shù)據(jù),用于智能停車和交通應(yīng)用,可改善交通擁堵、優(yōu)化停車機制,還提供占用經(jīng)驗統(tǒng)計。

(4)物流和操作。多個攝像頭及新的網(wǎng)絡(luò)拓撲結(jié)構(gòu),運行最新版本的TensorRT,可用于在倉庫創(chuàng)建應(yīng)用程序。

值得注意的是,DeepStream4.0可以為所有在ARM64架構(gòu)上運行的NVIDIAJETSON平臺提供容器支持。該容器中包含插件、二進制文件和示例應(yīng)用程序源,以及DeepStream4.0發(fā)行包中的模型和配置文件,還預(yù)先安裝了各種外部軟件包及其依賴項。該容器利用JETSON上的NVIDIAContainerRuntime,可作為NVIDIAJetpack4.2.1或更高版本的一部分進行安裝。對于特定設(shè)備的平臺,由NVIDIAContainerRuntime從底層主機安裝到DeepStream容器中,從而為在容器內(nèi)執(zhí)行DeepStream應(yīng)用程序提供了必要的依賴關(guān)系。第4章JETSON平臺開發(fā)基礎(chǔ)4.1JETSONNano系統(tǒng)刷寫4.2

JETSON平臺環(huán)境檢查及配置

4.1JETSONNano系統(tǒng)刷寫

4.1.1JETSONNano系統(tǒng)刷寫前的準備工作1.外接顯示器JETSON系列平臺提供了統(tǒng)一的HDMI接口,用于外接顯示器,建議用戶直接通過HDMI連接線接入支持HDMI接口的顯示器。JETSONNanoHDMI接口如圖4.1所示,顯示屏HDMI接口如圖4.2所示。

圖4.1JETSONNanoHDMI接口

圖4.2顯示屏HDMI接口

如果用戶既沒有HDMI接口的顯示器,也沒有DVI接口的顯示器,那么就必須有外接VGA接口的顯示器,還需要購置一條HDMI轉(zhuǎn)VGA的轉(zhuǎn)接線頭,如圖4.3所示。需要注意:這種接入方式對轉(zhuǎn)接線和顯示器都有很大的依賴性,用戶可能還需要更換很多種組合才能找到可以顯示的方案,因此,非常不推薦。

圖4.3HDMI轉(zhuǎn)VGA轉(zhuǎn)接頭

2.外接電源

JETSONNano未提供電源適配器及相應(yīng)線纜,需要用戶自行購置。JETSONNano開發(fā)板上提供了兩種供電選擇:通過Micro-USB接口供電和通過DC電源供電。

Micro-USB接口供電需要將JETSONNano連接到優(yōu)質(zhì)的“5V2A”的電源適配器(電流超過2A可使用),如果電流不滿足條件或線纜質(zhì)量較差,都會導(dǎo)致JETSONNano無法通電。很多手機充電器也可以滿足JETSONNano在普通功耗工作時的工作需求,包括樹莓派專用的電源適配器也可以用于JETSONNano在普通功耗工作時的供電,Micro-USB電源接口如圖4.4所示。

圖4.4Micro-USB電源接口

當(dāng)JETSONNano功耗較高時,如在完成較復(fù)雜的深度學(xué)習(xí)模型推理任務(wù)的過程中,Micro-USB接口的供電電流有可能無法滿足用電需求,進而發(fā)生頻繁自動重啟的情況。因此對于有高功耗任務(wù)需求的應(yīng)用場景,推薦使用DC電源來供電。用戶在購買DC電源時應(yīng)注意電源額定電壓為5?V、額定電流為4~6A,另外接口必須為5.5?mm×?2.1?mm的標準接口。DC電源適配器如圖4.5所示。

圖4.5DC電源適配器

需要注意:使用DC電源給JETSONNano供電時,必須使用跳線帽將開發(fā)板上的J48進行短接,JETSONNano的J48跳線位置如圖4.6所示。圖4.6JETSONNano的J48跳線位置

3.外接其他設(shè)備

在網(wǎng)絡(luò)接入方面,JETSON系列平臺提供了統(tǒng)一的千兆以太網(wǎng)的有線接入接口,可直接經(jīng)由網(wǎng)線接到路由器上,正常通過DHCP分配IP即可使用。

JETSONNano也可經(jīng)由M.2接口或USB接口接入無線網(wǎng)卡。在視頻采集方面,一般的USB攝像頭都可以即插即用。如果用CSI攝像頭,JETSONNano只支持imx219核心芯片。官方推薦的是樹莓派的V2模塊攝像頭,如圖4.7所示。

圖4.7在JETSONNano上安裝CSI攝像頭

在散熱方面,JETSONNano只提供了散熱片,并沒有配備風(fēng)扇。如果功耗較高,就可能會因為模組過熱而自動降頻,降低運算效率。因此,用戶最好配備一個風(fēng)扇,并用螺絲和螺母將風(fēng)扇固定在散熱片上,如圖4.8所示。

圖4.8在JETSONNano上安裝風(fēng)扇

由于所選風(fēng)扇是PWM調(diào)速風(fēng)扇,因此在JETSONNano通電后風(fēng)扇并不會啟動,在刷機后,用戶需要在Terminal界面下運行如下命令才可以驅(qū)動風(fēng)扇,使之以最高轉(zhuǎn)速轉(zhuǎn)動。

$sudosh-c'echo255>/sys/devices/pwm-fan/target_pwm'

4.使用microSD卡

為了燒錄JETSONNano的microSD卡,需要一臺可以上網(wǎng)的計算機(以下簡稱主機),并且還要準備一個能夠讀寫microSD卡的高速讀卡器。如果是USB接口的讀卡器,最好是USB3.0接口,這樣能大幅度減少后續(xù)燒錄系統(tǒng)的時間。MicroSD卡及其讀卡器如圖4.9所示。

圖4.9microSD卡和讀卡器

4.1.2通過燒錄microSD卡對JETSONNano進行系統(tǒng)刷寫

1.系統(tǒng)鏡像下載

燒錄microSD卡對主機的操作系統(tǒng)沒有特殊要求,常用的Windows系統(tǒng)、Mac系統(tǒng)及Linux系統(tǒng)都配有相應(yīng)的燒錄軟件,用于完成對microSD卡的燒錄操作。

開啟主機,打開瀏覽器并訪問以下網(wǎng)址:/embedded/Jetpack。

鼠標點擊“DownloadSDCardImage”按鈕,下載最新版本的JETSONNano系統(tǒng)鏡像。下載時需要使用NVIDIA開發(fā)人員賬號登錄網(wǎng)站,如圖4.10所示。

圖4.10下載最新版本的JETSONNano系統(tǒng)鏡像

2.?microSD卡格式化

以Windows主機為例來說明JETSONNano的系統(tǒng)鏡像燒錄過程。

首先,將裝有microSD卡的讀卡器插到主機上,在主機的瀏覽器中訪問以下網(wǎng)址/downloads/formatter/index.html。

其次,根據(jù)主機的Windows版本下載相應(yīng)版本的SDMemoryCardFormatter,并安裝運行。在圖4.11所示的“SDCardFormatter”程序界面中,選中microSD卡所在的驅(qū)動器,選擇“Quickformat”,不用填寫“Volumelabel”,鼠標點擊“Format”按鈕,在彈出的警告對話框中點擊“Yes”按鈕,然后等待格式化操作完成。

圖4.11SDCardFormatter程序界面

3.?JETSONNano系統(tǒng)刷寫

在主機的瀏覽器中訪問網(wǎng)址https://www.balena.io/etcher/,下載Windows系統(tǒng)下可用的Etcher,并安裝運行。在圖4.12所示的Etcher程序界面中,鼠標點擊“Selectimage”按鈕,選擇之前下載的JETSONNano系統(tǒng)鏡像文件壓縮包;點擊“Selecttarget”按鈕,選中microSD卡所在的驅(qū)動器,再點擊“Flash”按鈕,等待刷新及驗證操作完成即可。此過程持續(xù)的時間取決于microSD卡的寫入速度和讀卡器的傳輸速度,一般為幾分鐘到幾十分鐘。

圖4.12Etcher程序界面

4.開機并進行系統(tǒng)設(shè)置

microSD卡刷寫完成后,將其插入到卡槽內(nèi),如圖4.13所示。連接顯示器和鍵盤、鼠標之后接入電源即可進行第一次系統(tǒng)啟動,并根據(jù)相應(yīng)提示一步步完成板載系統(tǒng)的“系統(tǒng)配置向?qū)А?,包括瀏覽并接受許可和用戶協(xié)議、選擇系統(tǒng)語言(建議選擇English)、選擇鍵盤布局(比如English(US))、選擇所在時區(qū)(比如ShangHai),以及設(shè)定用戶名、計算機名、登錄賬戶、登錄密碼和是否自動登錄。開機系統(tǒng)配置界面如圖4.14所示。圖4.13卡槽

圖4.14開機系統(tǒng)配置界面

4.2JETSON平臺環(huán)境檢查及配置

4.2.1JETSON平臺系統(tǒng)備份與恢復(fù)使用dd命令完成系統(tǒng)的備份與恢復(fù)。dd命令是Linux系統(tǒng)的一個非常有用的命令,可從標準輸入或文件中讀取數(shù)據(jù),根據(jù)指定的格式來轉(zhuǎn)換數(shù)據(jù),再將數(shù)據(jù)輸出到文件設(shè)備或標準輸出。dd命令常用于Linux系統(tǒng)的備份與恢復(fù)。dd命令有很多參數(shù),此處只對在系統(tǒng)備份與恢復(fù)過程中會用到的幾個參數(shù)進行相應(yīng)的說明。

參數(shù)“if=文件名”:輸入文件名,缺省為標準輸入,即指定源文件。

參數(shù)“of=文件名”:輸出文件名,缺省為標準輸出,即指定目的文件。

參數(shù)“bs=區(qū)塊大小”:同時設(shè)置讀入/輸出的塊,默認單位為byte,也可指定其他單位。

參數(shù)“status=progress”:顯示寫入進度。

1.使用dd命令完成系統(tǒng)備份

如果用戶想要將當(dāng)前系統(tǒng)制作成鏡像并備份到U盤上,可以按組合鍵Crl+Alt+T運行Teminal應(yīng)用,并在Teminal界面中輸入如下命令完成相應(yīng)的操作:

$sudoddif=/dev/mmecbik0of=/medivnvidia/<label>/nano.imgbs=IMstatus=progress

2.使用dd命令完成系統(tǒng)恢復(fù)

在Linux主機上按組合鍵Ctrl+Alt+T運行Terminal應(yīng)用。將裝有待燒錄microSD卡的讀卡器插到Linux主機上,然后在Terminal界面中輸入如下命令,可查看Linux系統(tǒng)分配給microSD卡的磁盤設(shè)備號。

4.2.2JETSON平臺環(huán)境檢查

1.?jtop性能監(jiān)控軟件檢查

進行JETSON平臺環(huán)境檢查需要安裝jtop。首先在終端輸入代碼:

2.終端命令檢查

圖4.15jtop界面

4.2.3JETSON平臺環(huán)境配置

1.語言環(huán)境

圖4.16InputMethod界面

在InputMethod界面,鼠標點擊“Add”按鈕,選擇“Chinese”,如圖4.17所示。

圖4.17添加拼音

完成后按Shift鍵,如果不能進行轉(zhuǎn)化則需要手動轉(zhuǎn)換。在電腦任務(wù)欄中找到輸入法,鼠標點擊“TextEntrySettings”,如圖4.18所示。

圖4.18輸入法轉(zhuǎn)換

進入設(shè)置界面后可以點擊“Add”按鈕,添加中文拼音,如圖4.19所示。圖4.18輸圖4.19添加拼音入法轉(zhuǎn)換

第一次使用這個輸入法要在電腦任務(wù)欄手動切換,如圖4.20所示。圖4.20手動切換輸入法

若無法進入IBus,解決辦法如下(特別是針對已經(jīng)安裝了archiconda的軟件):

(1)將archiconda3禁用,輸入如下命令:

$sudochmod000/home/joker/archiconda3/(在此你應(yīng)該使用你的目錄)

(2)設(shè)置ibus-setup。

(3)如果還想用archiconda3,輸入如下命令再把權(quán)限改回來(需要注意的是這樣操作后ibus-setup又癱瘓了):

$sudochmod775/home/NVIDIA/archiconda3/

進入IBus后,輸入法選項添加中文-拼音,若沒有中文選項,可以重啟再試一次。進入到“TextEntrySettings”選項,用鼠標點擊“Add”,找到Chinese(Pinyin)(IBus)。完成輸入法選項添加中文-拼音操作后,若按Shift鍵仍無法切換成拼音,解決辦法如下:在圖4.20所示的輸入法圖標里手動切換,之后按Shift鍵。

2.更換鏡像源

3.遠程控制

進入Xftp后用鼠標點擊“新建”,在彈出的對話框的主機欄填入JETSONNano的IP地址,登錄框中選擇密碼登錄,填入本機的用戶名和密碼,如圖4.21所示。

圖4.21建立連接

連接完成后進入就可以拖動文件進行兩個機器文件的互傳,也可以進行刪除等操作,如圖4.22所示。圖4.22文件管理界面

進入Xshell,在“新建會話屬性”對話框中,主機仍填JETSONNano的IP地址,如圖4.23所示。

圖4.23Xshell新建會話屬性界面

連接后輸入用戶名,利用密碼登錄即可。進入后的界面如圖4.24所示。圖4.24遠程控制界面

4.?QQ安裝

QQLinux版的官方網(wǎng)站為/linuxqq/download.html,在下載列表中選擇ARM64構(gòu)架+deb格式,必備文件中有l(wèi)inuxqq_2.0.0-b2-1084_arm64.deb。

QQ登錄界面如圖4.25所示。

圖4.25QQ登錄界面

5.包管理工具安裝及其后續(xù)

(1)安裝pip。pip是Python包管理工具。

(2)安裝tensorflow。

(3)安裝TensorRT-7.13。

(4)安裝OpenCV。

(5)安裝deepstream。

(6)各種安裝包的查看。

第5章JETSON平臺開發(fā)實戰(zhàn)5.1

JETSON平臺軟件資源功能測試5.2人工智能應(yīng)用實戰(zhàn)

5.1

JETSON平臺軟件資源功能測試

5.1.1基本功能測試

1.開發(fā)板最佳性能模式按Ctrl+?Alt?+?T組合鍵運行Terminal程序,輸入如下命令:

$sudojetson_clocks在輸入管理員密碼后按回車鍵,即可開啟開發(fā)板的最佳性能模式。

在Terminal界面中鍵入如下命令可將時鐘值調(diào)到最大,為當(dāng)前的nvpmodel模式提供最佳性能,同時開啟風(fēng)扇,如圖5.1所示。圖5.1開啟開發(fā)板的最佳性能模式

2.查詢設(shè)備信息范例測試

在Terminal界面中輸入如下命令,可編譯并運行CUDA自帶的一些范例程序。

$cd/usr/localcuda-10.0/samples/1_Utilities/deviceQuery

$sudomake

$./deviceQuery

查詢設(shè)備信息范例程序用于查詢系統(tǒng)的各種設(shè)備信息并打印出來,如圖5.2所示。

圖5.2查詢設(shè)備信息范例

3.?CPU與GPU性能對比范例測試

在Terminal界面中輸入如下命令,可編譯并運行CPU與GPU自帶的范例程序。

cd..7..15_Simulations/nbody

$sudomake

$./nbody

$/nbody-cpu

CPU與GPU性能對比范例程序用于比較CPU圖形渲染處理和GPU處理圖形渲染的性能,如圖5.3所示。

圖5.3

GPU與CPU性能對比范例

4.?TensorRT推理范例測試

在Terminal界面中輸入如下命令,可編譯并運行TensorRT自帶的范例程序。

$cd/usr/src/tensorrt/samples

$sudomake

$../bin/sample_mnist

TensorRT推理范例程序演示了使用TensorRT加速的手寫體數(shù)字識別,TensorRT推理范例識別結(jié)果如圖5.4所示。

圖5.4

TensorRT推理范例

5.多媒體API范例測試

在Terminal界面中輸入如下命令,運行一個機動車檢測的demo程序。在輸入命令時注意區(qū)分字母的大小寫,在文件夾名稱和文件名稱處可嘗試輸入部分字母后按Tab鍵由系統(tǒng)自動補齊。

程序在第一次運行時需要先轉(zhuǎn)換模型,會耗時近5?min,耐心等待后會看到視頻界面,在視頻中可以識別出每一幀中的汽車。多媒體API(JETSONNano上會耗時近20min)范例如圖5.5所示。視頻全長約1?min,播放結(jié)束后程序會自動退出。

圖5.5多媒體API范例

5.1.2人工智能應(yīng)用測試

JETSON-inference是NVIDIA官方提供的人工智能相關(guān)應(yīng)用的源代碼范例,它提供了各種基于TensorRT深度學(xué)習(xí)的應(yīng)用實現(xiàn)代碼,可以在實時攝像頭應(yīng)用中加載深度學(xué)習(xí)模型,用于圖像識別和具有定位功能的網(wǎng)絡(luò)檢測,還可實現(xiàn)圖像分割功能。

1.?

JETSON-inference下載與編譯

按Ctrl+Alt?+?T組合鍵運行Terminal程序,在程序界面中輸入如下命令后按回車鍵,輸入密碼“NVIDIA”后按回車鍵,就可更新安裝程序列表,移除無用程序,升級現(xiàn)有程序。

$sudoaptupdate

$sudoaptautoremove

$sudoaptupgrade

執(zhí)行升級命令的耗時受限于網(wǎng)絡(luò)連接速度。升級完成后,在Terminal界面中輸入如下命令,安裝CMake。

$sudoaptinstallcmake

CMake是一個跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝和編譯過程。CMake并不能直接建構(gòu)出最終的軟件,只是產(chǎn)生一個標準的建構(gòu)檔,該建構(gòu)檔需要配合CMake工具才能建構(gòu)出最終的軟件。

CMake安裝完成后,在Terminal界面中輸入如下命令,下載JETSON-inference程序包并更新submodule。

$mkdir~/workspace/

$cd~/workspace/

$gitclonehttns://ithub.com/dusty-nv/JETSON-

inference

$cdJETSON-inference

$gitsubmoduleupdate–init

繼續(xù)輸入如下命令,完成JETSON-inference程序的預(yù)編譯工作。

$mkdirbuild

$cdbuild

$cmake..

在預(yù)編譯的過程中會彈出兩個對話框。在第一個對話框中需要確認下載哪些預(yù)訓(xùn)練模型,如圖5.6所示。

圖5.6確認是否下載預(yù)訓(xùn)練模型

在第二個對話框中需要確認是否安裝PyTorch及安裝版本,如圖5.7所示。

圖5.7確認是否安裝PyTorch

預(yù)編譯完成后,運行如下命令編譯JETSON-inference。

$sudocmake-j4

2.圖像分類范例測試

訪問網(wǎng)址/dusty-nv/JETSON-inference/releases,下載“GoogleNet.

tar.gz”,下載文件會默認保存到“~/Downloads”目錄下。在Terminal界面中輸入如下命令,解壓縮模型文件至相應(yīng)目錄中。

$cd~/workspace/JETSON-inference/data/networks

$tar-xzf~/Downloads/GoogleNet.tar.gz

圖5.8官方提供的預(yù)訓(xùn)練模型備用下載頁面

在Terminal界面中運行如下命令,查看所使用攝像頭的索引號。

$ls/dev/video

查看攝像頭的運行界面如圖5.9所示,當(dāng)系統(tǒng)中只有一個攝像頭時,攝像頭的索引號通常是0;當(dāng)系統(tǒng)中有兩個攝像頭時,攝像頭索引號通常是0和1。如果系統(tǒng)中同時有CSI攝像頭和USB攝像頭,CSI攝像頭的索引號通常為0,USB攝像頭的索引號為1。

圖5.9查看攝像頭索引號

如果使用CSI攝像頭(以索引號是0為例),在Terminal界面中輸入如下命令:

$cd~/workspace/JETSON-inference/build/aarch64/bin

$./imagenet-camera--network=googlenet--camera=0

如果使用USB攝像頭(以索引號是0為例),在Terminal界面中輸入如下命令:

$cd~/workspace/JETSON-inference/build/aarch64/bin

$./imagenet-camera--network=googlenet--camera=/dev/video0--width=640--height=480

此處運行的imgenet-camera命令支持以下參數(shù):

圖像分類范例如圖5.10所示,攝像頭實時采集的畫面通過分類算法得到當(dāng)前畫面中類別概率最高的物體,并將其類別和類別概率顯示在畫面的左上角。程序在第一次運行時需要轉(zhuǎn)換模型,耗時較久,需要耐心等待。

圖5.10圖像分類范例

3.圖像語義分割范例測試

訪問網(wǎng)址/dusty-nv/jetson-inference/releases,下載“FCN-Alexnet-

Aerial-FPV-720p.tar.gz”,下載文件會默認保存到“~/Downloads”目錄下。

在Terminal界面中輸入如下命令,解壓縮模型文件至相應(yīng)目錄中。

$cd~/workspace/JETSON-inference/data/networks

$tar-xf~/Downloads/FCN-Alexnet-Aerial-FPV-720p.tar.Gz

在Terminal界面中輸入如下命令,從存儲設(shè)備中讀取指定的圖片,然后加載預(yù)訓(xùn)練的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論