原文鏈接:https://www.cnblogs.com/zengcv/p/6021512.html
因爲手上只有kinect V1 沒有V2,而網上關於ORB-SLAM2的實現都是基於Kinect2,最著名的是高博進行實現的 http://www.cnblogs.com/gaoxiang12/p/5161223.html。通過查閱部分資料,用Kinect1實現了ORB-SLAM2,這裏總結一下具體步驟。
1.我的系統:
Ubuntu14.04, ROS indigo,Lenovo Z485, Kinect V1.
2. 依賴項安裝,參照ORB-SLAM2的Prerequisites (dependencies) 部分
2.1 ROS 安裝的是indigo
(http://wiki.ros.org/indigo/Installation/Ubuntu) sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 sudo apt-get update sudo apt-get install libgl1-mesa-dev-lts-utopic sudo apt-get install ros-indigo-desktop-full sudo rosdep init rosdep update echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc source ~/.bashrc 安裝完後,ctrl+alt+t打開終端,執行roscore,測試ROS是否成功安裝。
2.2 Boostsudo apt-get install libboost-all-dev
2.3 Pangolin安裝 (下載地址 https://github.com/stevenlovegrove/Pangolin)git clone https://github.com/stevenlovegrove/Pangolin.git cd Pangolin mkdir build cd build cmake .. make -j
2.4 OpenCV (安裝的是OpenCV2.4.11,參考網站http://blog.csdn.net/tb_huge/article/details/51784625
)
2.5 Eigen3安裝
sudo apt-get install libeigen3-dev
cd /usr/include/eigen3 (ls查看,含有3個文件: Eigen signature_of_eigen3_matrix_library unsupported)
sudo cp Eigen/ .. -R (將Eigen文件夾放在 /usr/include 下面)
2.6
DBoW2和g2o (included in Thirdparty) 在ORB-SLAM2的Thirdparty文件夾裏面,無需安裝。 3. 安裝ORB-SLAM2 參照ORB-SLAM2的Installation部分 3.1 下載git clone https://github.com/raulmur/ORB_SLAM.git (可以直接放在home下,然後解壓) 3.2 修改.bashrc,加入
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH_TO_PARENT_OF_ORB_SLAM (紅色字體是需要修改的內容,改爲ROS文件夾下的ORB-SLAM2路徑)
gedit .bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/zfy/ORB-SLAM2/Examples/ROS (根據需要,紅色字體改爲對應的路徑) 3.3 cd到Examples/ROS/ORB_SLAM2,然後執行: mkdir build cd build cmake .. -DROS_BUILD_TYPE=Release make -j 編譯得到RGBD節點。(ps:新版本的ORB_SLAM2增加了build_ros.sh,裏面的內容就是上面4行命令) 3.4 cd到
/home/zfy/ORB-SLAM2,執行: chmod +x build.sh ./build.sh 編譯完成ORB-SLAM2。 (build.sh中包含編譯DBOW2和g2o,編譯過程很佔用計算資源,電腦會很卡,稍微等等)
4
. 安裝Kinect V1 驅動
sudo apt-get install libfreenect-dev
sudo apt-get install ros-indigo-freenect-launch
可以通過
roslaunch freenect_launch freenect.launch 驗證kinect驅動是否安裝成功; rostopic list查看ORB-SLAM2需要的兩個topic: /camera/rgb/image_raw /camera/depth_registered/image_raw 5. 配置launch文件 在解壓後的ORB-SLAM2的根目錄下新建文件kinect_orbslam2.launch , 其內容爲(根據需要,紅色字體改爲對應的路徑,其他的無需修改)
:
<launch>
<param name="orb_use_viewer" value="false"/>
<node pkg="ORB_SLAM2" type="RGBD" name="ORB_SLAM2"
args="/home/zfy/ORB_SLAM2/Vocabulary/ORBvoc.txt
/home/zfy/ORB_SLAM2/Examples/RGB-D/TUM1.yaml" cwd="node" output="screen"/>
<include file="$(find freenect_launch)/launch/freenect.launch">
<!-- use device registration -->
<arg name="depth_registration" value="true" />
<arg name="rgb_processing" value="true" />
<arg name="ir_processing" value="false" />
<arg name="depth_processing" value="false" />
<arg name="depth_registered_processing" value="true" />
<arg name="disparity_processing" value="false" />
<arg name="disparity_registered_processing" value="false" />
<arg name="sw_registered_processing" value="false" />
<arg name="hw_registered_processing" value="true" />
</include>
</launch>
6. 運行ORB-SLAM2
cd ORB-SLAM2
./build.sh
roslaunch kinect_orbslam2.launch
結果如下圖: