最新消息:

ROS与navigation教程-navfn

ROS1/一代机器人系统 少儿编程 1693浏览 0评论
ROS与navigation教程

ROS与navigation教程-navfn

说明:

  • 列表项目

代码库

  • 参考链接:https://github.com/ros-planning/navigation.git

概要

  • navfn提供了一个快速内插值的导航功能,用于为移动基座创建路径规划。

  • 规划器假设机器人为圆形并利用代价地图来进行操作,以从栅格的起点到终点找到代价最小的路径规划。

  • 导航功能使用Dijkstra算法计算,未来亦会加入A *算法。

  • navfn提供了ROS封装接口供调用,也继承了nav_core::BaseGlobalPlanner接口。

  • navfn::NavfnROS 对象在move_base中被作为全局路径规划器插件使用。

NavfnROS

  • navfn::NavfnROS是navfn::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);

( 1 ) API Stability

  • ROS API 是稳定的。

  • C++ API 是稳定的。

( 2 ) ROS API

( 2.1 ) Published Topics

~<name>/plan ([nav_msgs/Path][2])
  • 通过navfn计算的上一个最新规划, 规划器每次都会计算一条新路径并发布。

  • 主要用于可视化。

( 2.2 ) Parameters

~<name>/allow_unknown (bool, default: true) 
  • 指定是否允许navfn在unknown空间创建路径规划。

  • 注意:如果你使用带有体素或障碍层的分层 costmap_2d 代价地图,那么需将该图层的track_unknown_space参数设置为true,否则所有未知空间将转换为自由空间(which navfn will then happily go right through)。

~<name>/planner_window_x (double, default: 0.0)
  • 指定可选窗口的x大小以限定规划器工作空间。

  • 其有利于限定NavFn在大型代价地图的小窗口下工作。

~<name>/planner_window_y (double, default: 0.0) 
  • 指定可选窗口的y大小以限定规划器工作空间。

  • 其有利于限定NavFn在大型代价地图的小窗口下工作。

~<name>/default_tolerance (double, default: 0.0) 
  • 定义路径规划器目标点的公差范围。

  • NavFn将试图创建尽可能接近指定目标的路径规划,但不会超过 default_tolerance 。New in navigation 1.3.0

~<name>/visualize_potential (bool, default: false) 
  • 指定是否通过PointCloud2来可视化由navfn计算的潜在区域。 New in navigation 1.3.1.

( 2.3 ) C++ API

  • navfn::NavfnROS继承了nav_core::BaseGlobalPlanner接口。

  • 详细资料参阅 NavfnROS C++ Documentation

NavFN

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

( 1 ) API Stability

  • C++ API是不稳定的。

  • It is subject to change at any time.

( 2 ) C++ API

  • 关于navfn :: NavFn类的C ++ API的文档可参阅:NavFn Documentation 。

  • 再次强调,C ++ API不能保证稳定。

Reference

  • Rationale of Dijkstra being used in navfn instead of A*

参考资料

  • http://wiki.ros.org/navfn

  • http://blog.csdn.net/x_r_su/article/details/53407105

您必须 登录 才能发表评论!