ROS 导航 move_base costmap planner 的调试说明

http://wiki.ros.org/navigation/Tutorials/Navigation%20Tuning%20Guide

1.查看传感器数据有无输出,以及频率

2.里程计测试:

(1)打开Rviz 设置frame为“odom”,display 激光, 设置topic的延时时间(decay time)为20s左右,然后原地旋转。Then, I look at how closely the scans match each other on subsequent rotations. Ideally, the scans will fall right on top of each other, but some rotational drift is expected, so I just make sure that the scans aren't off by more than a degree or two

(2)对着墙面测试里程计的平移:The next test is a sanity check on odometry for translation. I'll set up rviz the same way with the robot a few meters away from a wall. Then, I'll drive the robot straight at the wall and look at the thickness of the wall as reported by the aggregated laser scans in rviz. Ideally, the wall should look like a single scan but I just make sure that it doesn't have a thickness of more than a few centimeters. If you drive a meter towards a wall and get scans spread out over half a meter though, something is likely wrong with the odometry

3.定位:

若里程计不是很准,可以参考amcl的里程计模型参数设置进行改进:I'll play around a bit with the odometry model parameters for AMCL

4.costmap:

(1)确保每个观测源的期待更新频率(expected_update_rate)是基于传感器的发布频率,通常要给予一定量的容忍度

(2)transform_tolerance:使用tf_monitor 检查transform from the "base_link" frame to the "map" frame的时延,然后设置保守的参数

(3)map_update_rate

(4)publish_frequency 调低

(5)在里程计frame下测试导航独立与定位:Sometimes, its useful to be able to run navigation solely in the odometric frame. To do this, I find the easiest thing to do is to copy my local_costmap_params.yaml file over my global_costmap_params.yaml file and change the the width and height of the map to be something more like 10 meters. This is a really easy way to get things up and running if you want to tune navigation independent of localization performance

(6)其他 看说明

5. local planner:

(1)一定要看机器人的加速度限制

(2)对于DWA:update the vx_samples parameter to something between 8 and 15 depending on the processing power available. This will allow for non-circular curves to be generated in the rollout

(3) 定位不准和避免震荡:localization for the robot I'm working with isn't great, I'll make sure to set the goal tolerance parameters a bit higher than I would otherwise. I'll also up the rotational tolerance if the robot has a high minimum rotational velocity to avoid oscillations at the goal point.

(4)CPU不够 sim_granularity适当提高(采样间隔增加,采样数减少)

(5)Turning the path_distance_bias parameter up 更贴近路径 但设置过高会导致机器人拒绝移动,因为移动的cost远比待在路径上的cost高

(6)如何整定cost function: If I want to reason about the cost function in an intelligent way, I'll make sure to set the meter_scoring parameter to true. This makes it so distances in the cost function are in meters instead of cells and also means that I can tune the cost function for one map resolution and expect reasonable behavior when I move to others. Furthermore, you can now visualize the cost function produced by the local planner in rviz by setting the publish_cost_grid parameter to true. (This somehow never made it into the docs, I'll get to that sometime soon). Given the cost function in meters, I can compute the tradeoff in cost of moving 1 meter towards the goal balanced against how far away I am from the planned path. This tends to give me a decent idea of how to tune things

(7)轨迹室友他们的终点endpoint打分的,这意味着设置不同的sim_time 将对机器人行为产生很大的影响,一般设置在1-2秒,设置较大时,轨迹会更加平滑;确保最小速度*sim_period ( minimum velocity × sim_period)小于我目的地容忍度的两倍!否则机器人会更倾向于在目标位置外原地旋转而不是到达目标点

(8)准确的轨迹simulation 也取决于合理的里程计的速度反馈估计,加速度限制和反馈速度决定了一个规划周期内合理的速度采样空间!

posted @ 2017-08-28 14:53  之介  阅读(1696)  评论(0编辑  收藏