Jetson AGX Xavier避坑指南(三)——環境搭建1.(python3、pip、virtualenv、ros)

1.安裝python3.7

Jetson AGX Xavier自帶python版本爲2.7和3.6。
安裝python3.7指令:

sudo apt-get update  # 更新(可跳過)
sudo apt-get install python3.7
python3.7 -V  #查看是否安裝成功

創建軟連接,使python3默認指向python3.7

# 首先把之前的軟連接刪除:
sudo rm -rf /usr/bin/python3
which python3.7  # 查看python3.7 安裝路徑.

# 創建新的軟連接:
sudo ln -s /usr/bin/python3.7 /usr/bin/python3  # 添加python3的軟鏈接。 /usr/bin/python3.7 即 which python3.7輸出的安裝路徑
python3 -V  # 測試是否安裝成功

這種方法也可以修改Python默認指向的版本。
參考:ubuntu16.04升級Python3.5到Python3.7

附:arm64版vscode鏈接,下載 code-oss_1.28.0-1537780154_arm64.deb,雙擊在software裏安裝即可。

2.創建虛擬環境

在使用 Python 開發的過程中,工程一多,難免會碰到不同的工程依賴不同版本的庫的問題;亦或者是在開發過程中不想讓物理環境裏充斥各種各樣的庫,引發未來的依賴災難。此時,我們需要對於不同的工程使用不同的虛擬環境來保持開發環境以及宿主環境的清潔。

本來打算在Xavier上安裝Anaconda創建虛擬環境的,然而折騰半天沒有裝上。原因是Anaconda沒有aarch64架構的package。不得不說架構不同步步有坑。後來在知乎發現了這篇文章在Jetson Nano (TX1/TX2)上使用Anaconda與PyTorch 1.1.0,文中說github上有一個將conda移植到aarch64平臺上的“Archiconda”的項目,然而,我嘗試了好多次,安裝包根本下載不了,遂放棄

上一段純屬吐嘈,下面進入正題。

隨手附贈更換清華源教程:TX2 ubuntu18.04更換軟件源
以及更多源:NVIDIA Jetson TX2 or AGX Xavier apt切換國內的源

2.1 jetson AGX Xavier安裝pip

2.2節要用pip進行安裝,所以要先安裝pip。
a. 安裝工具 setuptools ,pip依賴於此工具包。
下載安裝包.zip文件,解壓,cd進目錄, 執行 :

sudo python3 setup.py install

b.安裝 pip3

下載安裝包.tar.gz文件
,解壓,cd進目錄, 執行 :

sudo python3 setup.py install
pip3 -V  # 查看pip3版本

pip3安裝完畢。

參考:從TX2 到 配置pip、cmake、OpenCV、tensorflow、Tensorflow Object Detection API
當然也可以順便安裝cmake.附贈陳皓大神的makefile教程

2.2 安裝 virtualenv和virtualenvwrapper

官網上的第一句話很好的概括了這兩個庫是做什麼的:
virtualenv is a tool to create isolated Python environments.
virtualenvwrapper is a set of extensions to Ian Bicking’s virtualenv tool.

virtualenvwrapper的安裝依賴virtualenv庫,因此要先安裝virtualenv。

a. 安裝virtualenv和virtualenvwrapper

sudo apt-get install python3-dev  # 安裝環境依賴  
# 報錯 E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
# 好像並沒有影響,繼續安裝virtualenv,仍然成功
pip3 install virtualenv --user
pip3 install virtualenvwrapper --user  # 安裝virtualenvwrapper用於管理虛擬環境

b. 配置virtualenvwrapper的工作目錄

which virtualenvwrapper.sh  # 查看virtualenvwrapper.sh路徑
mkdir $HOME/.virtualenvs  # 在$HOME下創建一個隱藏文件夾,作爲自定義的虛擬環境管理目錄
gedit ~/.bashrc  # 打開.bashrc文件

將下面的代碼添加到~/.bashrc 尾部,保存,

export WORKON_HOME=$HOME/.virtualenvs
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3  # 默認啓動版本爲python2,而virtualenv是用pip3安裝的,所以需要增加此環境變量
source /home/ur/.local/bin/virtualenvwrapper.sh  # virtualenvwrapper.sh的路徑

然後輸入終端命令: source ~/.bashrc配置完成。

c. 創建虛擬環境

mkvirtualenv -p /usr/bin/python3 rosRL  # -p 指定python解釋器 rosRL是環境名

其他命令

workon [虛擬環境名稱] # 切換/進入虛擬環境
deactivate # 退出虛擬環境
lsvirtualenv -b # 列出虛擬環境
lssitepackages # 查看環境裏安裝了哪些包
cdvirtualenv [子目錄名] # 進入當前環境的目錄
cpvirtualenv [source] [dest] # 複製虛擬環境
rmvirtualenv [虛擬環境名稱] # 刪除虛擬環境

如果不想要這個環境了,可以直接找到/.virtualenvs/…把env目錄刪除。

參考:
TX2入門教程軟件篇-安裝virtualenv和virtualenvwrapper
What is a virtualenv and how to install it?
virtualenvwrapper配置報錯

3. 在python3虛擬環境中安裝ROS

當前(2019-12-11)最新的ros版本ros melodic仍然只支持Python2.7。傳說中要在2019年推出的支持python3的ros noetic版本至今毫無消息,沒辦法只能折騰一下了。
使用Python3和Python2.7的混合環境
原理:使用virtualenv創建一個Python3的環境,然後在這個環境中編譯安裝自己需要的軟件包。在引用軟件包的時候,如果沒有對應的Python3的軟件包,會自動的去Python2.7的環境裏面找。這樣很多軟件包都是可以通用的。當然對於沒有做好Python3支持的軟件包也是沒法用的。

不推薦使用把系統默認Python替換成Python3然後源碼編譯安裝ros的方式,這樣一旦使用了Python3就沒辦法使用Pyhon2.7了。有些軟件包並沒有做好Pyhon3的支持,在使用中會產生不少問題。

workon rosRL  # 進入虛擬環境

Jetson AGX Xavier部署ROS Melodic跟Ubuntu下稍微有些不同,可以通過installROSXavier腳本安裝,參考:Robot Operating System (ROS) on NVIDIA Jetson AGX Xavier Developer Kit.

git clone https://github.com/jetsonhacks/installROSXavier.git  # 一定要下最新版的,若下載出錯可直接去github下載、解壓,不要忘記把文件名改爲installROSXavier
cd installROSXavier
./installROS.sh -p ros-melodic-desktop -p ros-melodic-rgbd-launch 

可能會報錯,根據提示修復:

sudo rosdep fix-permissions

打開小烏龜,檢測是否安裝成功:

roscore
rosrun turtlesim turtlesim_node  # 在新終端打開turtle
rosrun turtlesim turtle_teleop_key  # 新終端運行,通過鍵盤控制turtle運動

用ROSXavier腳本新建工作空間:

./setupCatkinWorkspace.sh [工作空間名]  # 注意刪掉中括號,否則它會出現在工作空間名中(大霧)

打開新終端會報錯,bash: export: `192.168.43.202’: not a valid identifier

gedit ~/.bashrc

打開.bashrc本件查看,發現export ROS_IP=192.168.55.1 192.168.43.202,有兩個ip,不懂什麼原因。把後面一個ip註釋掉,報錯消失,目前也沒有發現有什麼不良影響。

至此ros安裝成功。

Note

需要注意的是,即使使用的virtualenv中,python指向的是python3,但是隻要不在.py文件中添加python3的shebang( #!/usr/bin/env python3 ),rosrun還是會調用python2的。這樣可以很方便地兼容原來Python2的Package。

參考:在ROS中使用Python3
Robot Operating System (ROS) on NVIDIA Jetson AGX Xavier Developer Kit
NVIDIA Jetson Xavier melodic-ros安裝

發佈了12 篇原創文章 · 獲贊 9 · 訪問量 6348
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章