我是靠谱客的博主 大方故事,最近开发中收集的这篇文章主要介绍navigation调试之转圈问题分析定位,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题描述:规划路线后,需要机器人原地转动角度大于180度,在机器人转动时,会大概率出现不断转圈问题

分析过程:

smoother初始参数:

speed_lim_v: 0.8
speed_lim_w: 5.4

accel_lim_v: 1.0 # maximum is actually 2.0, but we push it down to be smooth
accel_lim_w: 2.0

# Optional parameters
frequency: 20.0
decel_factor: 1.5

# Robot velocity feedback type:
#  0 - none (default)
#  1 - odometry
#  2 - end robot commands
robot_feedback: 2
减小角速度的最大速度和最大加速度后,问题依然存在

speed_lim_v: 0.8
speed_lim_w: 2.7

accel_lim_v: 1.0 # maximum is actually 2.0, but we push it down to be smooth
accel_lim_w: 1.0 

# Optional parameters
frequency: 20.0
decel_factor: 1.5

# Robot velocity feedback type:
#  0 - none (default)
#  1 - odometry
#  2 - end robot commands
robot_feedback: 2
查看move_base下发的命令,发现下发的角速度依然是朝一个方向不断在转圈

[ INFO] [1516612576.380730741]: Got new plan
[ERROR] [1516612576.410813994]: Got a valid command from the local planner: 0.046, 0.000, -2.627
[ERROR] [1516612576.609987660]: Got a valid command from the local planner: 0.046, 0.000, -2.157
[ERROR] [1516612576.813163838]: Got a valid command from the local planner: 0.049, 0.000, -2.123
[ERROR] [1516612577.027420682]: Got a valid command from the local planner: 0.196, 0.000, -2.126
[ERROR] [1516612577.224319143]: Got a valid command from the local planner: 0.240, 0.000, -1.859
[ INFO] [1516612577.380724905]: Got new plan
[ERROR] [1516612577.430024792]: Got a valid command from the local planner: 0.000, 0.000, -1.950
[ERROR] [1516612577.609789745]: Got a valid command from the local planner: 0.000, 0.000, -1.758
[ERROR] [1516612577.827081727]: Got a valid command from the local planner: 0.000, 0.000, -2.491
[ERROR] [1516612578.026000115]: Got a valid command from the local planner: 0.000, 0.000, -2.455
怀疑是,检测路线差异的间隔太大,导致每当机器人转到正确角度时,不会检测路线差异重新规划路线,而机器人依然沿着旧的命令不断旋转,最终旋转超过2xx度,才出现路线重新规划,再次需要转到正常角度。

大幅度降低最大角速度和最大角速度加速度

# Mandatory parameters
speed_lim_v: 0.8
speed_lim_w: 0.4 #2.7_2 #5.4_1

accel_lim_v: 1.0 # maximum is actually 2.0, but we push it down to be smooth
accel_lim_w: 0.8 #1.0_2 1#2.0_1

# Optional parameters
frequency: 20.0
decel_factor: 1.5

# Robot velocity feedback type:
#  0 - none (default)
#  1 - odometry
#  2 - end robot commands
robot_feedback: 2
结果不会出现该问题,但不是根本原因,因为转到差不多200~220时,已能停下并自动纠正路线。

这样依然有小问题,不能立刻转到180度,要多转几十度。排查,发现local path的频率只有5Hz,每隔0.2s一次,会不会是这0.2秒转动的角速度过大没有纠正过来。做一下尝试修改

controller_frequency: 20.0 #5.0

controller_patience: 3.0
结果出现无法规划local path的情况,即使周围没有障碍。再次减半频率
controller_frequency: 10.0 #20.0 #5.0
controller_patience: 3.0
还是会有该问题出现,并且出现问题,即使重点在后方,也会莫名往前方运行一段距离。
将参数改回5Hz。


再次排查,会不会是move_base设置的最小角速度的加速度和减速度太小了。


  max_rot_vel: 0.4 #5.0  # choose slightly less than the base's capability
  min_rot_vel: 0.4  # this is the min angular velocity when there is negligible translational velocity
  rot_stopped_vel: 0.4
  
  acc_lim_x: 1.0 # maximum is theoretically 2.0, but we 
  acc_lim_theta: 1.0 #2.0
  acc_lim_y: 0.0      # diff drive robot
莫名往前走几步,将max_rot_vel调整回来就没有了。将max_rot_vel和acc_lim_theta调小会发向前行进的命令,真是好奇怪
还有就是每次转向必须等到已经偏移了前进方向后才能偏正回来,怀疑会不会跟陀螺仪有关系。


因为不清楚具体问题跟因,只能不断缩小最大角速度和最大角速度加速度

最后

以上就是大方故事为你收集整理的navigation调试之转圈问题分析定位的全部内容,希望文章能够帮你解决navigation调试之转圈问题分析定位所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部