全局路径规划器global_planner的参数配置与分析
nav_core中提供了对应的全局路径规划接口。要想使用机器人move_base提供的便利,我们需要按照接口来实现全局路径规划算法。
global_planner是ros提供的一个全局规划器,是原本的全局规划器navfn
的替代品。继承nav_core::BaseGlobalPlanner
的接口。
更新
在研究teb_local_planner的时候,对参数朝向
有了新的认知,详情请移步link
一、global_planner相关参数
注意: 所有最后标明(动态配置)的参数,都是使用功能包dynamic_reconfigure
实现的参数配置。详情可以查看link
-
/allow_unknown(bool, default:true)
是否选择探索未知区域。如果和costmap
配合使用的时候,其对应参数track_unknown_space
必须同样设置为true
-
/default_tolerance(double, default: 0.0)
靠近目标点的周围多少数值就算到了目标点 -
/visualize_potential(bool, default: false)
可能区域是否可视化 -
/use_dijkstra(bool, default: true)
如果设置为false就用A* -
/use_quadratic(bool, default:true)
是否使用二阶近似 -
/use_grid_path(bool, default: false)
输出路径是否遵循网格边界,否则就使用梯度下降法 -
/old_navfn_behavior(bool, default: false)
如果你想要让global_planner跟之前的navfn版本效果一样,就设true -
/lethal_cost(int, default: 253)
障碍物致命区域的代价数值(dynamic reconfigure, 可以动态参数配置) -
/neutral_cost (int, default: 50)
中立区域的cost值(动态配置) -
/cost_factor(double, default: 3.)
cost因子,用于将每层costmap对应的cost数值乘起来(动态配置) -
/publish_potential (bool, default: True)
发布可能的代价地图(动态配置) -
/orientation_mode (int, default: 0)
设置每个点的朝向。 (None=0, Forward=1, Interpolate=2, ForwardThenInterpolate=3, Backward=4, Leftward=5, Rightward=6)(动态配置) -
/orientation_window_size(int, default 1)
根据方向模式(参数12)指定的位置导数,确定使用哪个窗口来确定方向(动态配置)
二、测试
使用dijkstra算法的对应potential_map:
使用A*算法的对应potential_map:
但是在最开始的阶段,总是会出现:
[ERROR] [1611670223.557818434, 295.312000000]: NO PATH!
[ERROR] [1611670223.557951973, 295.312000000]: Failed to get a plan from potential when a legal potential was found. This shouldn't happen.
我认为出现这种情况是因为,跟机器人设定的方向orientation_mode
有关。
总体来说这个global_planner不好用。
全局路径规划还是建议使用默认的navfn
插件。