Ubuntu16.04 ros Kinect v2下執行RGBD-SLAM_v2
1、軟硬體
軟體--裝有ROS kinetic ubuntu 16.04
硬體--筆記本、kinect2攝像頭 turtlebot2
2.ROS 安裝
官網安裝http://wiki.ros.org/kinetic/Installation/Ubuntu
3.kinectv2 安裝
https://blog.csdn.net/qq_33835307/article/details/81272377
4.建立catkin 工作空間存放專案
mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace cd ../ catkin_make cd ~/catkin_ws/src git clone https://github.com/felixendres/rgbdslam_v2
此版本CMakelists是基於的pcl1.7,我們要改成1.8,否則編譯好之後執行會崩潰。
5.安裝g2o
sudo apt-get install cmake libeigen3-dev libsuitesparse-dev libqt4-dev qt4-qmake libqglviewer-dev qt5-qmake
下載g2o:g2o地址: https://github.com/felixendres/g2o
mkdir build
cd build
cmake ..
make
sudo make install
6.pcl安裝
pcl1.8地址:https://github.com/PointCloudLibrary/pcl/archive/pcl-1.8.0.tar.gz
在pcl-pcl-1.8.0目錄下,編譯
mkdir build
cd build
cmake ..
make
sudo make install
7.編譯RGBDSLAM
將在專案的cmakelsits檔案中將pcl1.7改成1.8,並且加
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
編譯如下:
cd ~/catkin_ws
catkin_make
8.軟體測試
開啟kinect2相機
roslaunch kinect2_bridge kinect2_bridge.launch
如果您遇到了“required process[rgbdslam-2] has died”......Iinitiating down問題,請不要著急,該問題主要是由於rgbdslam依賴庫g2o和pcl不相容引起的;參考https://blog.csdn.net/zhuoyueljl/article/details/78536996
由於原作者給出的是kienct1不能採用的是kinect2,需要單獨建立launch 檔案,建立rgbdslam_kinect2.launch
內容如下:
<!-- This file shows the most important parameters in their default settings,
to make them easily available for beginners.
The openni driver has to be started seperately, e.g. with "roslaunch openni_launch openni.launch" -->
<launch>
<node pkg="rgbdslam" type="rgbdslam" name="rgbdslam" cwd="node" required="true" output="screen">
<!-- Input data settings-->
<param name="config/topic_image_mono" value="/kinect2/qhd/image_color_rect"/>
<param name="config/camera_info_topic" value="/kinect2/qhd/camera_info"/>
<param name="config/topic_image_depth" value="/kinect2/qhd/image_depth_rect"/>
<param name="config/topic_points" value=""/> <!--if empty, poincloud will be reconstructed from image and depth -->
<!-- These are the default values of some important parameters -->
<param name="config/feature_extractor_type" value="ORB"/><!-- also available: SIFT, SIFTGPU, SURF, SURF128 (extended SURF), ORB. -->
<param name="config/feature_detector_type" value="ORB"/><!-- also available: SIFT, SURF, GFTT (good features to track), ORB. -->
<param name="config/detector_grid_resolution" value="3"/><!-- detect on a 3x3 grid (to spread ORB keypoints and parallelize SIFT and SURF) -->
<param name="config/optimizer_skip_step" value="15"/><!-- optimize only every n-th frame -->
<param name="config/cloud_creation_skip_step" value="2"/>
<!-- subsample the images' pixels (in both, width and height), when creating the cloud (and therefore reduce memory consumption) -->
<param name="config/backend_solver" value="csparse"/><!-- pcg is faster and good for continuous online optimization, cholmod and csparse are better for offline optimization (without good initial guess)--> <param name="config/pose_relative_to" value="first"/><!-- optimize only a subset of the graph: "largest_loop" = Everything from the earliest matched frame to the current one. Use "first" to optimize the full graph, "inaffected" to optimize only the frames that were matched (not those inbetween for loops) -->
<param name="config/maximum_depth" value="2"/> <param name="config/subscriber_queue_size" value="20"/>
<param name="config/min_sampled_candidates" value="30"/><!-- Frame-to-frame comparisons to random frames (big loop closures) -->
<param name="config/predecessor_candidates" value="20"/><!-- Frame-to-frame comparisons to sequential frames-->
<param name="config/neighbor_candidates" value="20"/><!-- Frame-to-frame comparisons to graph neighbor frames-->
<param name="config/ransac_iterations" value="140"/>
<param name="config/g2o_transformation_refinement" value="1"/>
<param name="config/icp_method" value="icp"/> <!-- icp, gicp ... --> <!--
<param name="config/max_rotation_degree" value="20"/>
<param name="config/max_translation_meter" value="0.5"/>
<param name="config/min_matches" value="30"/>
<param name="config/min_translation_meter" value="0.05"/>
<param name="config/min_rotation_degree" value="3"/>
<param name="config/g2o_transformation_refinement" value="2"/>
<param name="config/min_rotation_degree" value="10"/>
<param name="config/matcher_type" value="SIFTGPU"/>
-->
</node>
</launch>
執行該專案結果截圖如下:
8.硬體測試
安裝turtlebot,具體參考https://blog.csdn.net/weixin_43540678/article/details/84031363
具體步驟為:
1.將電腦連線裝置,開啟裝置開關
2.roslaunch rgbdslam openni+rgbdslam.launch,開啟程式直到畫面出現,再執行3
3.roslaunch turtlebot_bringup minimal.launch,啟動底座
4.roslaunch turtlebot_teleop keyboard_teleop.launch,啟動遙控
參考:
1.https://blog.csdn.net/weixin_43540678/article/details/84031363
2.https://blog.csdn.net/weixin_43540678/article/details/84031363
3.http://wiki.ros.org/kinetic/Installation/Ubuntu
4.https://blog.csdn.net/qq_33835307/article/details/81272377
5.https://blog.csdn.net/github_34965845/article/details/81118369