建立地图的方式有两种:gmapping算法与 hector算法
区别:Gmapping 算法在建立地图时需要机器人雷达的扫描信息与里程计信息
Hector 算法只需要机器人的雷达扫描信息
本实验采取的是hector进行建图。
QQ图片20220505221634.jpg

参考上图,这是无里程计情况下地图建图结果,以下是教程

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

发表评论