ZED stereolabs 開箱測評 + 使用說明

官網地址 :https://www.stereolabs.com/

SDK下載地址:https://www.stereolabs.com/developers/release/

文檔:https://www.stereolabs.com/docs/getting-started/

ROS插件下載:https://github.com/stereolabs/zed-ros-wrapper

不管三七二十一,先下載SDK和所有可能用到的文檔,官網推薦的環境是ubuntu16.04(內核版本4.4.0) + cuda9以上版本。

實驗的場景是工控機linux14.04 + ROS1.0,貌似沒有找到ubuntu14,所以直接下載了2.8.4的SDK,經過多次嘗試,始終沒有成功,第一個問題是最新版的SDK2.8.4安裝的過程中提示MD5 checksums erro,然而我從官網下載的過程中並沒有修改任何東西,懷疑是ubuntu系統和內核不匹配,往前下載了早期的SDK ,終於沒有報MD5的錯了,安裝過程中提示需要cuda依賴,又是經過多次嘗試還是不成功,有兩個原因,第一是因爲雖然系統爲ubuntu14.04,但是cuda要求14.04系統的內核版本是3.3.0,而我的系統內核卻是4.4.0。有如下兩種解決方法:降級內核版本或者升級系統。參考方法https://blog.csdn.net/pppp00qqqq/article/details/80715200,Ubuntu 14.04更換內核https://blog.csdn.net/hongquan1991/article/details/55213360

第二問題也是最根本無法解決的問題,那就是實驗室使用的研華工控機是不具有英偉達獨立顯卡的,只有集顯,所以cuda始終沒裝上。。無奈只能讓導師更換帶有英偉達獨顯的工控機,等後期有時間在測試ROS+ZED把,目前只能使用自己的小筆記本把相機跑起來。


 


 


 

實驗環境Windows10,首先下載的還是官網最新的SDK2.8.4,經過多次測試,安裝過程中各種報錯,提示各種dll庫缺少,尼瑪安裝一個SDK就這麼複雜嗎。。。換成SDK2.7的版本,意外竟然安裝成功了,沒有任何報錯,啓動ZED Explorer,提示有最新版的SDK,果斷忽略不更新,插上雙目的USB,完美啓動。

ZED相機還可以根據雙目的差異計算出深度圖像,這個過程計算量巨大,所以需要GPU進行運算,這也就是爲啥麼SDK需要安裝cuda的原因,如果沒有顯卡和顯卡驅動並安裝cuda驅動,是無法使用深度圖像的。

安裝cuda9.0(實在不敢安裝最新版的cuda10了),安裝過程相比較ubuntu就簡單很多了,自行網絡搜索。當我安裝完成之後,啓動ZED Depth Viewer軟件,發現圖像並沒有正常顯現,幾番排查發現是因爲顯卡驅動沒有正常運行。官網下載驅動:https://www.nvidia.cn/Download/index.aspx?lang=cn

 

安裝之後如下設備管理器-》顯示適配器-》Geforce840M,如果你的一開始就是這樣的,說明你的驅動是正常的。

重新打開ZED Depth Viewer軟件,右側的界面可以通過鼠標按住拖動,顯示比較立體的距離信息。


 

 


 

 


將自己的筆記本電腦裝成win10+ubuntu16.04.6的雙系統,然後下載NVIDIA-Linux下的顯卡驅動,並下載CUDA和SDK,準備再次測試linux系統下的ZED相機安裝和使用。最終的搭配爲Win10+Ubuntu16.04.6+GeForce840M顯卡驅動+cuda9.0+ZED SDK2.7.顯卡按照自己的驅動下載對應的即可.

值得注意的一點就是雙系統安裝顯卡驅動需要在裝系統的時候將安全模式關閉,否則後面安裝驅動大概率出錯。我是第一遍沒有關閉安全模式,等到一番操作之後,發現始終無法成功,然後去BIOS關閉安全模式,卻誤操作吧系統搞蹦了,所以你最好在安裝系統之前就在BIOS界面將安全模式禁用。第二個坑就是ubuntu16.04系統安裝的時候,有一個選項爲爲第三方圖形和無線安裝驅動,第一次安裝的時候我勾選了,然後驅動會衝突(不確定是否是這個原因導致的),第二次沒有勾選,安裝過程就沒報錯了,所以我還是建議不要勾選這個選項。安裝完成,進入系統,簡單的對輸入法進行配置,然後將下載的文件copy進來。

顯卡驅動安裝:

卸載原有驅動
sudo apt-get remove –purge nvidia*
禁用nouveau
sudo gedit /etc/modprobe.d/blacklist.conf

在最後添加:
blacklist nouveau
options nouveau modeset=0
保存退出編輯。
執行下面的操作:
sudo update-initramfs -u

重啓後執行:
lsmod | grep nouveau

若沒有輸出則表示屏蔽成功。
1.進入命令行界面

Ctrl-Alt+F1

2.禁用X-Window服務
sudo service lightdm stop #這會關閉圖形界面

3.給驅動run文件賦予執行權限

sudo chmod +x NVIDIA-Linux-x86_64-×××.run

4.安裝:

sudo ./NVIDIA-Linux-x86_64-×××.run –no-opengl-files 

 –no-opengl-files 只安裝驅動文件,不安裝OpenGL文件。這個參數最重要

必選參數解釋:因爲NVIDIA的驅動默認會安裝OpenGL,而Ubuntu的內核本身也有OpenGL、且與GUI顯示息息相關,一旦NVIDIA的驅動覆寫了OpenGL,在GUI需要動態鏈接OpenGL庫的時候就引起問題。

安裝過程中一些選項:
The distribution-provided pre-install script failed! Are you sure you want to continue? 選擇 yes 繼續。

Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later? 選擇 No 繼續。其餘默認即可。

安裝過程中需要選擇參數,可以根據自己的需要選擇。若出錯,則重新選擇,直至顯示成功安裝。

5.Driver測試:
nvidia-smi #若列出GPU的信息列表,表示驅動安裝成功
nvidia-settings #若彈出設置對話框,亦表示驅動安裝成功

cuda toolkit安裝:

進入命令終端,進入安裝的目錄進行cuda toolkit安裝
sudo sh cuda_9.1.85_387.26_linux.run 
執行此命令約1分鐘後會出現安裝協議要你看,剛開始是0%,按一次Ctrl + c,然後按照提示操作即可,先輸入 accept

然後是否安裝顯卡驅動選擇no !

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 387.26?
(y)es/(n)o/(q)uit: n
Install the CUDA 9.0 Toolkit?
(y)es/(n)o/(q)uit: y
最重要的是Drivers選擇no, toolkit 選擇yes, 其它選項按照自己需求來選擇。

安裝完成後重啓系統
reboot
檢查cuda toolkit是否安裝成功,終端輸入:
nvcc -V
會出現cuda的版本信息
 

配置環境變量:

sudo gedit ~/.bashrc

在最後添加:

export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-9.0/bin:$PATH

執行:
source ~/.bashrc
驗證cuda安裝是否成功:

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery

sudo make

./deviceQuery

 

若出現如下信息,則證明安裝成功:

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX TITAN X"
  CUDA Driver Version / Runtime Version          10.0 / 10.0
  CUDA Capability Major/Minor version number:    5.2
  Total amount of global memory:                 12210 MBytes (12802785280 bytes)
  (24) Multiprocessors, (128) CUDA Cores/MP:     3072 CUDA Cores
  GPU Max Clock rate:                            1076 MHz (1.08 GHz)
  Memory Clock rate:                             3505 Mhz
  Memory Bus Width:                              384-bit
  L2 Cache Size:                                 3145728 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 2 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Disabled
  Device supports Unified Addressing (UVA):      Yes
  Device supports Compute Preemption:            No
  Supports Cooperative Kernel Launch:            No
  Supports MultiDevice Co-op Kernel Launch:      No
  Device PCI Domain ID / Bus ID / location ID:   0 / 1 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.0, CUDA Runtime Version = 10.0, NumDevs = 1
Result = PASS

安裝ZED SDK:

在ZED官網下載或者拷貝自帶驅動U盤裏面的ZED_SDK_Linux_Ubuntu16_v2.7.0.run文件
然後終端進入該文件路徑

chomd +x ZED_SDK_Linux_Ubuntu16_v2.7.0.run
./ZED_SDK_Linux_Ubuntu16_v2.7.0.run

運行安裝即可。
測試時進入/usr/local/zed/tools,“./文件”方式路徑運行SDK的測試上位機即可。

安裝之後發現RGB圖像不太正常,懷疑是opengl渲染的問題,深度圖像由於GPU顯存不夠無法顯示,但總算是成功在雙系統上安裝驅動和cuda+sdk了。


 


 


萬事俱備,接下來就是ROS中使用相機了,之前使用的ROS都是在ubuntu14上面跑indigo,但由於要匹配顯卡驅動和SDK的版本,安裝了ubuntu16.04,那麼對應的ROS版本也要更新,參考網上的方法安裝了ROS kinetic。然後下載ZED的ROS開源包並使用:

$ sudo apt install ros-kinetic-rviz-imu-plugin
$ cd ~/catkin_ws/src/ #use your current catkin folder
$ git clone https://github.com/stereolabs/zed-ros-wrapper.git
$ cd ..
$ catkin_make -DCMAKE_BUILD_TYPE=Release
$ echo source $(pwd)/devel/setup.bash >> ~/.bashrc
$ source ~/.bashrc

第一次運行報錯:

[display_zedmss.launch] is neither a launch file in package [zed_display_rviz] nor is [zed_display_rviz] a launch file name
The traceback for the exception was written to the log file

原因是沒有執行source /devel/setup.bash.

再次編譯完成之後執行,第二次報錯:

ERROR: cannot launch node of type [zed_wrapper/zed_wrapper_node]: can't locate node [zed_wrapper_node] in package [zed_wrapper]

原因是zed_wrapper這個包下的節點沒有編譯成功,需要單獨編譯該包以生成節點。

$ catkin_make -DCATKIN_WHITELIST_PACKAGES="zed_wrapper"

再次執行完美通過。

運行ZED_mini節點如下:

$ roslaunch zed_wrapper zedm.launch

運行ZED_mini節點並通過RVIZ展示效果

$ roslaunch zed_display_rviz display_zedm.launch

 

 

 

 

 

 

 

 

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