ubuntu 16.04 kinetic下载gmapping源码并编译运行数据集,画图详细步骤笔记
在ubuntu中运行mapping后,我们就要对gmapping做优化。本人也不算是专门研究gmapping的,帮助一个朋友做一下,自己就做一个小笔记吧~(其实就是整理一下很多人的笔记)
- 首先你需要有一个ubuntu 16.04系统,本人是安装了其他的ubuntu版本,安装之后联网那块有问题,然后重新安装了,本人用的是这个重装的教程,第一个安装过程也差不多,只是不需要删除那一步,里边还有自己制作ubuntu系统盘的过程,需要的自取。链接:https://blog.csdn.net/WILLIAMMMS/article/details/80781006
- ubuntu16.04安装Ros(kinetic版本),链接:https://www.cnblogs.com/longronglang/p/11386522.html?from=singlemessage&isappinstalled=0
(2020.3.19更新小注:如果安装双系统出现Failed to open \EFI\BOOT\mmx64.efi,然后自动关机,就需要把u盘里的BOOT文件夹下的grubx64.efi改为mmx64.efi,然后重新安装。)
注: 在这个过程中可以让系统自动挑选最好的源,一般来说清华大学、华为、搜狐的源比较好用(本人用的是华为的源,顺利安装)。
gmapping源码下载并编译:
-
下载依赖项:
sudo apt-get install libsdl1.2-dev sudo apt install libsdl-image1.2-dev -
建立一个工作空间,并进入工作空间内的src文件夹
cd ~/catkin_ws/src/ -
使用git clone源码:
git clone https://github.com/ros-perception/openslam_gmapping.git git clone https://github.com/ros-perception/slam_gmapping.git git clone https://github.com/ros-planning/navigation.git git clone https://github.com/ros/geometry2.git git clone https://github.com/ros-planning/navigation_msgs.git -
在刚刚建的工作空间中编译:(本人的:/catkin_ws1)
catkin_make -
此处可能会报错(若无报错,请忽略这步)
报错1:CMake Error at geometry2/tf2_bullet/CMakeLists.txt:11 (find_package): By not providing “Findbullet.cmake” in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by “bullet”, but CMake did not find one.
解决步骤:安装一下依赖项sudo apt-get install libbullet-dev然后重新编译
catkin_make -
重新编译后可能会有新的错误(若无报错,请忽略这步)
报错1:Invoking “make -j8 -l8” falled 或者关于c++标准的问题
解决步骤:打开工作空间下的src/文件下的CmakeLists.txt文件。此步骤需要使用sudo权限sudo regit CmakeLists.txt在文件中加入以下一行代码(加入c++标准)
set( CMAKE_CXX_FLAGS "-std=c++11 -O3" )然后重新编译
catkin_make显示编译完成。
运行gmapping:
-
数据集下载(百度网盘)
链接:https://pan.baidu.com/s/1yFdkmxZSRVZHYKA1lYgFFw#list/path=%2F -
运行roscore
roscore -
重新打开一个终端,设置为读取仿真时间,即让系统知道现在要运行的是数据集
rosparam set use_sim_time true -
此处最好配置一下运行环境,不配置的话有可能会报错找不到gmapping
source ~/catkin_ws/devel/setup.bash -
在数据集文件夹下打开终端,然后查看一下话题
rostopic list -
话题结果显示如下:

-
在数据集所在文件夹下打开新终端,读取base_scan话题,这个不开的话,不能在rviz里边读取话题里的信息,就看不到地图。
rosrun gmapping slam_gmapping scan:=base_scan -
再在数据集所在文件夹下新开终端,对数据集进行play,如果需要运行其他数据集,就修改数据集名字basic_localization_stage_indexed.bag成你自己的。
rosbag play --clock basic_localization_stage_indexed.bag或者
rosbag play basic_localization_stage_indexed.bag咱也不知道为啥第一次用上边的可以运行,第二次之后要用去掉 --clock 才能运行。
-
正确运行后便会读取数据集信息运行,找个图片看一下吧

在rosrun gmapping slam_gmapping scan:=base_scan终端也会有输出信息。 -
下面就用rviz来看一下gmapping建的图吧
rviz -
如果以上均正确,则rviz里边的Global Status:ok前边会显示绿色的√,如果为红色错误或黄色警告,可能就是base_scan那步运行有错误。
然后选择add,选择by topic,选择map。

-
然后就可以看到gmapping在一点一点地建地图了。

-
到此结束!
-
注:之前还试过直接使用sudo apt-get install ros-kinetic-slam-gmapping命令直接下载安装,安装之后可以运行,但是地图不是一点一点建出来的,是一打开就是完整的地图,然后想在ubuntu中找源代码,但是实在找不到,放弃了, 就下载了源码,按以上步骤重新下载编译运行。
-
欢迎各位大神和小伙伴补充讨论!
---------------------更新-------------------------------------------2020.3.6----------------------
参考链接:https://blog.csdn.net/l0409044222/article/details/54380926/ -
Rviz保存地图
(1)安装map-serversudo apt-get install ros-indigo-map-server(2)保存地图
rosrun map_server map_saver -f mymap
316




被折叠的 条评论
为什么被折叠?



