ubuntu 中安裝 ZED SDK 及結合ROS 的使用


雙目視覺(stereo vision),由於估計深度相對容易且稠密,在姿態估計和建圖時容易初始化和估計尺度,所以在三維重建,SLAM等的應用中有這廣泛的應用。

ZED 作為近幾年出現的商業化雙目傳感器,相比較同類的商業化產品,或者DIY雙目相機,ZED在集成度,距離(20m),實時性(深度圖在最小分辨率下可達60fps以上),分辨率(2K)和效果上具有一定的優勢。449刀的價格也還算可以接受。 以往ZED的ubuntu下,由於ubuntu系統版本的支持問題,NVIDIA,cuda相關驅動安裝麻煩,同時對ROS的支持度一般,所以使用ZED的人有限。不過隨着Stereolabs,Ubuntu,NVIDIA各自新版本設備的發布,以及廣大研究者的努力,目前SKD 2.0以上版本已經能夠比較方便的在linux下開發使用。

 

本文整理概括了,在ubuntu 16.04系統中 安裝ZED的主要流程以及在安裝使用過程中遇到的一些問題和解決方案,希望對於也想在linux和ROS下使用ZED的開發者有所幫忙。

假設我們已經安裝好了ubuntu16.04,那么主要的步驟可以分成:

1 安裝設置ROS

2 安裝NVIDIA顯卡驅動

3 安裝CUDA

4 安裝ZED SDK

5 使用 ZED ROS Interface

 

1、 安裝設置ROS

ROS是一個挺大的題目,不是一兩句能夠說清楚的。不過ROS官方網站上的Tutorials(ROS tutorial)寫的比較詳細,過一遍beginner level的tutorials應該就能對ROS有一個大致的了解。

ROS安裝的相關參考,可以看(ROS for Ubuntu ),這里就不多說了。按照步驟安裝,只要網絡流暢,一般沒有太大問題。

 

2、 安裝NVIDIA顯卡驅動 

在linux下安裝顯卡驅動是一段非常東痛苦的精力,搞得不好,一重啟就黑屏。如果是多顯卡的機器,也會遇到無法切換,或者各種版本不兼容的問題。

在安裝之前,首先確認你的電腦是否在BIOS上有secure boot,如果有進入BIOS,把secure boot 設置成disable。 (這設置十分重要,不然會出現無法安裝CUDA的情況)

總結下來,目前比較方便的方式安裝NVIDIA顯卡驅動的方式是使用PPA,只要你能夠根據你的顯卡型號,選擇合適版本的驅動,一般不會出現一些神奇的問題。

2.1首先需要確定你的顯卡對應的驅動版本是: 可以利用官方提供的驅動下載查詢界面: NVIDIA 驅動查詢

    舉個例子,如果我們的顯卡是GTX745,通過搜索驅動的信息是 Linux x64 (AMD64/EM64T) Display Driver Version: 375.39 Release Date: 2017.2.14 Operating System: Linux 64-bit

查到后不用點擊下載,我們通過PPA來安裝。

2.2 添加PPA

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

然后在 software & updates中的Additional Drivers的標簽,找到和之前查到GPU驅動版本一致的條目,點擊apply changes

重啟之后應該就安裝好了。

安裝好之后會有一個NVIDIA X server setting,里面會有GPU-0 顯示的就是NVIDIA顯卡。如果是多顯卡,在PRIME profile選項中,可以選擇使用哪個顯卡。

 

3. CUDA

CUDA的安裝,根據不同的顯卡型號,不同電腦的BIOS設置,不同的CUDA版本都會有一些不同。這里整理了一下 ZED_SDK2.0 所需要的CUDA 8。

為了避免一系列可能會出現的問題,在安裝CUDA之前,可以進行一下安裝前的自檢,自檢可以參照官方給的文檔(CUDA安裝前自檢

如果沒有問題,那就繼續。

從官方主頁上下載CUDA ,我遇到的情況是,如果是 下載Local版的CUDA,或者直接點擊ZED SDK讓他自己下載CUDA裝,都會在安裝ZED SKD時出現找不到CUDA8的提示,在試了很多次之后,偶爾一次使用了CUDA下載頁面中的 deb(network)版本,然后就成功了。 暫時將次作為一種解決方案,有待更多人的驗證。

$ sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
$ sudo apt-get update
$ sudo apt-get install cuda

如果提示找不到apt-get install cuda時 找不到package

sudo dpkg --purge cuda-repo-ubuntu1604

 

 

4. ZED SDK

如果按照之前的安裝步驟,在安裝ZED SDK的過程中,應該不會有提示沒有GPU 或者沒有CUDA,如果有需要返回2,3進行確認。

chmod +x ZED_SDK_Linux_Ubuntu16_v2.0.0.run
./ZED_SDK_Linux_Ubuntu16_v2.0.0.run

在安裝的最后,會遇到提示一些文件找不到,這些都是ZED SDK需要的一些第三方庫,一般缺啥補啥,用apt-get就能搞定。

如果提示opencv的一些3.1.so文件缺失,這個問題需要注意。

其實我們在安裝ROS的時候,系統就應該已經安裝了opencv。如果是ROS kinetic的話,應該是opencv3.2。 嘗試了從新安裝opencv3.1,自己編譯,但是會遇到關於CUDA的一些Bug,而這個bug在3.2中會修復。所以最終使用了一個比較偷懶的方法,把相關的3.2的so文件和3.1的so文件link起來。

sudo ln -s /opt/ros/kinetic/lib/libopencv_core3.so.3.2 /usr/lib/libopencv_core.so.3.1 
sudo ln -s /opt/ros/kinetic/lib/libopencv_imgcodecs3.so.3.2 /usr/lib/libopencv_imgcodecs.so.3.1 
sudo ln -s /opt/ros/kinetic/lib/libopencv_videoio3.so.3.2 /usr/lib/libopencv_videoio.so.3.1 
sudo ln -s /opt/ros/kinetic/lib/libopencv_calib3d3.so.3.2 /usr/lib/libopencv_calib3d.so.3.1 
sudo ln -s /opt/ros/kinetic/lib/libopencv_imgproc3.so.3.2 /usr/lib/libopencv_imgproc.so.3.1 
sudo ln -s /opt/ros/kinetic/lib/libopencv_video3.so.3.2 /usr/lib/libopencv_video.so.3.1

這樣基本上就沒有問題了。可以通過運行ZED/tool/ Depth view來測試安裝是否正確,如果能夠正常運行同時顯示深度,說明SDK和GPU工作正常。

 

5. ZED SDK

在這次SDK更新之前,ZED能夠結合ROS不過還沒有很完善,2.0之后的版本和zed-ros-wrapper已經能夠滿足蠻多的開發使用需求。

可以git clone ZED-ROS-WRAPPER  如果想顯示點雲的可以結合PCL庫,另外的之前都已經裝好了。

cd ~/catkin_ws/
catkin_make
source ./devel/setup.bash
roslaunch zed_wrapper zed.launch

launch之后就會把各個數據以topic的形式發布出來,同時官方給的說明也還不錯,需要調整ZED參數可以修改launch文件。

官方也慢慢推出了針對TK1和多ZED的相關支持。 

 

總的來說,ZED是一個不錯的平台,適合科研機構采集雙目,深度,VO的數據,作為Stereo,SFM,SLAM,SceneFlow等的算法實驗或作為groundtruth。也比較適合一些研究無人機,無人車以及機器人的的研究團隊作為視覺的輸入,完成一些定位,識別等更高層的任務。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM