使用Xavier读取RealSense D435i的踩坑经历

由于项目需要,最近开始研究通过Xavier运行VINS的方法,使用的传感器是Intel的RealSense, 但是Xavier对RealSense的支持却不怎么好,下面介绍一下躲坑方法,希望众位看官能巧妙避开,直捣黄龙。

1、Xavier环境配置

在配置之前要先确定Xavier的运行版本,我用的JetPack4.2 ,L4T 32.1.0

  1. 下载Realsense官方的Xavier配置包,方法如下:
$ cd $HOME
$ git clone https://github.com/jetsonhacks/buildLibrealsense2Xavier
$ cd buildLibrealsense2Xavier

2.执行$ ./buildPatchedKernel.sh

这一步的操作是为了给当前系统打补丁,因为Xavier的内核和PC机所用的ubuntu内核不太一样,缺乏依赖文件,所以需要给系统打补丁,打完后会生成一个image文件,这个文件喜欢给Xavier刷机的筒子们肯定不陌生,一定能猜到下一步就是给系统刷机啦!

3.用生成的IMAGE文件给系统刷机

简要说一下刷机步骤:

  1. 拔掉Xavier电源,将其通过USB连在主机上
  2. 先按中间的按键不松手,再按离电源灯最近的按键,保持2秒钟,同时松手,然后用lsusb命令查看主机的usb接口有没有NVIDIA的标志,如果出来的话,进入下一步
  3. Xavier和主机需要在同一局域网下,将生成的image文件放在主机Jetpack的Xavier/Linux_for_Tegra/kernel 目录下,替换并备份原来的image文件
  4. 最后执行刷机操作$ sudo ./flash.sh -k kernel jetson-xavier mmcblk0p1

这个过程很快就能结束

2.安装librealsense 2前的准备工作

当Xavier重启后,执行

$ cd buildLibrealsense2Xavier

然后执行安装库文件的脚本,对了,在安装前要根据后续的使用调整,库文件的版本,我是想用ROS跑这套系统,要求4.25版本的,所以我是这么改的

  1. 打开installLibrealsense.sh,找到LIBREALSENSE_VERSION=v2.17.0这一行
  2. 改成LIBREALSENSE_VERSION=v2.25.0
  3. 保存即可

然而,如果现在就执行安装命令,虽然也可以通过编译,但是运行程序时会遇到USB 繁忙的问题,丢数据特别严重。

通过Google后,找到了解决方法

 

1.首先需要给usb驱动再打补丁,可以从这个网站下载,下载完后将其解压缩,得到.patch文件

然后,运行

cd /usr/src/kernel/kernel-4.9/drivers/media/usb/uvc/
patch -p1 < 0001-media-uvc-restrict-urb_num-no-less-than-UVC_URBS.patch

会遇到选择文件的问题,输入uvc_video.c,press Enter就行。

2.下载这个资源后解压缩,

1. Replace xusb_sil_rel_fw_Xavier
    1. copy xusb_sil_rel_fw_Xavier to pendrive
    2. back up original firmware
    mv /lib/firmware/tegra19x_xusb_firmware /lib/firmware/tegra19x_xusb_firmware_ori
    3. copy xusb_sil_rel_fw_Xavier to /lib/firmware
    cp /xusb_sil_rel_fw_Xavier /lib/firmware/tegra19x_xusb_firmware
    4. reboot device
    5. The fw timestamp should be:
        root@tegra-ubuntu:/sys/class/tegra-firmware/3610000.xhci# cat version 
        3610000.xhci: Firmware timestamp: 2019-07-16 08:23:26 UTC, Version: 60.05 release
2. Remove all the USB device and confirm that xhci enters ELPG
    1. Check "tegra-xusb 3610000.xhci: entering ELPG done" in kernel log
3. Increase falcon clock freq
    1. sudo su
    2. cd /sys/kernel/debug/bpmp/debug/clk/xusb_falcon
    3. echo 1 > state
    4. echo 408000000 > rate
    5. cat rate    ---------> To make sure the rate is 408000000

执行没问题之后

执行下面命令安装

$ ./installLibrealsense.sh

然后就可以接着科研了!

你可能感兴趣的:(Xavier)