之前在nx上配置运行vins-mono的时候发现相机没有imu输出导致vins-mono无法初始化,后来发现是相机驱动的问题。由于涉及到内核的修补,查阅官方的安装手册之后,经过实测只有几个特定版本的jetpack和librealsense可以使用。最终测试可以无bug的版本是:
jetpack4.5.1 + librealsensev2.50.0 + realsense_ros 2.3.2
如果知道怎么对nx刷机的话可以跳过本篇(但是前提是刷的是jetpack4.5.1),直接去看后面的安装相机驱动和部署VINS-mono
(二)jetson xavier nx安装D435i驱动和ros包(可稳定运行D435i相机,解决D435imu没有输出的问题)
(三)Jetson Xavier NX上编译运行Vins-Mono
一、刷入系统镜像
首先将开发板的第二三个引脚用杜邦线短接,这样才可以进入recovery模式。短接后插入usb线并接通电源。
安装好sdk manager(没有安装的自行百度一下,简单的几句指令)之后,打开历史版本的安装(因为我们需要安装的是旧版本,直接打开是没有旧版本的jetpack的),终端输入指令:
sdkmanager –-archivedversions
选择好开发板的型号,注意选择0001不是0000
,开发者套件emmc的版本,
选择ok。
然后取消勾选host machine和deepstream
,因为我们不需要为自己的ubuntu安装jetpack,由于现在的系统是安装到8G的emmc,现在就安装各种库会导致8G不够,因此等安装好系统并且将系统迁移到128的磁盘之后再安装各种库。注意jetpack的版本选择4.5.1
,
选择continue。
取消勾选jetson sdk components
,下面勾选accept
选择continue
下面输入主机密码之后选择flash
一直到安装好,选择finish。
二、挂载ssd为迁移系统做准备
由于现在系统是安装在emmc,需要迁移到固态硬盘中,不然8G后面肯定不够用,因为还有各种库没装,包括后期自己开发的一些程序。
拔掉短接的杜邦线,拔掉电源然后重新上电,系统就会自动加载,然后就是输入用户名和一些常规配置,按照步骤来就好。
终端输入
df -h
可以看到系统是没有挂载128g的内存的。
首先利用系统自带的工具disks将固态先挂载起来。
先打开系统自带的磁盘工具Disks
,按照下图选择format disk,然后按照提示完成即可。
然后创造新的磁盘,点击下图鼠标指向的+号
按照下图输入大小112g,点击next
然后输入想要的磁盘名称,这里我写的是ssd128,然后点击create
最后还需要点击下图鼠标指向的三角形来使挂载生效
到此挂载完成,可以再次使用df -h指令来查看挂载情况,可以看到白色的地方有刚刚挂载成功的ssd128.
三、迁移系统到固态
利用nvidia自带的迁移脚本
按照步骤在终端输入
git clone https://gitcode.com/jetsonhacks/rootOnNVMe.git
cd rootOnNVMe/
chmod 777 copy-rootfs-ssd.sh
./copy-rootfs-ssd.sh
chmod 777 setup-service.sh
./setup-service.sh
最后我们检查一下是否已经迁移了系统。可以看到挂载成功
四、继续安装其他的库
拔掉杜邦线,打开nx进入桌面并运行sudo apt-get update&& sudo apt-get upgrade先更新一下(千万不要更新镜像源,主要是为了后面修补d435i内核用,不用d435i的话无所谓)
,同样打开sdk
sdkmanager –-archivedversions
勾选DeepStream,取消勾选Host Machine,点击continue
取消勾选jetson os,因为在前面已经安装好镜像了,这里只需要安装库,所以勾选jetson sdk components,同时勾选下面的accept,点击continue后输入主机的密码。
然后输入安装好的镜像的名称和密码点击install
完成之后点击finish就完成了
五、安装jtop
jtop是nvidia的一个实时监控系统,可以让我们实时看到例如cpugpu利用率和各种库的安装情况
sudo apt install python3-pip
sudo -H pip3 install -U jetson-stats
reboot
重启之后可以在终端输入
jtop
可以看到库已经被成功装上。