天天看點

Ubuntu 驅動Intel RealSense D435i 深度相機及ROS應用

      Intel在Github上開源了支援所有RealSense系列相機的SDK,包括了D400、SR300系列深度相機和T265雙目跟蹤相機,支援Linux、Windows、Mac OS以及Android,原連結:IntelRealSense-Github。

      RealSense驅動對于Intel自家的X86_64架構的支援十分友好,驅動配置和調用也基本不會出現什麼問題,而對于ARM架構的TX2或者Nano來說就稍顯麻煩,日後會介紹給大家。以下是在基于Intel CPU的Ubuntu 16.04中利用apt-get安裝驅動包、快速配置RealSense ROS的步驟:

1、注冊公鑰:

sudo apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
           

2、添加包倉庫清單:

Ubuntu 16 LTS:

sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main" -u
           

Ubuntu 18 LTS:

sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u
           

3、安裝庫以及開發包:

sudo apt-get install librealsense2-dkms librealsense2-utils librealsense2-dev librealsense2-dbg
           

至此,驅動包安裝完成,使用以下指令可以打開RealSense的預覽插件,連接配接相機即可檢視裝置輸出。

PS:某些電腦在安裝過程中會出現configure UEFI Secure Boot的視窗,意思是開啟了UEFI Secure Boot,而這會阻止你使用第三方的硬體驅動,不必更改這一模式,隻需要按照視窗提示設定一個Secure Boot的密碼确認,然後重新開機就會自動進入到MOK界面,選擇第二項,yes之後輸入剛才設定的密碼,即可重新進入系統,此時realsense的驅動也就安裝好了。

realsense-viewer
           

       注意:D435i包含RGB圖像、深度圖像和IMU的資訊,如果插上沒反應,或者隻能出現Stereo深度圖這一個資訊,一般是因為USB端口不是3.0造成的,或者是端口識别錯了,換口或重新插拔試試。

      接下來是裝ROS包,在ROS架構下通過topic直接擷取D435i的資料。

4、下載下傳并編譯realsense2-camera ROS包

      在一個ROS工作空間的src目錄下,下載下傳realsense2-camera:

git clone https://github.com/intel-ros/realsense.git
           

      随後catkin_make編譯即可。

5、啟動rs_camera節點

roslaunch realsense2_camera rs_camera.launch
           

     隻有之前所有驅動配置成功,并在viewer中成功顯示資料後,這個節點才能夠被launch,該節點發出的topic如下:

/camera/color/camera_info
/camera/color/image_raw
/camera/depth/camera_info
/camera/depth/image_rect_raw
/camera/extrinsics/depth_to_color
/camera/extrinsics/depth_to_infra1
/camera/extrinsics/depth_to_infra2
/camera/infra1/camera_info
/camera/infra1/image_rect_raw
/camera/infra2/camera_info
/camera/infra2/image_rect_raw
/camera/gyro/imu_info
/camera/gyro/sample
/camera/accel/imu_info
/camera/accel/sample
           

      可以使用rostopic echo 或rqt_image_view等指令檢視topic内容。

在使用D435i一段時間後,有如下心得分享給大家:

1、某些情況下連接配接相機後使用realsense-viewer看到左側清單中隻顯示了一個裝置,正常應該是三個,這種情況是由于所連接配接的端口不是USB3.0,左上角裝置名稱旁邊可以看到顯示可能類似USB2.1的端口,這是不能夠正常使用的,找到USB3.0端口連接配接裝置才可以完整使用相機的所有子產品。

2、Intel提供的ROS包的Launch檔案中提供了各種參數的設定,比如RGB相機的分辨率和幀率,還有各種資料是否發出等等,可以手動将相機、深度、陀螺儀或者加速度計選擇性開啟與關閉。特别的,其中打開align_depth選項可以獲得一個與彩色圖像對齊的深度圖,這個包中所有的深度圖話題的類型都是Image,需要利用ROS中的CV_Bridge将消息轉換成OpenCV的單通道圖像格式才可以擷取某點深度值,在這個過程中部落客遇到的問題是,CV_Bridge的C++接口可以将這種32位編碼的Image消息轉換成普通圖像,而Python接口中對應的編碼名稱是mono16,這個就不能實作轉化,始終會報一個不是圖檔格式的錯誤。各位如果有解決辦法,希望能分享給我。

3、realsense的ROS驅動包其實都是根據Intel的驅動Librealsense實作的,隻是封裝出了各種資料的話題,覺得麻煩的話完全可以不使用這個包,直接利用lib的接口就可以開啟裝置、擷取資料。如果是Python使用者,pip install一個pyrealsense2,學習幾句簡單的指令就可以擷取原始資料。

繼續閱讀