概述
问题描述:规划路线后,需要机器人原地转动角度大于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调试之转圈问题分析定位所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复