在Ubuntu16.04 ros Kinect 下运行RGBD-SLAM实战项目

1.安装ros kinetic

https://blog.csdn.net/weixin_43540678/article/details/84029866

创建catkin 工作空间存放项目

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ../
catkin_make

2.下载项目

cd ~/catkin_ws/src
git clone https://github.com/felixendres/rgbdslam_v2

此版本CMakelists是基于的pcl1.7,我们要改成1.8,否则编译好之后运行会崩溃,具体操作从第五步开始。

3.安装g2o依赖

sudo apt-get install cmake libeigen3-dev libsuitesparse-dev libqt4-dev qt4-qmake libqglviewer-dev qt5-qmake

4.安装g2o(确保使用此版本g2o,否则编译可能不通过)

g2o地址: https://github.com/felixendres/g2o
下载下来解压后进入g2o目录(此目录最后不要包含中文,否则可能出错),然后在此目录下打开终端,输入

mkdir build
cd build
cmake ..
make
sudo make install

5.下载pcl1.8并解压,最后不包含中文路径

pcl1.8地址:https://github.com/PointCloudLibrary/pcl/archive/pcl-1.8.0.tar.gz

6.用c++2011编译pcl

进入解压的pcl-pcl-1.8.0目录,打开终端

gedit CMakeLists.txt

找到地第146行(在endif()下面),添加下面一段话

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

保存文件退出

7.编译安装pcl1.8

在pcl-pcl-1.8.0目录下

mkdir build
cd build
cmake ..
make
sudo make install

7.将在项目的cmakelsits文件中将pcl1.7改成1.8

cd ~/catkin_ws/src/rgbdslam_v2
gedit CMakeLists.txt

将79行的

 find_package(PCL 1.7 REQUIRED COMPONENTS common io)

改成

 find_package(PCL 1.8 REQUIRED COMPONENTS common io)

保存退出

9.改pcl_rosConfig.cmake文件

sudo gedit /opt/ros/kinetic/share/pcl_ros/cmake/pcl_rosConfig.cmake

从119行开始将所有的"/usr/lib/x86_64-linux-gnu/libpcl"字符替换成"/usr/local/lib/libpcl",可以用查找和替换功能实现

10.编译 siftgpu

cd ~/catkin_ws/src/rgbdslam_v2/external/SiftGPU
sudo apt-get install libglew-dev
sudo apt-get install libdevil1c2 libdevil-dev
make

安装openni

sudo apt-get install ros-kinetic-openni-* ros-kinetic-openni2-*
rospack profile

11.编译rgbdslam

cd ~/catkin_ws
gedit src/rgbdslam_v2/CMakeLists.txt

在最后添加

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

保存退出,然后编译

catkin_make

12.测试

在终端输入

roscore

新开终端,输入

~/catkin_ws/devel/lib/rgbdslam/rgbdslam

项目界面

安装turtlebot

https://blog.csdn.net/weixin_43540678/article/details/84033325

连接rgbd设备后

生成kobuki别名

rosrun kobuki_ftdi create_udev_rules

检查别名:

输入检测命令:

ls /dev/kobuki 

会显示有对应的设备/dev/kobuki,前提是电脑连接设备了

设置环境变量

echo $TURTLEBOT_3D_SENSOR
#Output: kinect

如果你看到一个3D传感器,例如asus_xtion_pro,您将需要设置环境变量的默认值

echo "export TURTLEBOT_3D_SENSOR=kinect" >> .bashrc
source .bashrc

开启程序,直到出现画面

roslaunch rgbdslam openni+rgbdslam.launch

启动底座

roslaunch turtlebot_bringup minimal.launch

启动遥控

roslaunch turtlebot_teleop keyboard_teleop.launch

runing

补充

经过实践,先开底座,在开程序,会导致程序没有画面,所以我推荐的启动顺序为
1.将电脑连接设备,打开设备开关
2.roslaunch rgbdslam openni+rgbdslam.launch,开启程序直到画面出现,再执行3
3.roslaunch turtlebot_bringup minimal.launch,启动底座
4.roslaunch turtlebot_teleop keyboard_teleop.launch,启动遥控

发布了14 篇原创文章 · 获赞 13 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览