RGBD-SLAM V2 indigo 版本的安裝
LZ的系統是Ubuntu4.04+indigo+Kinect v1.
首先RGBD-SLAM需要很多的依賴項,如下:
RGBDSLAMv2 is based on the open source projects, ROS, OpenCV, OpenGL, PCL, OctoMap, SiftGPU, g2o, and more
這裡LZ假設ros已經成功安裝了,下面建立新的工作空間,LZ因為已經建立過了,為了便於管理沒有建立新的工作空間,小夥伴們各取所需
#Prepare Workspace
source /opt/ros/indigo/setup.bash
mkdir -p ~/rgbdslam_catkin_ws/src
cd ~/rgbdslam_catkin_ws/src
catkin_init_workspace
cd ~/rgbdslam_catkin_ws/
catkin_make
source devel/setup.bash
#Get RGBDSLAM
cd ~/rgbdslam_catkin_ws/src
wget -q http://github.com/felixendres/rgbdslam_v2/archive/indigo.zip
unzip -q indigo.zip
cd ~/rgbdslam_catkin_ws/
#Install
rosdep update
rosdep install rgbdslam
catkin_make
這個是README.md裡面直接copy過來的,也是最理想的情況,但是現實是
ERROR!
一、關於-lsiftgpu的問題
/usr/bin/ld: 找不到 -lsiftgpu
collect2: error: ld returned 1 exit status
make[2]: *** [/home/ros/Downloads/catkin_ws/devel/lib/rgbdslam/rgbdslam] 錯誤 1
make[1]: *** [rgbdslam_v2/CMakeFiles/rgbdslam.dir/all] 錯誤 2
make: *** [all] 錯誤 2
Invoking "make -j4 -l4" failed
首先會碰到找不到-lsiftgpu這個問題。筆記本上LZ編譯過兩次rgbdslam,一次順利通過,一次卡在這個問題上。
解決方案
在下載的rgbdslam的external中有對應的SiftGPU這個,直接按照正常軟體安裝步驟
mkdir build
cd build
cmake ..
make
然後在進行編譯就行了
二、關於g2o的問題
由於系統中會進行圖優化,使用的是G2O,網上也充斥著各種版本的G2O,如果版本不正確很容易出現undeference的錯誤,各種未定義
解決方案:解除安裝原有g2o,
執行命令
sudo apt-get install ros-indigo-libg2o
一步到位!
三、OpenCV版本的問題
會報cv::vector之類的問題
程式碼中使用的都是OpenCV2版本的介面, LZ有兩個版本的OpenCV,所以修改CMAKELists.txt
set(OPENCV_DIR /usr/share/OpenCV)
#or set it directly here, e.g.
#set(OpenCV_DIR /home/endres/ros_indigo/opencv2/build/)
#Then activate the following definition
#add_definitions(-DCV_NONFREE)
IF (NOT "${OpenCV_DIR}" EQUAL "")
MESSAGE("Using OpenCV from " ${OpenCV_DIR})
ENDIF (NOT "${OpenCV_DIR}" EQUAL "")
find_package(OpenCV 2.4 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARY_DIRS})
最後編譯通過了執行
roslaunch rgbdslam openni+rgbdslam.launch
還是會報錯,要安裝
sudo apt-get install ros-indigo-openni-camera
sudo apt-get install ros-indigo-openni-launch
再次執行,又會出現:
No devices connected.... waiting for devices to be connected.
安裝對應的驅動,一條條刷指令就行了,這差不多是rgbdslam v2編譯中碰到的各種高頻問題了,LZ很幸運都碰到了一遍^_^
最後附張圖吧,不然該說LZ瞎忽悠了半天
還是有挺多缺點的,LZ本來是想orbslam進行自主壁障導航,但是如果直接把關鍵幀對應的點雲進行拼接,效果不是很好(高博有一版,會出現很多outliers),rgbdslam相對建圖方面還是比較準確的,有稠密地圖,但是如果使用sift話速度肯定是不行的,後續還有很多改進的空間O(∩_∩)O哈!