1. 程式人生 > >ORB_SLAM2+kinect2.0+Ubuntu14.04+ROS Indigo總結

ORB_SLAM2+kinect2.0+Ubuntu14.04+ROS Indigo總結

一:kinect2.0在Ubuntu14.04和ROS Indigo下執行

錯誤總結:

1.執行./bin/Protonect出現下面的錯誤,表示版本號不合適:

[Info] [Freenect2Impl] enumerating devices...
[Info] [Freenect2Impl] 13 usb devices connected
[Info] [Freenect2Impl] found valid Kinect v2 @2:4 with serial 005262641947
[Info] [Freenect2Impl] found 1 devices
[Error] [OpenGLDepthPacketProcessorImpl] GLFW error 65543 The requested client API version is unavailable
[Error] [OpenGLDepthPacketProcessor] Failed to create opengl window.

解決方案:在Ubuntu中的“軟體與跟新”軟體中“附加驅動”選項中選擇第一個“使用NVIDIA binary driver-version...”,完美解決。

2.驗證

roslaunch kinect2_bridge kinect2_bridge.launch
出現下面的錯誤:

[kinect2_bridge.launch] is neither a launch file in package [kinect2_bridge] nor is [kinect2_bridge] a launch file name

解決方案:(跟新後關機重啟才完美解決,每次執行launch檔案都必須要執行source devel/setup.bash

啟動檔案)

(1)安裝3個依賴項:依賴包括:ROS Indigo (注意:ROS Indigo的iai_kienect包和ROS Kinect的 iai_kinect包不是一個) ,OpenCV 2.X,(注意:OpenCV3.X不能使iai_kinect正常工作),PCL1.7. x

(2)建立ros workspace:

      mkdir -p ~/iai_catkin_ws/src
      cd ~/iai_catkin_ws/src
      catkin_init_workspace
      source devel/setup.bash

(3)下載iai_kinect2並編譯:

cd ~/iai_catkin_ws/src/
git clone https://github.com/code-iai/iai_kinect2.git
cd iai_kinect2
rosdep install -r --from-paths .
cd ~/iai_catkin_ws
catkin_make -DCMAKE_BUILD_TYPE="Release"
(4)驗證:
cd ~/iai_catkin_ws
source devel/setup.bash
roslaunch kinect2_bridge kinect2_bridge.launch

然後重新開一個新的終端,輸入下面的語句就可以看到影象介面

cd ~/iai_catkin_ws
source devel/setup.bash
rosrun kinect2_viewer kinect2_viewer

參考資料:http://www.cnblogs.com/hitcm/p/5118196.html

http://www.itwendao.com/article/detail/225769.html

二:kinect2.0標定方法

具體的方案在官方的網站上有詳細的過程,網站地址:https://github.com/code-iai/iai_kinect2/tree/master/kinect2_calibration

遇到的問題:

問題一:執行rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record color時出現:

[ERROR] Tried to advertise a service that is already advertised in this node [/kinect2_calib_1458721837266890808/compressed/set_parameters]

解決方案:There must be something wrong with your chess board or you didn't choose the image window.(檢查一下你的棋盤格板是不是按照標定標準設定的,如果標定程式已經檢測到了你棋盤格板,選定標定顯示視窗,按空格即可)點選影象介面,同時按空格鍵儲存,沒按一次就會儲存一個影象

問題二:標定深度的時候出現:[ERROR] [DepthCalibration::compareDists] no distance sample data!

解決方案:沒有資料的意思,需要記錄前面的三種資料,每種100張,需要至少兩種距離

 標定注意事項:標定預設的是hd的分表率,一般會選擇中等大小的qhd解析度,需要在kinect2_calibration/kinect2_calibration.cpp的1311行中將K2_TOPIC_HD改為K2_TOPIC_QHD,然後重新編譯本環境

三:使用kinect2.0在ROS下跑通ORB_SLAM2例項

主要參考部落格:

https://github.com/raulmur/ORB_SLAM2

http://blog.csdn.net/rainvictor1/article/details/72854137

http://www.cnblogs.com/bigzhao/p/6635770.html