当前位置:网站首页>ROS学习(二十)机器人SLAM功能包——rgbdslam的安装与测试
ROS学习(二十)机器人SLAM功能包——rgbdslam的安装与测试
2022-07-06 18:12:00 【敲代码的雪糕】
文章目录
前言
在前面的学习中,slam构建出的地图都是二维地图,而目前很多算法可以实现三维信息的地图构建,机器人不仅知道地图中的什么位置有障碍物,而且还知道该障碍物是什么。
ROS提供了多种3D SLAM的功能包,rgbdslam就是其中一种,本篇主要学习rgbdslam的安装与测试。
一、新建工作空间
命令如下:
mkdir -p ~/catkin_rgbdslam_ws/src
cd ~/catkin_rgbdslam_ws/src
catkin_init_workspace
cd ~/catkin_rgbdslam_ws
catkin_make
二、下载rgbdslam_v2作者对应的g2o
命令如下:
cd ~/catkin_rgbdslam_ws/src
sudo apt-get install libsuitesparse-dev
git clone https://github.com/felixendres/g2o.git
cd g2o
mkdir build
cd build
cmake ..
make..
sudo make install
其中,第二条命令负责安装依赖。
三、安装pcl1.8
下载,命令如下:
cd ~
wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.8.0.tar.gz
tar -xvzf pcl-pcl-1.8.0.tar.gz
cd ~/pcl-pcl-1.8.0
gedit CMakeLists.txt
将以下内容添加到CMakeLists.txt的第146行(在endif()之后),即添加C++11支持:
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
编译、安装,命令如下:
cd ~/pcl-pcl-1.8.0
mkdir build
cd build
cmake ../
make VERBOSE=1
sudo make install
四、配置rgbdslam_v2
命令如下:
cd ~/catkin_rgbdslam_ws/src
git clone https://github.com/felixendres/rgbdslam_v2
cd rgbdslam_v2
gedit CMakeLists.txt
修改CMakeLists文件内容,将
find_package(PCL 1.7 REQUIRED COMPONENTS common io)
改为:
find_package(PCL 1.8 REQUIRED COMPONENTS common io)
并且在最低端加入以下内容:
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
修改 /opt/ros/kinetic/share/pcl_ros/cmake/pcl_rosConfig.cmake文件,将所有/usr/lib/x86_64-linux-gnu/libpcl_开头的内容改成/usr/local/lib/libpcl_(总计34个)
五、构建siftgpu库
命令如下:
cd ~/catkin_rgbdslam_ws/src/rgbdslam_v2/external/SiftGPU
sudo apt-get install libglew-dev
sudo apt-get install libdevil1c2 libdevil-dev
make
六、编译rgbdslam_v2
命令如下:
cd ~/catkin_rgbdslam_ws
catkin_make
cd build/rgbdslam_v2
make VERBOSE=1
make install
若编译报opencv错误,可以根据本篇博客 openCV踩坑日记进行操作,然后重新编译。
七、测试
1、简单测试
新开一个终端,运行roscore
roscore
切换到/catkin_rgbdslam_ws/devel/lib/rgbdslam/目录下,打开另一个终端,运行如下命令:
./rgbdslam
界面如下:
若此界面正常显示,则证明rgbdslam安装成功。
2、数据集测试
下载数据集,下载地址:http://vision.in.tum.de/data/datasets/rgbd-dataset/download#freiburg1_room,将下载好的.bag文件存放到catkin_rgbdslam_ws/rgdb_data目录下。
修改rgdbslam.launch文件,确保订阅的话题与数据集的一致,修改内容如下:
<param name="config/topic_image_mono" value="/camera/rgb/image_color"/>
<param name="config/topic_image_depth" value="/camera/depth/image"/>
打开终端,输入命令如下:
roscore
切换到rgdbslam_v2/launch目录下,打开新的终端,命令如下:
roslaunch rgbdslam rgbdslam.launch
界面如下所示:
切换到catkin_rgbdslam_ws/rgdb_data目录下,打开新的终端,命令如下:
rosbag play rgbd_dataset_freiburg1_room.bag
数据包开始发布数据时,就可以在界面中看到图像数据和slam的过程,如下:
建图完成后,直接在菜单栏中选择保存为点云数据,我保存在rgdb_data目录下,文件名为quicksave.pcd。
可以使用pcl_ros功能包查看已保存的点云地图:
rosrun pcl_ros pcd_to_pointcloud quicksave.pcd
边栏推荐
- 今日问题-2022/7/4 lambda体中修改String引用类型变量
- 刨析《C语言》【进阶】付费知识【完结】
- Image watermarking, scaling and conversion of an input stream
- AcWing 345. Cattle station solution (nature and multiplication of Floyd)
- Yiwen takes you into [memory leak]
- According to the analysis of the Internet industry in 2022, how to choose a suitable position?
- Dark horse notes - create immutable sets and streams
- 编译命令行终端 swift
- swiper组件中使用video导致全屏错位
- JS how to quickly create an array with length n
猜你喜欢

dvajs的基础介绍及使用

黑马笔记---创建不可变集合与Stream流

Yunna - work order management system and process, work order management specification

shell脚本快速统计项目代码行数

Appium automation test foundation uiautomatorviewer positioning tool

新工作感悟~辞旧迎新~

According to the analysis of the Internet industry in 2022, how to choose a suitable position?

设置Wordpress伪静态连接(无宝塔)
![JS reverse -- ob confusion and accelerated music that poked the [hornet's nest]](/img/40/da56fe6468da64dd37d6b5b0082206.png)
JS reverse -- ob confusion and accelerated music that poked the [hornet's nest]

从底层结构开始学习FPGA----FIFO IP的定制与测试
随机推荐
C语言实例_4
场景实践:基于函数计算快速搭建Wordpress博客系统
Yiwen takes you into [memory leak]
MySQL's most basic select statement
Appium foundation - appium inspector positioning tool (I)
Box stretch and pull (left-right mode)
Mongodb checks whether the table is imported successfully
tansig和logsig的差异,为什么BP喜欢用tansig
AcWing 1141. 局域网 题解(kruskalkruskal 求最小生成树)
Use nodejs to determine which projects are packaged + released
When grep looks for a process, it ignores the grep process itself
Basic introduction and use of dvajs
2022/0524/bookstrap
子网划分、构造超网 典型题
AcWing 904. Wormhole solution (SPFA for negative rings)
Dark horse notes - exception handling
字符串转成日期对象
Sword finger offer II 035 Minimum time difference - quick sort plus data conversion
Gin introduction practice
AcWing 1142. Busy urban problem solving (minimum spanning tree)