雙目視覺(stereo vision),因爲估計深度相對容易且稠密,在姿態估計和建圖時容易初始化和估計尺度,因此在三維重建,SLAM等的應用中有這普遍的應用。html
ZED 做爲近幾年出現的商業化雙目傳感器,相比較同類的商業化產品,或者DIY雙目相機,ZED在集成度,距離(20m),實時性(深度圖在最小分辨率下可達60fps以上),分辨率(2K)和效果上具備必定的優點。449刀的價格也還算能夠接受。 以往ZED的ubuntu下,因爲ubuntu系統版本的支持問題,NVIDIA,cuda相關驅動安裝麻煩,同時對ROS的支持度通常,因此使用ZED的人有限。不過隨着Stereolabs,Ubuntu,NVIDIA各自新版本設備的發佈,以及廣大研究者的努力,目前SKD 2.0以上版本已經可以比較方便的在linux下開發使用。linux
本文整理歸納了,在ubuntu 16.04系統中 安裝ZED的主要流程以及在安裝使用過程當中遇到的一些問題和解決方案,但願對於也想在linux和ROS下使用ZED的開發者有所幫忙。git
假設咱們已經安裝好了ubuntu16.04,那麼主要的步驟能夠分紅:github
1 安裝設置ROS算法
2 安裝NVIDIA顯卡驅動ubuntu
3 安裝CUDAbash
4 安裝ZED SDK網絡
5 使用 ZED ROS Interfaceapp
一、 安裝設置ROSide
ROS是一個挺大的題目,不是一兩句可以說清楚的。不過ROS官方網站上的Tutorials(ROS tutorial)寫的比較詳細,過一遍beginner level的tutorials應該就能對ROS有一個大體的瞭解。
ROS安裝的相關參考,能夠看(ROS for Ubuntu ),這裏就很少說了。按照步驟安裝,只要網絡流暢,通常沒有太大問題。
二、 安裝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。也比較適合一些研究無人機,無人車以及機器人的的研究團隊做爲視覺的輸入,完成一些定位,識別等更高層的任務。