ROS与navigation教程-navfn
ROS与navigation教程-navfn
说明:
- 列表项目
代码库
概要
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
参考资料
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号