Jetson Nano環(huán)境配置

本周用了5天的時間去完成Jetson Nano的環(huán)境配置工作,差點就控制不了自己的情緒啦瞬痘,但是好在書籍拯救了我扮饶,閱讀是人生的必選項:不要用虛假的積極姿態(tài)去消極地對抗枝嘶,以此來顯示自己的付出和工作,積極地解決它绰精,以更加平和的心態(tài)去面對它撒璧,時刻朝著最優(yōu)項前進!“絕不讓任何人或事將你變成一個殘廢笨使!”

1. 系統(tǒng)配置

事情的起因是由于實驗室需要對一個Nano(A01版本)平臺進行更換卿樱,需要讓原有的代碼能夠在新的Nano平臺(B01版本)上順利運行。

1.1. 系統(tǒng)配置

首先是系統(tǒng)配置問題硫椰,最簡單的方法是將原有的系統(tǒng)直接備份繁调,在新的板子上復原,這種方式是最簡單的靶草,能夠直接避免相關軟件和環(huán)境的配置蹄胰;其次則是直接在新的板子上安裝新的系統(tǒng),重新配置環(huán)境和安裝軟件奕翔,有點繁瑣裕寨。

  • 使用dd命令完成系統(tǒng)的備份
$ sudo dd if=/dev/mmcblk0 of=/media/nano/SATA /nano.img bs=1M status=progress

其中

  • /dev/mmcblk0NanoTF卡類型的第一個塊設備;
  • /dev/mmcblk1NanoTF卡類型的第二個塊設備;
  • /dev/mmcblk0p1是第一個塊設備的第一個分區(qū)宾袜;
  • /dev/mmcblk0p2是第一個塊設備的第二個分區(qū)捻艳;
  • /dev/sda是系統(tǒng)的第一個磁盤;
  • /dev/sdb是系統(tǒng)的第二個磁盤试和;
  • /dev/sda1是第一磁盤的第一個分區(qū)讯泣;
  • /dev/sda2是第一磁盤的第二個分區(qū);
$ sudo dd if=備份區(qū)域 of=存儲區(qū)域 bs=讀入和輸出的區(qū)塊大小 status=顯示寫入進度
# `Nano`采用的是`TF`卡存儲方式阅悍,以及外接`U盤`兩種存儲方式
@ `if=filename`對應的是需要備份的`TF`卡塊設備
@ `of=filename`對應的是 `U盤`的存儲區(qū)域和文件名
@  `bs`=區(qū)塊大小好渠,用于設置讀入或輸入的塊大小,對備份速度有影響
@ `status`=顯示寫入進度节视,用于設置寫入進度

由于TF卡的內存有限拳锚,一般直接備份,備份的鏡像和TF卡的大小是相同的寻行,所以原有的TF卡必然是裝不下的霍掺,這時候就需要將備份的鏡像備份到U盤中。亦或者采用下面這種方式拌蜘,在創(chuàng)建鏡像的同時對鏡像進行壓縮杆烁。

sudo dd if=/dev/mmcblk0 bs=1M status=progress | gzip > /media/nvidia/SATA/nano.img.gz

即便進行了壓縮也壓縮不到哪里去,建議用一個大一點的移動硬盤或者是U盤直接對鏡像進行備份简卧,不建議用同等大小的存儲設備進行備份兔魂,時間還是挺久的,32GTF卡大概需要30分鐘左右举娩!

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

借助上面的操作析校,已經(jīng)將Nano的鏡像拷貝到U盤,接下來就是將鏡像直接拷貝到Ubuntu系統(tǒng)下铜涉,然后將鏡像復原到TF上(當然也可以直接拷貝到TF存儲設備上智玻,但我沒試過,不知道行不行芙代,可以試一試)吊奢,也可以通過官方的工具balenaEtcher軟件工具直接將鏡像刷寫到TF卡中(建議采用該方法),不管哪種方法纹烹,需要耗費的時間都是巨大的事甜,十分消磨一個人的經(jīng)歷和耐心!刷寫完系統(tǒng)之后滔韵,可以先在舊的Nano板子上進行TF卡插入試驗逻谦,看看系統(tǒng)能不能啟動,然后再插入到新的板子上進行試驗陪蜻。存在一些特殊情況邦马,由于系統(tǒng)的硬件支持不同,會導致過去的系統(tǒng)鏡像在新的板子上無法啟動。

$ sudo dd if=/path/nano.img  of=/dev/sda bs=1M status=progress
# 對于壓縮鏡像的方法
$ gzip -d /path/nano.img.gz | sudo dd of=/dev/sda bs=1M status=progress
  • 直接從官網(wǎng)下載相應的版本鏡像滋将,按照官方教程進行刷寫

如果事情通過之前的步驟就已經(jīng)解決了邻悬,也就不需要之后的步驟啦,很明顯随闽,過程是曲折的父丰,由于A01版本的系統(tǒng)與B01的硬件支持不同,所以刷寫的系統(tǒng)鏡像能夠在原有的板子上完美啟動掘宪,一切正常蛾扇,但是到了新的板子就卡在Nvidia開機畫面上!所以還是老實地按照官方教程來吧魏滚!倒也簡單镀首,下載官方鏡像和刷寫工具,然后將鏡像刷寫到TF卡中鼠次,就是這么簡單的兩步更哄,開機之后對系統(tǒng)進行設置!默認設置就行腥寇!

1.2. 環(huán)境配置

  • 風扇支持
cd /etc
sudo touch rc.local
sudo chmod u+x rc.local
sudo gedit rc.local
# 填入如下內容成翩,255風速最大,0最小
#!/bin/bash
sleep 10
sudo /usr/bin/jetson_clocks
sudo sh -c 'echo 255 > /sys/devices/pwm-fan/target_pwm'

1. 自動調節(jié)風扇程序項目
2. 項目中文介紹
3. 自動控制風速

  • 增加swap空間
+ 生成swapfile文件
$ sudo fallocate -l 4G /var/swapfile
$ sudo chmod 600 /var/swapfile
$ sudo mkswap /var/swapfile
$ sudo swapon /var/swapfile
+ 設置為自動啟用swapfile
$ sudo bash -c 'echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab'
+ 建議重啟

亦或是采用如下方式:

sudo fallocate -l 4G /swapfile   # 創(chuàng)建swap分區(qū)赦役,分區(qū)大小設置為4G麻敌,可自己調節(jié)
sudo chmod 600 /swapfile         # 修改swap分區(qū)使用權限,只允許root用戶訪問
sudo mkswap /swapfile            # 將文件標記為swap空間
sudo swapon /swapfile            # 啟用swap空間扩劝,關機再開機后,需要再次利用此命令啟用swap空間
free -h                          # 驗證swap空間是否可用
  • 更換系統(tǒng)源(清華源)
+ 備份原有源
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak  
+ 修改源
sudo gedit /etc/apt/sources.list
+ 覆蓋
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
+ 更新和升級
sudo apt-get update
sudo apt-get upgrade
  • 煩人的drpkg warnning提醒
    直接采用sudo apt auto remove职辅,雖然大家都說這條指令是新手殺手棒呛,但是由于我是新裝系統(tǒng),所以不在乎域携,大不了重裝簇秒,但是之后更換源,能夠有效解決這一問題秀鞭!

1.3. 軟件配置

  • 谷歌拼音輸入法
+ 安裝和設置
https://blog.csdn.net/qq_33475105/article/details/106177082
+ 解決候選字符顯示的問題
https://blog.csdn.net/qq_21397217/article/details/52447263
+ 最后重啟Nano趋观,就可以正常使用谷歌輸入法
  • 系統(tǒng)資源監(jiān)控Jtop
+ 安裝pip3
$ sudo apt-get install python3-pip python3-dev
+ 安裝jtop
$ sudo -H pip3 install -U jetson-stats
+ 重啟
$ sudo jtop
$ xrandr --fb 1280x720

2. ROS安裝

今天太晚了皱坛,不想再寫啦!安裝ROS豆巨,按照官網(wǎng)安裝教程就行啦剩辟!關于安裝可能遇到的問題,主要有幾點提醒

  1. 建議設置清華的源
  2. 建議安裝基礎版本ROS,需要的相關包贩猎,可以后期進行安裝
sudo apt install ros-melodic-ros-base
  1. 建議選擇一個網(wǎng)絡環(huán)境較好的地方
  2. 建議掛上梯子
  3. sudo rosdep initrosdep update出錯的解決方案

該問題大多數(shù)是由于網(wǎng)絡問題導致的熊户,一般會修改一下幾個文件:

  • 手動添加20-default.list
sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list

+ 添加如下內容
# os-specific listings first
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx

# generic
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte

# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
  • hosts文件
$ sudo gedit /etc/hosts
+ 在hosts文件末尾添加如下內容,這個IP地址經(jīng)常變化吭服,需要自己去查找
151.101.84.133  raw.githubusercontent.com
  • resolv.conf文件
sudo gedit /etc/resolv.conf
+ 添加如下內容嚷堡,意義不大
nameserver 8.8.8.8 #google域名服務器
nameserver 8.8.4.4 #google域名服務器

【注】如果上述方案都不行,建議找個網(wǎng)絡好點的地方艇棕,或者是啥手機熱點之類的蝌戒!最終結果如下,則表明初始化成功啦

reading in sources list data from /etc/ros/rosdep/sources.list.d
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml
Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
Skip end-of-life distro "ardent"
Skip end-of-life distro "bouncy"
Add distro "crystal"
Add distro "dashing"
Add distro "eloquent"
Skip end-of-life distro "groovy"
Skip end-of-life distro "hydro"
Skip end-of-life distro "indigo"
Skip end-of-life distro "jade"
Add distro "kinetic"
Skip end-of-life distro "lunar"
Add distro "melodic"
Add distro "noetic"
updated cache in /home/eco/.ros/rosdep/sources.cache

3. OpenCV編譯安裝

Jetpack情況是自帶OpenCV4的欠肾,為了讓個板子的版本一致瓶颠,安裝了OpenCV,還是基本步驟刺桃,先下載OpenCV主安裝源碼和附加模塊的源碼.

# 安裝依賴粹淋,有些庫可能安裝不上,不用管
echo "** Install requirement"
sudo apt-get update
sudo apt-get install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt-get install -y python2.7-dev python3.6-dev python-dev python-numpy python3-numpy
sudo apt-get install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install -y libv4l-dev v4l-utils qv4l2 v4l2ucp
sudo apt-get install -y curl
sudo apt-get update
 
# 下載源碼
echo "** Download opencv-4.0.0 source code"
https://github.com/opencv/opencv/archive/4.0.0.zip -o opencv-4.0.0.zip
https://github.com/opencv/opencv_contrib/archive/4.0.0.zip -o opencv_contrib-4.0.0.zip
# 下載之后瑟慈,將兩個壓縮文件解壓在統(tǒng)一目錄下
cd opencv-4.0.0/
 
echo "** Building..."
mkdir build
cd build/
# 配置
cmake -D OPENCV_GENERATE_PKGCONFIG=ON -D WITH_CUDA=ON -D CUDA_ARCH_BIN="5.3" -D CUDA_ARCH_PTX="" -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.0.0/modules -D WITH_GSTREAMER=ON -D WITH_LIBV4L=ON -D BUILD_opencv_python2=ON -D BUILD_opencv_python3=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
# -D OPENCV_GENERATE_PKGCONFIG=ON一定要添加
# 還有幾個小問題桃移,我忘啦!
# 編譯葛碧,建議采用單線程借杰,同時建議夸大自己的SWAP空間為6G
make
sudo make install
sudo apt-get install -y python-opencv python3-opencv
 
echo "** Install opencv-4.0.0 successfully"
  • OpenCV版本配置問題
sudo gedit /etc/bash.bashrc
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

編譯出現(xiàn)的問題

參考資料

1. Jetson Nano的SD卡鏡像
2. Jetson-nano 使用中的一些技巧

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市进泼,隨后出現(xiàn)的幾起案子蔗衡,更是在濱河造成了極大的恐慌,老刑警劉巖乳绕,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绞惦,死亡現(xiàn)場離奇詭異,居然都是意外死亡洋措,警方通過查閱死者的電腦和手機济蝉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來菠发,“玉大人王滤,你說我怎么就攤上這事∽茵” “怎么了雁乡?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長糜俗。 經(jīng)常有香客問我蔗怠,道長墩弯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任寞射,我火速辦了婚禮渔工,結果婚禮上,老公的妹妹穿的比我還像新娘桥温。我一直安慰自己引矩,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布侵浸。 她就那樣靜靜地躺著旺韭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掏觉。 梳的紋絲不亂的頭發(fā)上区端,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音澳腹,去河邊找鬼织盼。 笑死,一個胖子當著我的面吹牛酱塔,可吹牛的內容都是我干的沥邻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼羊娃,長吁一口氣:“原來是場噩夢啊……” “哼唐全!你這毒婦竟也來了?” 一聲冷哼從身側響起蕊玷,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤邮利,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后垃帅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體延届,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年挺智,在試婚紗的時候發(fā)現(xiàn)自己被綠了祷愉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窗宦。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡赦颇,死狀恐怖,靈堂內的尸體忽然破棺而出赴涵,到底是詐尸還是另有隱情媒怯,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布髓窜,位于F島的核電站扇苞,受9級特大地震影響欺殿,放射性物質發(fā)生泄漏。R本人自食惡果不足惜鳖敷,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一脖苏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧定踱,春花似錦棍潘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至畅哑,卻和暖如春肴楷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荠呐。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工赛蔫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人直秆。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓濒募,卻偏偏與公主長得像,于是被迫代替她去往敵國和親圾结。 傳聞我的和親對象是個殘疾皇子瑰剃,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內容