友情提示:380元/半年,儿童学编程,就上码丁实验室。
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