当前位置:   article > 正文

ROS机器人制作(五)—— 深化gmapping和move_base的理解_gmapping可以单独完成定位吗

gmapping可以单独完成定位吗

gmapping和move_base的使用

gmapping建图与定位

在这里插入图片描述

gmapping可以建图,同时也定位
基本上所有的参数都先默认就行

<launch>
    <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
      <remap from="scan" to="scan"/>
      <!--<param name="base_frame" value="base_footprint"/>--><!--底盘坐标系-->
      <param name="base_frame" value="base_link"/>

      <param name="odom_frame" value="odom"/> <!--里程计坐标系-->
      <param name="map_update_interval" value="5.0"/>
      <param name="maxUrange" value="16.0"/>
      <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>

    
    <!-- 可以保存 rviz 配置并后期直接使用-->
    <!--
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find my_nav_sum)/rviz/gmapping.rviz"/>
    -->
</launch>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

move_base规划器

move_base功能包订阅传感器话题以及地图tf信息,在路径规划器中规划,发布速度
在这里插入图片描述

move_base 插件:

base_local_planner插件:
       base_local_planner: 实现了Trajectory Rollout和DWA两种局部规划算法
       dwa_local_planner: 实现了DWA(动态窗口法)局部规划算法,可以看作是base_local_planner的改进版本
       teb_local_planner:实现了一个在线优化的本地轨迹规划器

base_global_planner插件:
      parrot_planner: 实现了较简单的全局规划算法
      navfn: 实现了Dijkstra和A*全局规划算法
      global_planner: 重新实现了Dijkstra和A*全局规划算法,可以看作navfn的改进版

recovery_behavior插件:
      clear_costmap_recovery: 实现了清除代价地图的恢复行为
      rotate_recovery: 实现了旋转的恢复行为
      move_slow_and_clear: 实现了缓慢移动的恢复行为
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

/-----------------------------------------------------------------------------------
包含:
(1)本地和全局的通用参数文件:
costmap_common_params.yaml (调用×2 )
(一些机器人的尺寸,膨胀半径,代价比例系数 等等)

/----------------------------------------------------------------------------------
(2)全局代价地图文件:
global_costmap_params.yaml

(3)本地代价地图文件:
local_costmap_params.yaml
(里程计坐标系,机器人坐标系,代价地图的发布频率
,等待坐标变换发布信息的超时时间等等)
/----------------------------------------------------------------------------------
(4)局部路径规划器文件:
base_local_planner_params.yaml
(方向最大速度,加速限制,目标公差,前进模拟参数)
/----------------------------------------------------------------------------------

move_base.launch文件的编写

<launch>

    <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen" clear_params="true">
        <rosparam file="$(find nav)/param/costmap_common_params.yaml" command="load" ns="global_costmap" />
        <rosparam file="$(find nav)/param/costmap_common_params.yaml" command="load" ns="local_costmap" />
        <rosparam file="$(find nav)/param/local_costmap_params.yaml" command="load" />
        <rosparam file="$(find nav)/param/global_costmap_params.yaml" command="load" />
        <rosparam file="$(find nav)/param/base_local_planner_params.yaml" command="load" />
    </node>

</launch>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

使用

新建slam.launch文件
再调用写的这两个launch文件

<launch>
     <include file = "$(find 功能包)/launch/gmapping.launch"   />
     <include file = "$(find 功能包)/launch/move_base.launch"  />
</launch>
  • 1
  • 2
  • 3
  • 4

start.launch

传感器与车的坐标变化

<node name ="rplidar2basefootprint" pkg = "tf2_ros" type = "static_transform_publisher"  args = "0  0  0.1  0   0   0     /base_footprint     /laser"   />
  • 1

arduino.launch

调用ros_arduino_brige功能包
(其中arduino_node.py 加载了 my_arduino_params.yaml)
<include file= "$(find ros_arduino_python)/launch/arduino.launch"/>
  • 1
  • 2
  • 3

rplidar.launch

用rplidar_ros功能包
<include file= "$(find rplidar_ros)/launch/rplidar.launch"   />
  • 1
  • 2

car.launch

加载rviz中的小车模型
<include file= "$(find 自定义功能包)/launch/car.launch"   />


car.launch中编写
<param name="robot_description" command="$(find xacro)/xacro   $(find mycar_description)/urdf/car.xacro" />
再编写urdf文件和xacro文件
..............
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/805560
推荐阅读
相关标签