导航配置-movebase参数详解(持续更新中)

     @DavidHan ,
     http://blog.csdn.net/David_Han008/article/details/77816121

前言:不论是什么车,在使用之前,一定要对线速度和角速度进行校正。

1、校正

线速度:
在先锋上面的是调节:DriftFactor,TicksMM,RevCount,这三个参数,
TicksMM:我现在设置的是120,(官方建议128),举个例子:如果你设置150,让先锋机器人走1米,他会走1米3左右。,这个参数,貌似是脉冲的个数。越大,走的越远。
DriftFactor:水平方面的分量。设置为0
RevCount:就设置16570就可以了。
我是利用的turtlebot的rosrun rbx1_nav calibrate_linear.py
和角度rosrun rbx1_nav calibrate_angular.py来矫正的线速度和角速度的。在矫正角速度的时候,可能出现回弹的现象。这是因为线速度的值,设置太大了。先锋机器人理想的线速度的之,我觉得是0.6米/秒。理想的角速度的为0.4米/秒,同样在,线速度的校正的时候,不同的速度,下看精度如何,例如,0.5M/S的速度,运动一米,和1m/s的速度运动一米的精度是不同的额,下面的小视频当中的,是以0.3米运动一米的精度

这里写图片描述

角度标定这个gif可能会有误解,在turtlebo的校正当中,是旋转360度的,我这里只播放了一半的视频。

这里写图片描述
由上面的0.4的旋转速度,那么在导航配置文件当中,有一个原地旋转的速度,我也设置的0.4,那么这样旋转的角度就很准了。
最后将校正的文件写到launch 文件当中,就像下面这样:

<launch>

<!-- Starting rosaria driver for motors and encoders -->
  <node name="rosaria" pkg="rosaria" type="RosAria" args="_port:=/dev/ttyUSB0">
  <param name="DriftFactor" value="0"/>
  <param name="TicksMM" value="120"/> 
  <param name="RevCount" value="16570"/> 
  <remap from="rosaria/cmd_vel" to="cmd_vel"/>
  <remap from="rosaria/pose" to="odom"/>
  </node>

</launch>

2、建图参数影响

在建图方面,还是用跟随建图比较准确。我是用的gmapping建立的地图

  <param name="particles" value="8"/>、
  <param name="minimumScore" value="30"/>
  <param name="delta" type="double" value="0.05" />

重要的就是上面的3个参数。
particles参数是粒子数。这个值对建图参数的影响我还没尝试过,可能是参数越大,那么很小的障碍物都能够被检测出来。
minimumScore参数是最小匹配得分,这个值越大,越容易去使用里程计的信息。太小,会出现噪声
delta参数表示地图的分辨率
还有一些参数,详细见博客:点击这里

3、导航配置文件参数影响

导航配置参数文件,有以下4个文件

p3dx_base_local_planner_params.yaml #进行发布速度
p3dx_costmap_common_params.yaml   #代价地图的常见参数
p3dx_global_costmap_params.yaml   #全局地图的常见参数
p3dx_local_costmap_params.yaml    #局部地图的常见参数

p3dx_base_local_planner_params.yaml

controller_frequency: 10.0 #控制器更新频率,建议3-5HZ
TrajectoryPlannerROS:
  max_vel_x: 0.50 #最大速度,这个速度稳定
  min_vel_x: 0.10 #最小速度
  max_rotational_vel: 0.3 #最大旋转速度(这里是转弯的最大的速度)
  min_in_place_rotational_vel: 0.4#这里就上上面所有说的,先锋最时候的圆度旋转饿速度
  acc_lim_theta: 0.55#旋转角加速度
  acc_lim_x: 0.1#最大的旋转加速度x方向
  acc_lim_y: 0.0#最大旋转加速度y方向
  meter_scoring: true#单位是不是米

  holonomic_robot: false
  yaw_goal_tolerance: 0.18#朝向上面的允许的误差
  xy_goal_tolerance: 0.2#距离上面允许的误差
  pdist_scale: 0.8 #全局的比例
  gdist_scale: 0.1 #全局和局部的比例,我觉得还是应该全局为重,这个值越大,那么越有那个起步的大圈
  goal_distance_bias: 0.8
  path_distance_bias: 0.2
  sim_time: 1.5#模拟时间
  heading_lookahead: 0.325机器人原地旋转是,向前看多少米的距离
  oscillation_reset_dist: 0.05

  vx_samples: 6
  vtheta_samples: 20
  dwa: false

p3dx_costmap_common_params.yaml

p3dx_global_costmap_params.yaml

p3dx_local_costmap_params.yaml

4、AMCL参数影响

从下面这张图可以看出,由amcl发布的map到odom之间的坐标变换,rosaria发布从odom到base_link之间的坐标变换,然后我在LMS100当中,发布了从baselink到laser之间的坐标变换。
这里写图片描述
其实在启动机器人的顺序当中,不使用URDF模型也是可以的,因为在第3部分,配置导航的文件当中,已经输入了机器人相关尺寸。
遇到的问题:
这里写图片描述
这是因为,存在两个坐标系导致的问题。我我详细的了一下:是map到odom之间的的问题。

原因出现在这里:我将这里的odom到map之间做了一个静态的坐标变换

 <!-- Run a static transform between /odom and /map -->
  <node pkg="tf" type="static_transform_publisher" name="odom_map_broadcaster" args="0.0, 0.0 0 0 0 0 /map /odom 100" />

而amcl也会发布一个从odom到map的坐标变换。两个变换冲突,因此地图会抖动。
心得:如果要模拟机器人运动,进行调试参数的时候,加上这句话,来调试参数,如果是真实机器人运动,那么将这句话删除进行实际的导航。

猜你喜欢

转载自blog.csdn.net/David_Han008/article/details/77816121
今日推荐