本周用了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/mmcblk0
是Nano
的TF
卡類型的第一個塊設備; -
/dev/mmcblk1
是Nano
的TF
卡類型的第二個塊設備; -
/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
盤直接對鏡像進行備份简卧,不建議用同等大小的存儲設備進行備份兔魂,時間還是挺久的,32G
的TF
卡大概需要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
- 遠程連接VNC
挺麻煩的,有些步驟我也記不太清楚啦锋边!
1. SSH服務及VNC遠程控制
2. VNC遠程連接Nano
3. 安裝vino遠程桌面控制 - 遠程桌面分辨率設置
$ xrandr --fb 1280x720
2. ROS安裝
今天太晚了皱坛,不想再寫啦!安裝ROS豆巨,按照官網(wǎng)安裝教程就行啦剩辟!關于安裝可能遇到的問題,主要有幾點提醒
- 建議設置清華的源
- 建議安裝基礎版本ROS,需要的相關包贩猎,可以后期進行安裝
sudo apt install ros-melodic-ros-base
- 建議選擇一個網(wǎng)絡環(huán)境較好的地方
- 建議掛上梯子
-
sudo rosdep init
和rosdep 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)的問題
-
boostdesc_bgm.i: No such file or directory
問題詳細:https://github.com/opencv/opencv_contrib/issues/1301
解決辦法:https://blog.csdn.net/u011736771/article/details/85960300 - 多版本配置問題
參考材料:linux下編譯安裝opencv生成opencv.pc