雙目視覺(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。也比較適合一些研究無人機,無人車以及機器人的的研究團隊作為視覺的輸入,完成一些定位,識別等更高層的任務。
