ROS Navigation-----navfn简介

本文详细介绍了navfn规划器的功能及使用方法。navfn适用于圆形机器人的导航规划,支持Dijkstra和A*算法,可在ROS环境中使用。文章还列举了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*



shr@ubuntu:~$ sudo apt install ros-noetic-navigation 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 将会同时安装下列软件: ros-noetic-amcl ros-noetic-base-local-planner ros-noetic-carrot-planner ros-noetic-clear-costmap-recovery ros-noetic-costmap-2d ros-noetic-dwa-local-planner ros-noetic-fake-localization ros-noetic-global-planner ros-noetic-move-base ros-noetic-move-base-msgs ros-noetic-move-slow-and-clear ros-noetic-nav-core ros-noetic-navfn ros-noetic-rotate-recovery ros-noetic-voxel-grid 下列【新】软件包将被安装: ros-noetic-amcl ros-noetic-base-local-planner ros-noetic-carrot-planner ros-noetic-clear-costmap-recovery ros-noetic-costmap-2d ros-noetic-dwa-local-planner ros-noetic-fake-localization ros-noetic-global-planner ros-noetic-move-base ros-noetic-move-base-msgs ros-noetic-move-slow-and-clear ros-noetic-nav-core ros-noetic-navfn ros-noetic-navigation ros-noetic-rotate-recovery ros-noetic-voxel-grid 升级了 0 个软件包,新安装了 16 个软件包,要卸载 0 个软件包,有 64 个软件包未被升级。 需要下载 1,931 kB 的归档。 解压缩后会消耗 9,841 kB 的额外空间。 您希望继续执行吗? [Y/n] y 获取:1 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-amcl amd64 1.17.3-1focal.20250521.001518 [268 kB] 获取:2 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-voxel-grid amd64 1.17.3-1focal.20250519.231756 [16.7 kB] 获取:3 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-costmap-2d amd64 1.17.3-1focal.20250521.001646 [449 kB] 获取:4 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-nav-core amd64 1.17.3-1focal.20250521.004844 [8,784 B] 获取:5 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-base-local-planner amd64 1.17.3-1focal.20250521.005206 [243 kB] 获取:6 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-carrot-planner amd64 1.17.3-1focal.20250521.010103 [35.6 kB] 获取:7 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-clear-costmap-recovery amd64 1.17.3-1focal.20250521.005210 [42.4 kB] 获取:8 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-dwa-local-planner amd64 1.17.3-1focal.20250521.005823 [123 kB] 获取:9 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-fake-localization amd64 1.17.3-1focal.20250520.001758 [104 kB] 获取:10 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-navfn amd64 1.17.3-1focal.20250521.005304 [122 kB] 获取:11 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-global-planner amd64 1.17.3-1focal.20250521.005728 [145 kB] 获取:12 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-move-base-msgs amd64 1.14.2-1focal.20250516.000952 [32.9 kB] 获取:13 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-rotate-recovery amd64 1.17.3-1focal.20250521.010109 [39.4 kB] 获取:14 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-move-base amd64 1.17.3-1focal.20250521.010519 [249 kB] 获取:15 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-move-slow-and-clear amd64 1.17.3-1focal.20250521.005242 [49.3 kB] 获取:16 http://packages.ros.org/ros/ubuntu focal/main amd64 ros-noetic-navigation amd64 1.17.3-1focal.20250521.011054 [3,064 B] 已下载 1,931 kB,耗时 50秒 (38.6 kB/s) 正在选中未选择的软件包 ros-noetic-amcl。 (正在读取数据库 ... 系统当前共安装有 250290 个文件和目录。) 准备解压 .../00-ros-noetic-amcl_1.17.3-1focal.20250521.001518_amd64.deb ... 正在解压 ros-noetic-amcl (1.17.3-1focal.20250521.001518) ... 正在选中未选择的软件包 ros-noetic-voxel-grid。 准备解压 .../01-ros-noetic-voxel-grid_1.17.3-1focal.20250519.231756_amd64.deb . .. 正在解压 ros-noetic-voxel-grid (1.17.3-1focal.20250519.231756) ... 正在选中未选择的软件包 ros-noetic-costmap-2d。 准备解压 .../02-ros-noetic-costmap-2d_1.17.3-1focal.20250521.001646_amd64.deb . .. 正在解压 ros-noetic-costmap-2d (1.17.3-1focal.20250521.001646) ... 正在选中未选择的软件包 ros-noetic-nav-core。 准备解压 .../03-ros-noetic-nav-core_1.17.3-1focal.20250521.004844_amd64.deb ... 正在解压 ros-noetic-nav-core (1.17.3-1focal.20250521.004844) ... 正在选中未选择的软件包 ros-noetic-base-local-planner。 准备解压 .../04-ros-noetic-base-local-planner_1.17.3-1focal.20250521.005206_amd6 4.deb ... 正在解压 ros-noetic-base-local-planner (1.17.3-1focal.20250521.005206) ... 正在选中未选择的软件包 ros-noetic-carrot-planner。 准备解压 .../05-ros-noetic-carrot-planner_1.17.3-1focal.20250521.010103_amd64.de b ... 正在解压 ros-noetic-carrot-planner (1.17.3-1focal.20250521.010103) ... 正在选中未选择的软件包 ros-noetic-clear-costmap-recovery。 准备解压 .../06-ros-noetic-clear-costmap-recovery_1.17.3-1focal.20250521.005210_ amd64.deb ... 正在解压 ros-noetic-clear-costmap-recovery (1.17.3-1focal.20250521.005210) ... 正在选中未选择的软件包 ros-noetic-dwa-local-planner。 准备解压 .../07-ros-noetic-dwa-local-planner_1.17.3-1focal.20250521.005823_amd64 .deb ... 正在解压 ros-noetic-dwa-local-planner (1.17.3-1focal.20250521.005823) ... 正在选中未选择的软件包 ros-noetic-fake-localization。 准备解压 .../08-ros-noetic-fake-localization_1.17.3-1focal.20250520.001758_amd64 .deb ... 正在解压 ros-noetic-fake-localization (1.17.3-1focal.20250520.001758) ... 正在选中未选择的软件包 ros-noetic-navfn。 准备解压 .../09-ros-noetic-navfn_1.17.3-1focal.20250521.005304_amd64.deb ... 正在解压 ros-noetic-navfn (1.17.3-1focal.20250521.005304) ... 正在选中未选择的软件包 ros-noetic-global-planner。 准备解压 .../10-ros-noetic-global-planner_1.17.3-1focal.20250521.005728_amd64.de b ... 正在解压 ros-noetic-global-planner (1.17.3-1focal.20250521.005728) ... 正在选中未选择的软件包 ros-noetic-move-base-msgs。 准备解压 .../11-ros-noetic-move-base-msgs_1.14.2-1focal.20250516.000952_amd64.de b ... 正在解压 ros-noetic-move-base-msgs (1.14.2-1focal.20250516.000952) ... 正在选中未选择的软件包 ros-noetic-rotate-recovery。 准备解压 .../12-ros-noetic-rotate-recovery_1.17.3-1focal.20250521.010109_amd64.d eb ... 正在解压 ros-noetic-rotate-recovery (1.17.3-1focal.20250521.010109) ... 正在选中未选择的软件包 ros-noetic-move-base。 准备解压 .../13-ros-noetic-move-base_1.17.3-1focal.20250521.010519_amd64.deb .. . 正在解压 ros-noetic-move-base (1.17.3-1focal.20250521.010519) ... 正在选中未选择的软件包 ros-noetic-move-slow-and-clear。 准备解压 .../14-ros-noetic-move-slow-and-clear_1.17.3-1focal.20250521.005242_amd 64.deb ... 正在解压 ros-noetic-move-slow-and-clear (1.17.3-1focal.20250521.005242) ... 正在选中未选择的软件包 ros-noetic-navigation。 准备解压 .../15-ros-noetic-navigation_1.17.3-1focal.20250521.011054_amd64.deb . .. 正在解压 ros-noetic-navigation (1.17.3-1focal.20250521.011054) ... 正在设置 ros-noetic-amcl (1.17.3-1focal.20250521.001518) ... 正在设置 ros-noetic-voxel-grid (1.17.3-1focal.20250519.231756) ... 正在设置 ros-noetic-move-base-msgs (1.14.2-1focal.20250516.000952) ... 正在设置 ros-noetic-costmap-2d (1.17.3-1focal.20250521.001646) ... 正在设置 ros-noetic-fake-localization (1.17.3-1focal.20250520.001758) ... 正在设置 ros-noetic-nav-core (1.17.3-1focal.20250521.004844) ... 正在设置 ros-noetic-clear-costmap-recovery (1.17.3-1focal.20250521.005210) ... 正在设置 ros-noetic-move-slow-and-clear (1.17.3-1focal.20250521.005242) ... 正在设置 ros-noetic-rotate-recovery (1.17.3-1focal.20250521.010109) ... 正在设置 ros-noetic-navfn (1.17.3-1focal.20250521.005304) ... 正在设置 ros-noetic-base-local-planner (1.17.3-1focal.20250521.005206) ... 正在设置 ros-noetic-carrot-planner (1.17.3-1focal.20250521.010103) ... 正在设置 ros-noetic-move-base (1.17.3-1focal.20250521.010519) ... 正在设置 ros-noetic-global-planner (1.17.3-1focal.20250521.005728) ... 正在设置 ros-noetic-dwa-local-planner (1.17.3-1focal.20250521.005823) ... 正在设置 ros-noetic-navigation (1.17.3-1focal.20250521.011054) ... shr@ubuntu:~$ rospack find gmapping /opt/ros/noetic/share/gmapping shr@ubuntu:~$ rospack find map_server /opt/ros/noetic/share/map_server shr@ubuntu:~$ rospack find navigation [rospack] Error: package 'navigation' not found shr@ubuntu:~$ rospack find navigation [rospack] Error: package 'navigation' not found shr@ubuntu:~$
07-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值