使用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 <WHERE_YOU_MOUNT_PENDRIVE>/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

然後就可以接着科研了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章