建立地图的方式有两种:gmapping算法与 hector算法
区别:Gmapping 算法在建立地图时需要机器人雷达的扫描信息与里程计信息
Hector 算法只需要机器人的雷达扫描信息
本实验采取的是hector进行建图。
参考上图,这是无里程计情况下地图建图结果,以下是教程
1.参考上篇《激光雷达SLAM A1M8 RViz点状图的构建方法》,测试激光雷达是否能够正常工作。
ls /dev/ttyUSB0
ls -l /dev | grep ttyUSB
sudo chmod 666 /dev/ttyUSB0
source devel/setup.bash
roslaunch rplidar_ros view_rplidar.launch
记住,无论是chmod权限还是soruce都是只在本窗口有效,关闭需要重新赋权和source
2.获取建图程序包,并修改launch文件,使之能够在无里程计情况下基于base模式下工作
首先,进入catkin_ws/src文件夹下运行终端,获取程序包并编译
git clone https://github.com/tu-darmstadt-ros-pkg/hector_slam.git
cd ..
catkin_make
然后,修改两个launch文件
用gedit程序修改src/hector_slam/hector_mapping/launch/mapping_default.launch文件
倒数第二行由上面一行改为下面一行:
<!--<node pkg="tf" type="static_transform_publisher" name="map_nav_broadcaster" args="0 0 0 0 0 0 map nav 100"/>由赵成华修改-->
<node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0 0 0 0 0 0 base_link laser 100" />
第三行和第四行也由上面一行改为下面一行:
<!--<arg name="base_frame" default="base_footprint"/> CHANGED BY ZHAOCHENGHUA -->
<arg name="base_frame" default="base_link"/>
<!--<arg name="odom_frame" default="nav"/> CHANGED BY ZHAOCHENGHUA -->
<arg name="odom_frame" default="base_link"/>
用gedit程序修改src/hector_slam/hector_slam_launch/launch/tutorial.launch文件
第三行由上面一行改为下面一行:
<!--<param name="/use_sim_time" value="true"/> CHANGED BY ZHAOCHENGHUA -->
<param name="/use_sim_time" value="false"/>
3.进入catkin_ws工作空间内运行三个终端
第一个终端运行:
roscore
第二个终端运行:
sudo chmod 666 /dev/ttyUSB0
source devel/setup.bash
roslaunch rplidar_ros rplidar.launch
第三个终端运行:
sudo chmod 666 /dev/ttyUSB0
source devel/setup.bash
roslaunch hector_slam_launch tutorial.launch