This package provides an implementation of a fast, interpolated navigation function used to create plans for a mobile base through the navfn::NavFn class. It also provides a ROS Wrapper for this class via the navfn::NavfnROS object that adheres to the nav_core::BaseGlobalPlanner interface specified in the nav_core package. The navfn::NavfnROS object is also used as a global planner plugin for the move_base node.
The navfn::NavfnROS object is a wrapper for a navfn::NavFn object that exposes its functionality as a C++ ROS Wrapper. It operates within a ROS namespace (assumed to be name from here on) specified on initialization. It adheres to the nav_core::BaseGlobalPlanner interface found in the nav_core package.
Example creation of a navfn::NavfnROS object:
- The ROS API is stable
- The C++ API is stable
Published Topics~<name>/plan (nav_msgs/Path)
- The last plan computed by navfn, published everytime the planner computes a new path, and used primarily for visualization purposes.
Parameters~<name>/allow_unknown (bool, default: true)
- Specifies whether or not to allow navfn to create plans that traverse unknown space. NOTE: if you are using a layered costmap_2d costmap with a 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).
- Specifies the x size of an optional window to restrict the planner to. This can be useful for restricting NavFn to work in a small window of a large costmap.
- Specifies the y size of an optional window to restrict the planner to. This can be useful for restricting NavFn to work in a small window of a large costmap.
- A tolerance on the goal point for the planner. NavFn will attempt to create a plan that is as close to the specified goal as possible but no further than default_tolerance away. New in navigation 1.3.0
- Specifies whether or not to visualize the potential area computed by navfn via a PointCloud2. New in navigation 1.3.1
The navfn::NavFn object provides an implementation of the navigation function described above. Feel free to use it, but beware that we make no guarantees about the stability of its public API.
The C++ API is not stable. It is subject to change at any time.
Documentation on the C++ API for the navfn::NavFn class can be found here: NavFn Documentation. Again, the C++ API is not guaranteed to be stable.