【ROS学习】Gazebo+Gmapping算法建图

一、简介

1.Gmapping算法

GMapping是一种用于建立二维地图的概率算法,它是一种基于激光测距仪数据的实时建图方法。GMapping最初是由Giorgio Grisetti等人于2005年提出的,是开源机器人操作系统ROS(Robot Operating System)中的一个常用建图算法。 

GMapping利用机器人通过激光测距仪获取的传感器数据,如激光束的测量距离和角度信息,来估计机器人在环境中的姿态以及环境的地图。它采用了基于粒子滤波器的概率算法,通过对机器人的运动和传感器测量进行融合和更新,来实时估计机器人所处位置的概率分布,并构建环境的地图。

GMapping的核心思想是使用一组粒子来表示机器人的可能位置,并根据传感器数据对这些粒子进行权重更新和重采样。通过迭代更新和重采样的过程,GMapping能够在机器人运动和传感器测量的基础上,逐步减小粒子云的方差,从而提高对机器人位置的估计精度。

GMapping算法在实时性和准确性方面都具有良好的表现。它广泛应用于机器人导航、SLAM(Simultaneous Localization and Mapping)和自主探索等领域。通过GMapping算法,机器人可以在运动过程中实时构建和更新地图,从而实现自主感知和导航能力。

2.Gazebo

Gazebo是一种开源的多机器人仿真环境,用于模拟和测试机器人系统的行为和性能。它是机器人操作系统(ROS)的一部分,提供了一个三维虚拟环境,可以模拟机器人、传感器、物体和环境的交互。

Gazebo使用物理引擎来模拟物体的运动和碰撞,可以模拟真实世界中的物理效应,如重力、摩擦和惯性。它支持多种类型的传感器模拟,包括激光雷达、摄像头、深度相机等,使开发者能够在虚拟环境中测试和验证自己的算法和系统。

Gazebo提供了一个可视化界面,可以实时显示仿真场景,并提供交互式控制和调试工具。开发者可以通过ROS接口与Gazebo进行通信,将其与其他ROS软件包集成,实现机器人的控制、感知和导航。此外,Gazebo还提供了丰富的模型库,包括各种类型的机器人、传感器和环境模型,使用户能够快速构建复杂的仿真场景。

通过在Gazebo中进行仿真,开发者可以在不同的场景和条件下测试和验证他们的机器人系统。他们可以评估机器人的导航性能、感知算法的准确性,甚至进行多机器人协同操作的仿真实验。Gazebo的灵活性和可扩展性使得它成为机器人研究和开发的重要工具之一。

二、利用Gmapping建图

1.准备工作

 在利用gmapping算法建图之前,我们还需要做一些准备工作。首先先明确Gmapping的节点名称以及他订阅以及发布的话题(topic)。我们可以利用ros.indx这个网站搜索Gmapping,进入wiki页面查询。

其次我们需要用到一些仿真环境以及按键控制功能可以通过githu上面的开源项目wpr_simulation获得。具体获取与配置方法如下:

cd ~/catkin_ws/src
git clone https://github.com/6-robot/wpr_simulation.git
cd ~/catkin_ws/src/wpr_simulation/scripts
./install_for_noetic.sh

2.正式建图

第一步:打开Gazebo仿真环境

roslaunch wpr_simulation wpb_stage_robocup.launch

第二步:运行ros自带的Gmapping算法

rosrun gmapping slam_gmapping

第三步:打开可视化界面rviz

rviz

对可视化界面进行配置。首先点击左下角Add,将机器人模型加入rviz。然后添加LaserScan并选择话题名称/scan。最后添加地图Map,选择话题/map。

第四步:利用键盘控制机器人运动,开始建图

rosrun wpr_simulation keyboard_vel_ctrl

3.结果展示

图一 Gazebo仿真环境

图二 rviz界面所建立房间地图

在rivz界面显示的地图中,黑色表示障碍物,灰白色表示没有障碍物的地区,灰绿色区域表示未知。所以可以看出,通过Gmapping算法所建立的地图与仿真环境重合。

三、拓展

在上文我们可以发现在使用Gmapping算法建图时,需要打开四个终端,输入四条不同的指令。于是在此处,我们可以使用一个launch文件同时打开四条指令,具体代码如下:

cd ~/catkin_ws/src
catkin_creat_pkg launch_pkg roscpp rospy

然后在launch_pkg创建一个后缀名为launch的文件Gmapping.launch,在里面添加以下代码:

<launch>
    <include file="$(find wpr_simulation)/launch/wpb_stage_robocup.launch"/>
    <node pkg="gampping" type="slam_gampping" name="slam_gampping"/>
    <node pkg="rviz" type="rviz" name="rviz"/>
    <node pkg="wpr_simulation" type="keyboard_vel_ctrl" name="keyboard_vel_cmd"/>
</launch>

以后我们就可以通过一条指令就可以替代上文的四条指令:

roslaunch launch_pkg Gmapping.launch

除此之外,Gmapping还提供了许多可以自行设置的参数,具体详情可以查看ros.index。具体参数设置方法可参照以下代码:

<launch>
    <include file="$(find wpr_simulation)/launch/wpb_stage_robocup.launch"/>
    <node pkg="gampping" type="slam_gampping" name="slam_gampping">
        <param name="map_update_interval" value="1.0"/>
        <param name="throttle_scans" value="2"/>
        <param name="lasamplestep" value="0.01"/>
    </node>
    <node pkg="rviz" type="rviz" name="rviz"/>
    <node pkg="wpr_simulation" type="keyboard_vel_ctrl" name="keyboard_vel_cmd"/>
</launch>

  • 40
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!关于ROS中的建图,gmapping是一个常用的SLAM(Simultaneous Localization and Mapping算法,用于在机器人移动过程中同时进行定位和地图构建。你可以通过以下步骤来使用gmapping进行建图: 1. 首先,确保你已经安装了ROS和gmapping软件包。如果没有安装,可以通过以下命令进行安装: ``` sudo apt-get install ros-<distro>-slam-gmapping ``` 其中`<distro>`是你使用的ROS发行版名称,例如`melodic`、`noetic`等。 2. 创建一个ROS工作空间(如果你还没有创建): ``` mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make ``` 3. 下载并编译gmapping软件包: ``` cd ~/catkin_ws/src git clone https://github.com/ros-perception/slam_gmapping.git cd .. catkin_make ``` 4. 启动一个ROS核心节点: ``` roscore ``` 5. 启动你的机器人(如果你有一个真实的机器人)或者启动一个仿真环境。 6. 启动gmapping节点,并订阅机器人的传感器数据: ``` roslaunch slam_gmapping gmapping.launch ``` 7. 在另一个终端中,启动机器人的驱动程序(如果有)或者模拟机器人的运动: ``` roslaunch YOUR_ROBOT_DESCRIPTION_PACKAGE YOUR_ROBOT_DESCRIPTION.launch ``` 8. 在另一个终端中,启动RViz可视化工具,查看地图的构建过程: ``` rviz ``` 在RViz中,你可以添加一个"Map"显示来查看实时构建的地图。你还可以添加其他传感器数据的显示,如激光雷达数据。 9. 移动机器人以便gmapping能够收集足够的数据进行建图。在仿真环境中,你可以使用键盘或者发布控制指令的节点来控制机器人的移动。 10. 当你认为地图已经构建好了,你可以保存地图: ``` rosrun map_server map_saver -f my_map ``` 这将在当前目录下保存一个名为"my_map"的地图文件。 希望这些步骤能帮助到你!如果你有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值