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

猜你喜欢

转载自blog.csdn.net/weixin_39752599/article/details/85248182