• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

SLAM-gmapping简介与使用

人工智能 十啵 1952次浏览 0个评论

gmapping功能包集成了Rao-Blackwellized粒子滤波算法,为开发者隐去了复杂的内部实现。下图所示的是gmapping功能包的总体框架。  
在这里插入图片描述   gmapping功能包订阅机器人的深度信息、IMU信息和里程计信息,同时完成一些必要参数的配置,即可创建并输出基于概率的二维栅格地图。   gmapping功能包基于openslam社区的开源SLAM算法。   在ROS的软件源中已经集成了gmapping相关功能包的二进制安装文件,可以使用如下命令进行安装:  

<code class="prism language-bash has-numbering">$ <span class="token function">sudo</span> <span class="token function">apt-get</span> <span class="token function">install</span> ros-kinetic-gmapping
</code>

  gmapping功能包向用户开放的接口如下。 话题和服务 gmapping功能包中发布/订阅的话题和提供的服务如表所示。  
在这里插入图片描述   坐标变换 gmapping功能包提供的坐标变换如表所示。  
SLAM-gmapping简介与使用   还有很多参数,这里就不说了。  

gmapping节点的配置与运行

  接下来的主要任务是使用gmapping功能包实现机器人的SLAM功能。SLAM算法已经在gmapping功能包中实现,我们无需深入理解算法的实现原理,只需关注如何借助其提供的接口实现相应的功能。   把下面的这两个launch文件放在雷达功能包的launch目录下就可以,当然其他也可以~   gmapping.launch 使用gmapping的第一步就是创建一个运行gmapping节点的launch文件,主要用于节点参数的配置  

<launch>
<arg name="scan_topic" default="scan" />
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output= "screen" clear_params="true">
<param name="odom_frame" value="odom"/>
<param name="map_update_interval" value="5.0"/>
<!—— Set maxUrange < actual maximum range of the Laser ——>
<param name="maxRange" value="5.0"/>
<param name="maxUrange" value="4.5"/>
<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.01"/>
<param name="srt" value="0.02"/>
<param name="str" value="0.01"/>
<param name="stt" value="0.02"/>
<param name="linearUpdate" value="0.5"/>
<param name="angularUpdate" value="0.436"/>
<param name="temporalUpdate" value="-1.0"/>
<param name="resampleThreshold" value="0.5"/>
<param name="particles" value="80"/>
<param name="xmin" value="-1.0"/>
<param name="ymin" value="-1.0"/>
<param name="xmax" value="1.0"/>
<param name="ymax" value="1.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"/>
<remap from="scan" to="$(arg scan_topic)"/>
</node>
</launch>

  在启动slam_gmapping功能包的同时,需要配置很多gmapping节点的参数。如果你熟悉SLAM算法,这些参数可能对你并不陌生,但是,若你不了解SLAM算法,也不用担心,这些参数都有默认值,大部分时候使用默认值或使用ROS中相似机器人的配置即可,等待SLAM功能实现后再考虑参数优化。   我们需要重点检查两个参数的输入设配置。   1)里程计坐标系的设置,odom_frame参数需要和机器人本身的里程计坐标系一致。 2)激光雷达的话题名,gmapping节点订阅的激光雷达话题名是“/scan”,如果与机器人发布的激光雷达话题名不一致,需要使用进行重映射。   gmapping_demo.launch 创建一个启动gmapping例程gmapping_demo.launch文件,主要代码如下:  

<launch>
<include file="$(find my_robot_navigation)/launch/gmapping.launch"/>
<!—— 启动rviz ——>
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find my_robot_navigation)/rviz/gmapping.rviz"/>
</launch>

  以上launch文件包含两部分内容。 1)启动之前创建的gmapping节点。 2)启动rviz界面,查看传感器和地图构建的实时信息。 现在,SLAM功能已经就绪!   下面就可以建图了,  
在这里插入图片描述   如果在建图之前的基础工作没做好,可以看一下我之前的博客,网上也有很多资源。 我弄的时候遇到一个问题,大家遇到可以看一下  


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明SLAM-gmapping简介与使用
喜欢 (0)

您必须 登录 才能发表评论!

加载中……