学习笔记之——ROS激光雷达SLAM建图

装完双系统以及配置好机器人后(参考博文:《Ununtu 16.04LTS安装(与windows共存,双系统)》和《ROS中机器人与电脑的网络配置》)。接下来用激光雷达进行SLAM建图哈~

参考书籍的建图(章节11.2.4)和运行导航(11.5.2)

建图

通过turtlebot3上的激光雷达实现SLAM运行顺序如下:

首先ssh到机器人上,然后运行主节点

ssh链接机器人 ssh [email protected]
roscore

再在机器人上启动机器人

roslaunch turtlebot3_bringup turtlebot3_robot.launch

在[Remote PC]中,运行turtlebot3_slam.launch启动文件。turtlebot3_slam功能包只包含一个launch文件。运行后,将运行robot_state_publisher节点和slam_gmapping节点,其中robot_state_publisher节点将两个轮子和每个关节的三维位置和
方向信息以TF形式发布,而slam_gmapping节点用于绘制地图。另外,描述包含机器人的外观信息的URDF的robot_model也会被设置。

$ export TURTLEBOT3_MODEL=burger
$ roslaunch turtlebot3_slam turtlebot3_slam.launch

运行RViz可视化工具RViz,以便在SLAM过程中可以直观地确认结果。运行时如果附加如下所示的“-d”选项,则从一开始就会添加有关显示(display)的插件,会比较方便。

$ export TURTLEBOT3_MODEL=burger
$ rosrun rviz rviz -d `rospack find turtlebot3_slam`/rviz/turtlebot3_slam.rviz

然后通过直接遥控机器人并执行SLAM操作,此时发出的/scan和/tf话题存储在名为scan_data的bag文件中。可以在后期使用此文件创建地图,也可以重现绘制地图过程中的/scan和/tf话题,而无需重复做实验。可以把它想象成来自实验的话题数据的副本。以下命令的-O选项是指定输出文件名称的选项,这将会把输出内容保存为叫做“scan_data.bag”的bag文件。

rosbag record -O scan_data /scan /tf

以下命令允许用户手动遥控机器人并执行SLAM操作。这里重要的是不要过快改变机器人的速度,也不要以过快的速度前进、后退或旋转。移动机器人时,机器人必须扫描要测量的环境的每个角落。这需要经验和技巧,因此需要在大量的SLAM实验中积累经验。

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

最后可以开始绘制地图了

现在已经完成了所有的准备工作,让我们运行map_saver节点来创建一个地图吧。当移动机器人时,机器人会根据测位(odometry)、tf信息和传感器的扫描信息来创建地图。这可以在我们刚刚运行的RViz中看到。创建的地图保存在运行map_saver的目录中。除非指定了文件名,否则保存为实际地图文件map.pgm和包含地图信息的和map.yaml文件。如下命令中的“-f”选项是指定保存地图文件的目录及文件名的选项。例如,如果指定为“~/map”,则“~”意味着用户目录,而“map”意味着要保存为map.pgm和map.yaml文件。

rosrun map_server map_saver -f ~/map/map

保存完地图后,就可以跟RVIZ结合使用了

roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map/map.yaml 
发布了208 篇原创文章 · 获赞 198 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/gwplovekimi/article/details/102996675