Nvidia Jetson AGX Xavier的CPU是ARM架构的,ARMv8。64位,集成的NVIDIA Tegra Xavier(nvgpu)显卡。内存32G,据同事说,显存与内存是共享的,因此也是32G。硬盘32G。由于CPU的问题,所以许多东西的使用与PC是不一样的。因此特地写此篇来记录与Xavier有关的,我用到的一些知识。需要注意的是,Xavier一开始的安装我并没有参与,也就是说JetPack那部分我依然不是很明白,只能说一下我的理解。
Jetson wiki有更为全面的介绍:https://elinux.org/Jetson_AGX_Xavier#Platform_Documentation。
Xavier已经自带了一个纯净版的Ubuntu18.04,且附带桌面,仅需使用HDMI线与显示屏相连,即可像普通的电脑一样进行操作。第一次进入系统后,需要记录一下ip地址,在后面的JetPack部分会用到。
具体的操作并不是我完成的,此处可能有误。
找到Xavier机身上那一排按钮(3个),按住中间的Recovery键2~3秒,再按住旁边的Power键2秒后松手,回到主机显示屏上可以看到sdkmanager中正在向Xavier刷写程序了
换源需要换 ARM 的源,不要换成了 PC 平台的软件源,Xavier 的系统是Ubuntu18.04,因此需要安装ros-melodic。
sudo vim /etc/apt/sources.list
Xavier清华源:
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main universe restricted
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main universe restricted
将上述加入sources.list即可,如果连接有显示屏,可以使用gedit。
Nvidia Jetson Xavier部署ROS跟PC上稍微有些不同,是可以直接通过脚本来安装的:
https://github.com/jetsonhacks/installROSXavier
$ git clone https://github.com/jetsonhacks/installROSXavier.git
$ cd installROSXavier
$ ./installROSXavier
$ ./setupCatkinWorkspace.sh [optionalWorkspaceName]
这里面一共有两个脚本,第一个脚本就是安装ros本身,第二个脚本是初始化ros的工作空间,可选项可以命名ros工作空间名字,默认是创建在home目录下的。最后为了方便起见,在~/.bashrc
中加入source /opt/ros/melodic/setup.bash
。
需要注意的是,ROS严重的依赖于Python2.7,因此执行上述操作前一定要确保python指向的版本正确。否则上述两个脚本在运行过程中均会出错。下面介绍下关于软链接的知识。
1.查看python这个可执行文件的所在位置
which python
which、whereis、locate、find命令区别如下:
2.python版本查看
python --version
3.查看软链接
ls -il
4.删除软链接
sudo rm xxx
5.新建软链接
sudo ln -s /usr/bin/python2.7 /usr/bin/python
其中前为源文件,后为生成的乱链接文件。
除了上述方法以外,如果需要频繁的切换python版本,可以考虑使用update-alternatives
,具体操作如下:
#设置python2为默认,优先级为100,越高越优先
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
#设置python3为默认,优先级为150
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
#可以任意切换版本了
sudo update-alternatives --config python
但需要注意的是,由于Ubuntu严重地依赖于自带的python版本,因此在进行版本升级的时候,必须删除所有的alternatives,并恢复python和python3的软链接(详见https://blog.csdn.net/a850565178/article/details/107517874)。
另外,由于Ubuntu不会默认安装pip和pip3,因此有需要的得自己手动安装:
sudo apt install python-pip
sudo apt install python-pip3
安装方式有两种,一种是利用apt,$ sudo apt install libpcl-dev
,另一种是从github上git下来自己进行编译。相对来说,第一种比较简单,且使用的是稳定版本。目前安装的话会是pcl-1.8,而从源码安装的好处在于,可以使用相对更新的一些特性。但是从嵌入式工程的角度来讲,由于基本不连接外网,因此还是少升级为妙,等遇到了bug再说。
不过这一部分主要还是按照需要来。
1.查看当前操作系统内核信息
uname -a
2.查看当前操作系统发行版信息
cat /etc/issue
3.查看cpu型号
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
4.查看cpu运行模式(即当前运行的位数)
getconf LONG_BIT
5.查看cpu是否支持64bit
cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
结果大于0,则说明支持64bit计算. lm指long mode, 支持lm则是支持64bit。
6.查看cpu信息概要
lscpu
7.CPU的详细信息
cat /proc/cpuinfo
当然也可以使用top或者htop来检测,但实际上有更适合Jetson的工具——jetson_stats,GitHub地址:https://github.com/rbonghi/jetson_stats。这个工具需要用pip来进行安装。
1.安装
sudo -H pip install jetson-stats
加了-H以后,会设置HOME这个环境变量到root的目录。
2.更新
sudo -H pip install -U jetson-stats
3.使用
jtop
可能会提示reboot,如果想先看看效果可以加一个sudo强制运行。除了可以查看硬件状况外,还可以进行模式的切换,调整风扇转速。
4.其他工具
查看Jetpack,L4T,以及安装的库的版本:
sudo jetson_release
更多命令见相应的GitHub的ReadMe。
https://blog.csdn.net/sinat_27554409/article/details/78227496
懒得找基于arm架构的软件,由于xavier的环境基本都在室内,即旁边可以有一台host,因此直接走host的代理即可。假设host的ip是192.168.0.100,代理方式是socks,代理端口是1080,则将host的小飞机设好以后,给xavier的设置代理192.168.0.100:1080。
https://markbroerkens.github.io/RACECARX/docs/software/jetson_native#install-wifibluetooth-m2-module