ROS导航实现:SLAM建图(slam_gmapping)与保存(map_server)

文章详细介绍了如何在ROS环境中使用gmapping进行SLAM建图,包括安装相关包,新建功能包,配置launch文件,启动Gazebo仿真环境,配置RVIZ显示地图,以及如何保存和读取地图。此外,还提到了使用amcl和move_base进行定位和路径规划,并提供了键盘控制节点启动的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导航实现:SLAM建图

先安装相关的ROS功能包:

  • 安装 gmapping 包(用于构建地图):sudo apt install ros-<ROS版本>-gmapping

  • 安装地图服务包(用于保存与读取地图):sudo apt install ros-<ROS版本>-map-server

  • 安装 navigation 包(用于定位以及路径规划):sudo apt install ros-<ROS版本>-navigation

  新建功能包,并导入依赖: gmapping map_server amcl move_base,其中gampping用于构建地图,map_server用于保存与读取地图,amcl用于定位,move_base用于路径规划

(1)编写gmapping相关的launch文件

复制并修改如下:

<launch>
<param name="use_sim_time" value="true"/>是否使用仿真时间(仿真时要设置为True)
    <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
      <remap from="scan" to="scan"/>设置雷达话题,前面仿真雷达设置的话题就是scan
      <param name="base_frame" value="base_footprint"/><!--底盘坐标系-->
      <param name="odom_frame" value="odom"/> <!--里程计坐标系-->
      <param name="map_update_interval" value="5.0"/>地图更新频率间隔
      <param name="maxUrange" value="16.0"/>雷达测试范围最大16m
      <param name="sigma" value="0.05"/>
      <param name="kernelSize" value="1"/>
      <param name="lstep" value="0.05"/>
      <param name="astep" value="0.05"/>
      <param name="iterations" value="5"/>
      <param name="lsigma" value="0.075"/>
      <param name="ogain" value="3.0"/>
      <param name="lskip" value="0"/>
      <param name="srr" value="0.1"/>
      <param name="srt" value="0.2"/>
      <param name="str" value="0.1"/>
      <param name="stt" value="0.2"/>
      <param name="linearUpdate" value="1.0"/>
      <param name="angularUpdate" value="0.5"/>
      <param name="temporalUpdate" value="3.0"/>
      <param name="resampleThreshold" value="0.5"/>
      <param name="particles" value="30"/>
      <param name="xmin" value="-50.0"/>
      <param name="ymin" value="-50.0"/>
      <param name="xmax" value="50.0"/>
      <param name="ymax" value="50.0"/>
      <param name="delta" value="0.05"/>
      <param name="llsamplerange" value="0.01"/>
      <param name="llsamplestep" value="0.01"/>
      <param name="lasamplerange" value="0.005"/>
      <param name="lasamplestep" value="0.005"/>
    </node>

    <node pkg="joint_state_publisher" name="joint_state_publisher" type="joint_state_publisher" />
    <node pkg="robot_state_publisher" name="robot_state_publisher" type="robot_state_publisher" />

    <node pkg="rviz" type="rviz" name="rviz" />
    <!-- 可以保存 rviz 配置并后期直接使用-->
    <!--
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find my_nav_sum)/rviz/gmapping.rviz"/>
    -->
</launch>

(2)启动Gazebo仿真环境和编写好的slam.launch文件

(3)在RVIZ中添加组件

  • 添加机器人模型RobotModel

  • 添加Laserscan并设置Topic话题scan

  • 添加坐标系组件TF,Fram下即可找到map,odom

  • 添加map组件用于建图,设置topic,发布话题栅格地图数据,这里设置为map

    即可看到如下效果:

在这里插入图片描述

(4)在rviz中配置好之后,可以将目前配置保存:左上角save config as,保存到该功能包的config文件夹下,并在rivz启动中添加参数,以后启动就可以自动配置。

<node pkg="rviz" type="rviz" name="rviz" args="-d $find(功能包名) 功能包内的相对路径"/>

(5)启动键盘控制节点

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

  控制小车运动,绕着地图走一圈建图。

SLAM建图

  建图结果如图所示,白色部分是无障碍物可以走的地方,黑色圈出部位为障碍物信息。

在这里插入图片描述
(6)保存地图map_server

  如果直接关闭rviz退出,那么建好的地图将会消失,所以要编写launch文件进行保存操作

<launch>
    <arg name="filename" value="$(find mycar_nav)/map/nav" />
    <node name="map_save" pkg="map_server" type="map_saver" args="-f $(arg filename)" />
</launch>

  可以看到在指定路径下产生了两个文件map_save.pgm和map_save.yaml

在这里插入图片描述
(7)读取地图信息(map_server包里的map_server)

  新建launch文件,使用map_server调用上一步保存的map_save.yaml文件

代码示例如下:

<launch>
    <node pkg="map_server" type="map_server" name="map_server" args="$(find 功能包名)/功能包内到yaml文件的路径"/>
</launch>

  这样,之前我们发布的信息就会以话题的形式发布了,要看到地图的可视化效果我们需要借助rviz,可以在终端打开rviz并加入map插件,选择topic为map,即可看到效果。
在这里插入图片描述

### 如何在 Ubuntu 20.04 上安装 GAMPP GAMPP 是 XAMPP 开发环境的一个变种,主要用于 Linux 平台。XAMPP 提供了一个易于使用的集成开发环境 (IDE),包含了 Apache HTTP Server、MariaDB 数据库服务器、PHP 和 Perl。 #### 安装前准备 为了确保系统的软件包列表是最新的,在开始之前应该更新本地的 APT 缓存: ```bash sudo apt update && sudo apt upgrade -y ``` #### 下载并安装 GAMPP 由于官方渠道并没有提供名为 "GAMPP" 的特定版本,通常所说的可能是 XAMPP 或 LAMP 堆栈。对于 XAMPP 来说,可以从官方网站获取最新的安装文件。以下是基于 XAMPP 的安装过程[^1]: 1. 访问 [Apache Friends](https://www.apachefriends.org/index.html) 网站下载适用于 Linux 的 XAMPP 版本; 2. 将下载好的 `.tar.gz` 文件上传到目标机器或者通过命令行工具 `wget` 获取: ```bash cd ~ wget https://www.apachefriends.org/xampp-files/7.x.x/xampp-linux-x64-7.x.x-0-installer.run ``` 3. 给予执行权限给下载下来的二进制文件,并启动安装程序: ```bash chmod +x ~/xampp-linux-*-installer.run sudo ./xampp-linux-*-installer.run ``` 如果确实存在名为 “GAMPP” 的发行版,则可能需要从其官网或其他可信资源处寻找具体的安装指导文档来完成部署工作。 #### 验证安装成功否 一旦安装完毕,可以通过浏览器访问 http://localhost/dashboard 来验证是否能够正常显示 XAMPP 控制面板页面;也可以尝试启动各个服务组件如 Apache WebServer, MySQL Database Server 等来进行测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芝士就是力量蛙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值