ROS Navigation-----navfn简介

   navfn规划器假定机器人是圆形,并会在起点到终点之间寻找代价最小的规划。它的导航功能支持了Dijkstra和A*算法。此外,navfn也提供了ROS封装接口供调用,也继承了接口nav_core::BaseGlobalPlanner

1 概述

    本package实现了快速内插值导航功能,使用navfn::NavFn 类给机器人底座创建导航规划。navfn::NavfnROS对象是navfn::NavFn类的ROS封装,其继承了nav_core包中接口nav_core::BaseGlobalPlannernavfn::NavfnROS 对象在move_base中被作为全局规划器插件使用。

  navfn::NavfnROSnavfn::NavFn的ROS封装,导出了可用的ROS接口,可以在初始化时指定的ROS命名空间使用,继承了nav_core::BaseGlobalPlanner接口。


下面是创建navfn::NavfnROS 对象的一个例子:

#include <tf/transform_listener.h>
#include <costmap_2d/costmap_2d_ros.h>
#include <navfn/navfn_ros.h>

...

tf::TransformListener tf(ros::Duration(10));
costmap_2d::Costmap2DROS costmap("my_costmap", tf);

navfn::NavfnROS navfn;
navfn.initialize("my_navfn_planner", &costmap);

2.1 API Stability

  • The ROS API is stable
  • The C++ API is stable

2.2 ROS API

2.2.1 Published Topics
~<name>/plan ( nav_msgs/Path)
  • 通过navfn计算的上一个最新规划, 规划器每次都会计算一条新路径并发布。
2.2.2 Parameters
~<name>/allow_unknown ( bool, default: true)
  • 指定是否允许navfn在unknown空间创建规划。 NOTE: if you are using a layered costmap_2d costmap witha voxel or obstacle layer, you must also set the track_unknown_space param for that layer to be true, or it will convert all your unknown space to free space (which navfn will then happily go right through).
~<name>/planner_window_x ( double, default: 0.0)
  • 指定可选窗口的x大小以限定规划器工作空间。This can be useful for restricting NavFn to work in a small window of a large costmap.
~<name>/planner_window_y ( double, default: 0.0)
  • 指定可选窗口的y大小以限定规划器工作空间。 This can be useful for restricting NavFn to work in a small window of a large costmap.
~<name>/default_tolerance ( double, default: 0.0)
  • 定义规划器目标点公差范围。 NavFn will attempt to create a plan that is as close to the specified goal as possible but no further thandefault_tolerance away. New in navigation 1.3.0
~<name>/visualize_potential ( bool, default: false)
  • 指定是否对navfn通过PointCloud2计算的potential区域可视化。 New in navigation 1.3.1

2.3 C++ API

  navfn::NavfnROS继承了nav_core::BaseGlobalPlanner,细节请看 NavfnROS C++ Documentation

  navfn::NavFn 额提供了上述导航功能,且可以免费使用,但是请记住我们不保证其API是稳定的。

3.1 API Stability

  • C++ API不稳定. It is subject to change at any time.

3.2 C++ API

  •  navfn::NavFn类的C++ API请参考: NavFn Documentation. 此外,请记住C++ API不保证是稳定的

4 Reference

Rationale of Dijkstra being used in navfn instead of A*



  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值