Skip to content

Commit

Permalink
renaming navigation2 to nav2 (ros-navigation#134)
Browse files Browse the repository at this point in the history
* renaming navigation2 to nav2

* replace titles
  • Loading branch information
SteveMacenski authored Feb 4, 2021
1 parent cbba574 commit 363b9ee
Show file tree
Hide file tree
Showing 21 changed files with 101 additions and 101 deletions.
2 changes: 1 addition & 1 deletion 2020summerOfCode/Summer_2020_Student_Program.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ We have a community Slack at `navigation2.slack.com <https://navigation2.slack.c
If you are unable to access it due to not being able to sign up, please send an email to the mentor in the details below and they can manually add you.

Additionally, we have ROS community Discourse.
If you post on `this discourse page <https://discourse.ros.org>`_ regarding navigation2, a maintainer will respond.
If you post on `this discourse page <https://discourse.ros.org>`_ regarding Nav2, a maintainer will respond.
We have the sub-topic Navigation Stack that may be used `here <https://discourse.ros.org/c/navigation/44>`_.
It is preferred you post in this sub-topic.

Expand Down
8 changes: 4 additions & 4 deletions 2020summerOfCode/projects/create_plugins.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@

**Task description**

The ROS 2 Navigation Stack has a number of plugin interfaces to help users create or select specific plugins for planning, control, and recovery for their applications. Two specific areas that the Navigation2 stack could use more algorithm plugins for is for path planning (referred to as a planner plugin) and local trajectory generation (referred to as controller plugins). A simple tutorial for creating a `planner plugin can be found here. <https://navigation.ros.org/tutorials/docs/writing_new_nav2planner_plugin.html>`_ Currently, we have one planner, NavFn which implements an A* and Dijkstra's planner. It also has two controllers, DWB and TEB which implement a DWA and timed elastic-band optimization techniques. There is also a Hybrid-A* and OMPL planner in development.
The ROS 2 Navigation Stack has a number of plugin interfaces to help users create or select specific plugins for planning, control, and recovery for their applications. Two specific areas that the Nav2 stack could use more algorithm plugins for is for path planning (referred to as a planner plugin) and local trajectory generation (referred to as controller plugins). A simple tutorial for creating a `planner plugin can be found here. <https://navigation.ros.org/tutorials/docs/writing_new_nav2planner_plugin.html>`_ Currently, we have one planner, NavFn which implements an A* and Dijkstra's planner. It also has two controllers, DWB and TEB which implement a DWA and timed elastic-band optimization techniques. There is also a Hybrid-A* and OMPL planner in development.

Your task will be to create a high-quality implementation of one of the following algorithms for the navigation2 plugin interfaces. Alternative algorithms may also be considered upon approval, please ask @steve in the application phase. Please select only one to discuss.
Your task will be to create a high-quality implementation of one of the following algorithms for the Nav2 plugin interfaces. Alternative algorithms may also be considered upon approval, please ask @steve in the application phase. Please select only one to discuss.

- Planner Plugin Options: D* or variant, Vornoi planner, Navigation graph route planner, State Lattice planner, kinodynamic planner, and any planning method given a set of dynamic and static obstacles.
- Controller Plugin Options: CiLQR, iLQR, MPC, Splines, path following or dynamic obstacle following controllers.
Expand All @@ -23,7 +23,7 @@ Your task will be to create a high-quality implementation of one of the followin

**Project output requirements**

- A functional planner or controller plugin for the Navigation2 stack
- A functional planner or controller plugin for the Nav2 stack
- Plugin should be optimized for run-time performance with 50% or greater test coverage

**Skills required**
Expand All @@ -39,7 +39,7 @@ Your task will be to create a high-quality implementation of one of the followin
- `ROS <https://www.ros.org/>`_
- `Gazebo Simulator <http://gazebosim.org/>`_
- `Github issue page <https://github.com/ros-planning/navigation2/issues/1710>`_
- `Navigation2 <https://navigation.ros.org/>`_
- `Nav2 <https://navigation.ros.org/>`_

**Licensing**
- All contributions will be under the Apache 2.0 license.
Expand Down
2 changes: 1 addition & 1 deletion 2020summerOfCode/projects/localization.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

The Navigation2 stack uses AMCL as its primary localization engine. Over the last 10 years, essentially no updates to AMCL has been made. This is due to the code base for this implementation of an Adaptive Monte Carlo Localizer is written in embedded C, not well structured, and very sensitive to changes. A-MCL implementations have been a hallmark of localization for over a decade but this particular implementation should be deprecated.

Your target involves designing and creating a new localization engine for the navigation2 stack. The requirements of this are:
Your target involves designing and creating a new localization engine for the Nav2 stack. The requirements of this are:
- Support 2D laser scanners
- Support 3D laser scanners, where 2D case could potentially be a simplified case
- Accurately track the localization of a robot in a given occupancy grid
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ endif
# You can set these variables from the command line.
SPHINXOPTS ?= -q
SPHINXBUILD = sphinx-build
SPHINXPROJ = "Navigation 2 Documentation"
SPHINXPROJ = "Nav2 Documentation"
SOURCEDIR = .
BUILDDIR = _build

Expand Down
4 changes: 2 additions & 2 deletions build_instructions/build_docs/build_troubleshooting_guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
Build Troubleshooting Guide
**********************************************

Common Navigation2 Dependencies Build Failures
==============================================
Common Nav2 Dependencies Build Failures
=======================================

* Make sure that .bashrc file has no ROS environment variables in it. Open new terminals and try to build the packages again.

Expand Down
52 changes: 26 additions & 26 deletions build_instructions/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Build and Install
Install
*******

Navigation2 and its dependencies are released as binaries.
Nav2 and its dependencies are released as binaries.
You may install it via the following to get the latest stable released version:

``sudo apt install ros-<distro>-navigation2 ros-<distro>-nav2-bringup ros-<distro>-turtlebot3*``
Expand All @@ -19,31 +19,31 @@ You may install it via the following to get the latest stable released version:
Build
*****

There are 3 ways to build Navigation2.
Building for a specific released distribution (e.g. ``eloquent``, ``foxy``), build Navigation2 on main branch using a quickstart setup script, or building main branch manually.
There are 3 ways to build Nav2.
Building for a specific released distribution (e.g. ``eloquent``, ``foxy``), build Nav2 on main branch using a quickstart setup script, or building main branch manually.

.. rst-class:: content-collapse

Build Navigation2 For Released Distribution
===========================================
Build Nav2 For Released Distribution
====================================

Install ROS
-----------

Please install ROS 2 via the usual `build instructions <https://index.ros.org/doc/ros2/Installation>`_ for your desired distribution.

Build Navigation2
-----------------
Build Nav2
----------

We're going to create a new workspace, ``navigation2_ws``, clone our Navigation2 branch into it, and build.
``rosdep`` will be used to get the dependency binaries for navigation2 in your specific distribution.
We're going to create a new workspace, ``nav2_ws``, clone our Nav2 branch into it, and build.
``rosdep`` will be used to get the dependency binaries for Nav2 in your specific distribution.

.. code:: bash
mkdir -p ~/navigation2_ws/src
cd ~/navigation2_ws/src
mkdir -p ~/nav2_ws/src
cd ~/nav2_ws/src
git clone https://github.com/ros-planning/navigation2.git --branch <ros2-distro>-devel
cd ~/navigation2_ws
cd ~/nav2_ws
rosdep install -y -r -q --from-paths src --ignore-src --rosdistro <ros2-distro>
colcon build --symlink-install
Expand Down Expand Up @@ -77,8 +77,8 @@ Ensure there are no ROS environment variables set in your terminal or `.bashrc`
The ``initial_ros_setup.sh`` script downloads three ROS workspaces and then builds them in the correct order. The three workspaces are:

- **ROS 2 release**: This is the latest ROS 2 release as defined by the repos file found `here <https://github.com/ros2/ros2>`_
- **ROS 2 dependencies**: This is a set of ROS 2 packages that aren't included in the ROS 2 release yet. However, you need them to be able to build Navigation2. This also includes packages that are part of the ROS 2 release where Navigation2 uses a different version.
- **Navigation2**: This repository.
- **ROS 2 dependencies**: This is a set of ROS 2 packages that aren't included in the ROS 2 release yet. However, you need them to be able to build Nav2. This also includes packages that are part of the ROS 2 release where Nav2 uses a different version.
- **Nav2**: This repository.

After all the workspaces are downloaded, run the `navigation2/tools/build_all.sh` script. `build_all.sh` builds each repo in the order listed above using the `colcon build --symlink-install` command.

Expand Down Expand Up @@ -106,15 +106,15 @@ Build ROS 2 Main
Build ROS 2 main using the `build instructions <https://index.ros.org/doc/ros2/Installation>`_ provided in the ROS 2 documentation.


Build Navigation2 Dependencies
------------------------------
Build Nav2 Dependencies
-----------------------

Since we're not building for a released distribution, we must build the dependencies ourselves rather than using binaries.
First, source the setup.bash file in the ROS 2 build workspace.

``source ~/ros2_ws/install/setup.bash``

Next, we're going to get the ``underlay.repos`` file from Navigation2.
Next, we're going to get the ``underlay.repos`` file from Nav2.
Then, use ``vcs`` to clone the repos and versions in it into a workspace.

.. code:: bash
Expand All @@ -127,36 +127,36 @@ Then, use ``vcs`` to clone the repos and versions in it into a workspace.
rosdep install -y -r -q --from-paths src --ignore-src --rosdistro <ros2-distro>
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
Build Navigation2 Main
----------------------
Build Nav2 Main
---------------

Finally, now that we have ROS 2 main and the necessary dependencies, we can now build Navigation2 main itself.
Finally, now that we have ROS 2 main and the necessary dependencies, we can now build Nav2 main itself.
We'll source the ``nav2_depend_ws``, which will also source the ROS 2 main build workspace packages, to build with dependencies.
The rest of this should look familiar.

.. code:: bash
source ~/nav2_depend_ws/install/setup.bash
mkdir -p ~/navigation2_ws/src
cd ~/navigation2_ws/src
mkdir -p ~/nav2_ws/src
cd ~/nav2_ws/src
git clone https://github.com/ros-planning/navigation2.git --branch main
cd ~/navigation2_ws
cd ~/nav2_ws
rosdep install -y -r -q --from-paths src --ignore-src --rosdistro <ros2-distro>
colcon build --symlink-install
Docker
******


There are 2 options for docker with Navigation2:
There are 2 options for docker with Nav2:
building a container and using the DockerHub container.

.. rst-class:: content-collapse

Building Docker Container
=========================

To build an image from the Dockerfile in the navigation2 folder:
To build an image from the Dockerfile in the Nav2 folder:
First, clone the repo to your local system (or see Building the source above)

.. code:: bash
Expand Down Expand Up @@ -187,7 +187,7 @@ We allow for you to pull the latest docker image from the main branch at any tim
Generate Doxygen
****************

Run ``doxygen`` in the root of the Navigation2 repository.
Run ``doxygen`` in the root of the Nav2 repository.
It will generate a ``/doc/*`` directory containing the documentation.
The documentation entrypoint in a browser is index.html.

Expand Down
24 changes: 12 additions & 12 deletions concepts/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This page is to help familiarize new robotists to the concepts of mobile robot n
ROS 2
*****

ROS 2 is the core middleware used for Navigation2. If you are unfamilar with this, please visit `the ROS 2 documentation <https://index.ros.org/doc/ros2/>`_ before continuing.
ROS 2 is the core middleware used for Nav2. If you are unfamilar with this, please visit `the ROS 2 documentation <https://index.ros.org/doc/ros2/>`_ before continuing.

Action Server
=============
Expand Down Expand Up @@ -60,7 +60,7 @@ The networking interfaces are deactivated and stop processing, deallocate memory
The lifecycle node framework is used extensively through out this project and all servers utilize it.
It is best convention for all ROS systems to use lifecycle nodes if it is possible.

Within Navigation2, we use a wrapper of LifecycleNodes, ``nav2_util LifecycleNode``.
Within Nav2, we use a wrapper of LifecycleNodes, ``nav2_util LifecycleNode``.
This wrapper wraps much of the complexities of LifecycleNodes for typical applications.
It also includes a ``bond`` connection for the lifecycle manager to ensure that after a server transitions up, it also remains active.
If a server crashes, it lets the lifecycle manager know and transition down the system to prevent a critical failure. See :ref:`eloquent_migration` for details.
Expand All @@ -85,9 +85,9 @@ We create node plugins which can be constructed into a tree, inside the ``BT Nav
The node plugins are loaded into the BT and when the XML file of the tree is parsed, the registered names are associated.
At this point, we can march through the behavior tree to navigate.

One reason this library is used is its ability to load subtrees. This means that the Navigation2 behavior tree can be loaded into another higher-level BT to use this project as node plugin.
An example would be in soccer play, using the Navigation2 behavior tree as the "go to ball" node with a ball detection as part of a larger task.
Additionally, we supply a ``NavigateToPoseAction`` plugin for BT so the Navigation2 stack can be called from a client application through the usual action interface.
One reason this library is used is its ability to load subtrees. This means that the Nav2 behavior tree can be loaded into another higher-level BT to use this project as node plugin.
An example would be in soccer play, using the Nav2 behavior tree as the "go to ball" node with a ball detection as part of a larger task.
Additionally, we supply a ``NavigateToPoseAction`` plugin for BT so the Nav2 stack can be called from a client application through the usual action interface.


Navigation Servers
Expand Down Expand Up @@ -125,7 +125,7 @@ Alternatively, since the BT nodes are trivial plugins calling an action, new BT
It is advisable to use the provided servers if possible at all times.
If, due to the plugin or action interfaces, a new server is needed, that can be sustained with the framework.
The new server should use the new type and plugin interface, similar to the provided servers.
A new BT node plugin will need to be created to call the new action server -- however no forking or modification is required in the navigation2 repo itself by making extensive use of servers and plugins.
A new BT node plugin will need to be created to call the new action server -- however no forking or modification is required in the Nav2 repo itself by making extensive use of servers and plugins.

If you find that you require a new interface to the pluginlib definition or action type, please file a ticket and see if we can rectify that in the same interfaces.

Expand All @@ -142,7 +142,7 @@ Planners can be written to:
- Compute complete coverage path
- Compute paths along sparse or predefined routes

The general task in Navigation2 for the planner is to compute a valid, and potentially optimal, path from the current pose to a goal pose.
The general task in Nav2 for the planner is to compute a valid, and potentially optimal, path from the current pose to a goal pose.
However, many classes of plans and routes exist which are supported.

Controllers
Expand All @@ -158,7 +158,7 @@ Controllers can be written to:
- Board an elevator
- Interface with a tool

The general task in Navigation2 for a controller is to compute a valid control effort to follow the global plan.
The general task in Nav2 for a controller is to compute a valid control effort to follow the global plan.
However, many classes of controllers and local planners exist.
It is the goal of this project that all controller algorithms can be plugins in this server for common research and industrial tasks.

Expand All @@ -183,7 +183,7 @@ Waypoint following is a basic feature of a navigation system. It tells our syste

The ``nav2_waypoint_follower`` contains a waypoint following program with a plugin interface for specific task executors.
This is useful if you need to go to a given location and complete a specific task like take a picture, pick up a box, or wait for user input.
It is a nice demo application for how to use navigation2 in a sample application.
It is a nice demo application for how to use Nav2 in a sample application.

However, it could be used for more than just a sample application.
There are 2 schools of thoughts for fleet managers / dispatchers.
Expand Down Expand Up @@ -275,7 +275,7 @@ Costmap Filters

Imagine, you're annotating a map file (or any image file) in order to have a specific action occur based on the location in the annotated map. Examples of marking/annotating might be keep out zones to avoid planning inside, or have pixels belong to maximum speeds in marked areas. This annotated map is called "filter mask". Just like a mask overlaid on a surface, it can or cannot be same size, pose and scale as a main map. The main goal of filter mask - is to provide an ability of marking areas on maps with some additional features or behavioral changes.

Costmap filters - is costmap layer based approach of applying spatial-dependent behavioral changes annotated in filter masks, into Navigation2 stack. Costmap filters are implemented as costmap plugins. These plugins are called "filters" as they are filtering a costmap by spatial annotations marked on filter masks. In order to make a filtered costmap and change robot's behavior in annotated areas, filter plugin reads the data came from filter mask. This data is being linearly transformed into feature map in a filter space. Having this transformed feature map along with a map/costmap, any sensors data and current robot coordinates filters can update underlying costmap and change behavior of the robot depending on where it is. For example, the following functionality could be made by using of costmap filters:
Costmap filters - is costmap layer based approach of applying spatial-dependent behavioral changes annotated in filter masks, into Nav2 stack. Costmap filters are implemented as costmap plugins. These plugins are called "filters" as they are filtering a costmap by spatial annotations marked on filter masks. In order to make a filtered costmap and change robot's behavior in annotated areas, filter plugin reads the data came from filter mask. This data is being linearly transformed into feature map in a filter space. Having this transformed feature map along with a map/costmap, any sensors data and current robot coordinates filters can update underlying costmap and change behavior of the robot depending on where it is. For example, the following functionality could be made by using of costmap filters:

- Keep-out/safety zones where robots will never enter.
- Speed restriction areas. Maximum speed of robots going inside those areas will be limited.
Expand All @@ -292,8 +292,8 @@ These include:
- Mesh maps, which are similar to gradient maps but with surface meshes at many angles
- "Vector space", taking in sensor information and using machine learning to detect individual items and locations to track rather than buffering discrete points.

Navigation2 Academic Overview
*****************************
Nav2 Academic Overview
**********************

.. raw:: html

Expand Down
4 changes: 2 additions & 2 deletions getting_started/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ Running the Example
<https://ros.org/reps/rep-2000.html>`_ for improved stablity and feature
completeness.

This launch file will launch Navigation2 with the AMCL localizer in the
This launch file will launch Nav2 with the AMCL localizer in the
``turtlebot3_world`` world.
It will also launch a the robot state publisher to provide transforms,
a Gazebo instance with the Turtlebot3 URDF, and RVIZ.
Expand Down Expand Up @@ -114,7 +114,7 @@ cloud now.

Next, click the "Navigaton2 Goal" button and choose a destination.
This will call the BT navigator to go to that goal through an action server.
You can pause (cancel) or reset the action through the navigation2 rviz plugin shown.
You can pause (cancel) or reset the action through the Nav2 rviz plugin shown.

.. image:: /images/rviz/navigate-to-pose.png
:width: 700px
Expand Down
Loading

0 comments on commit 363b9ee

Please sign in to comment.