diff --git a/sphinx_doc/howtos/build_instructions/build_docs/build_troubleshooting_guide.rst b/sphinx_doc/build_instructions/build_docs/build_troubleshooting_guide.rst similarity index 100% rename from sphinx_doc/howtos/build_instructions/build_docs/build_troubleshooting_guide.rst rename to sphinx_doc/build_instructions/build_docs/build_troubleshooting_guide.rst diff --git a/sphinx_doc/howtos/doxygen/index.rst b/sphinx_doc/build_instructions/build_docs/doxygen.rst similarity index 87% rename from sphinx_doc/howtos/doxygen/index.rst rename to sphinx_doc/build_instructions/build_docs/doxygen.rst index 8e51301cbfca286adb7b9f2f155a9b4f9f5fa4a1..8a980a2913c1bf30e4700aa01533aa33a852e8c7 100644 --- a/sphinx_doc/howtos/doxygen/index.rst +++ b/sphinx_doc/build_instructions/build_docs/doxygen.rst @@ -1,4 +1,4 @@ -.. _doxygen_howtos: +.. _doxygen_build_instructions: Generate Doxygen ################ diff --git a/sphinx_doc/howtos/build_instructions/build_docs/manual_build/docker.rst b/sphinx_doc/build_instructions/build_docs/manual_build/docker.rst similarity index 100% rename from sphinx_doc/howtos/build_instructions/build_docs/manual_build/docker.rst rename to sphinx_doc/build_instructions/build_docs/manual_build/docker.rst diff --git a/sphinx_doc/howtos/build_instructions/build_docs/manual_build/master_build.rst b/sphinx_doc/build_instructions/build_docs/manual_build/master_build.rst similarity index 100% rename from sphinx_doc/howtos/build_instructions/build_docs/manual_build/master_build.rst rename to sphinx_doc/build_instructions/build_docs/manual_build/master_build.rst diff --git a/sphinx_doc/howtos/build_instructions/build_docs/manual_build/specific_distro_build.rst b/sphinx_doc/build_instructions/build_docs/manual_build/specific_distro_build.rst similarity index 100% rename from sphinx_doc/howtos/build_instructions/build_docs/manual_build/specific_distro_build.rst rename to sphinx_doc/build_instructions/build_docs/manual_build/specific_distro_build.rst diff --git a/sphinx_doc/howtos/build_instructions/build_docs/quick_start.rst b/sphinx_doc/build_instructions/build_docs/quick_start.rst similarity index 100% rename from sphinx_doc/howtos/build_instructions/build_docs/quick_start.rst rename to sphinx_doc/build_instructions/build_docs/quick_start.rst diff --git a/sphinx_doc/howtos/build_instructions/build_docs/use_case_recommendations.rst b/sphinx_doc/build_instructions/build_docs/use_case_recommendations.rst similarity index 100% rename from sphinx_doc/howtos/build_instructions/build_docs/use_case_recommendations.rst rename to sphinx_doc/build_instructions/build_docs/use_case_recommendations.rst diff --git a/sphinx_doc/howtos/build_instructions/index.rst b/sphinx_doc/build_instructions/index.rst similarity index 52% rename from sphinx_doc/howtos/build_instructions/index.rst rename to sphinx_doc/build_instructions/index.rst index 29746801b8efb248a5db80713403570f7057c19b..724158573577657b5d74323aef6e2bc4787fe1dc 100644 --- a/sphinx_doc/howtos/build_instructions/index.rst +++ b/sphinx_doc/build_instructions/index.rst @@ -3,24 +3,19 @@ Build Instructions ################## -The instructions to build **Navigation2 Stack** and **Navigation2 Dependencies**. +The instructions to build **Navigation 2** and **Navigation 2 Dependencies**. **Build Options** -There are two different recommended methods for building Navigation2 stack from source. - -1- Manually Build From Source : Manual step by step method to build Navigation2 +1- Manually Build From Source: Manual step by step method to build Navigation2 - :ref:`master-build` - :ref:`specific-distro-build` -2- Quickstart Using Initial Setup Script : An automated method to build Navigation2 in a simple and easy way. +2- Quickstart Using Initial Setup Script: An automated method to build Navigation2 in a simple and easy way. - :ref:`quick-start` -!!!! - -**Recommended Platform** - -* `Ubuntu 18.04 <http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso>`_ +3- Docker Containers + - :ref:`docker` !!!! @@ -35,7 +30,7 @@ There are two different recommended methods for building Navigation2 stack from build_docs/manual_build/master_build.rst build_docs/manual_build/specific_distro_build.rst - build_docs/manual_build/docker.rst build_docs/quick_start.rst + build_docs/manual_build/docker.rst build_docs/use_case_recommendations build_docs/build_troubleshooting_guide.rst diff --git a/sphinx_doc/howtos/configuration/configuring-the-controller.rst b/sphinx_doc/configuration/configuring-the-controller.rst similarity index 100% rename from sphinx_doc/howtos/configuration/configuring-the-controller.rst rename to sphinx_doc/configuration/configuring-the-controller.rst diff --git a/sphinx_doc/howtos/configuration/dwb-plugins/goal-checkers.rst b/sphinx_doc/configuration/dwb-plugins/goal-checkers.rst similarity index 100% rename from sphinx_doc/howtos/configuration/dwb-plugins/goal-checkers.rst rename to sphinx_doc/configuration/dwb-plugins/goal-checkers.rst diff --git a/sphinx_doc/howtos/configuration/dwb-plugins/trajectory-critics.rst b/sphinx_doc/configuration/dwb-plugins/trajectory-critics.rst similarity index 100% rename from sphinx_doc/howtos/configuration/dwb-plugins/trajectory-critics.rst rename to sphinx_doc/configuration/dwb-plugins/trajectory-critics.rst diff --git a/sphinx_doc/howtos/configuration/dwb-plugins/trajectory-generators.rst b/sphinx_doc/configuration/dwb-plugins/trajectory-generators.rst similarity index 100% rename from sphinx_doc/howtos/configuration/dwb-plugins/trajectory-generators.rst rename to sphinx_doc/configuration/dwb-plugins/trajectory-generators.rst diff --git a/sphinx_doc/howtos/configuration/index.rst b/sphinx_doc/configuration/index.rst similarity index 92% rename from sphinx_doc/howtos/configuration/index.rst rename to sphinx_doc/configuration/index.rst index 8a7837036dff8ed51591e0e0f26908d8e6ba1996..0cbd9ae643ceb616eba827a31d2a48f19ef0da67 100644 --- a/sphinx_doc/howtos/configuration/index.rst +++ b/sphinx_doc/configuration/index.rst @@ -1,4 +1,4 @@ -.. _docs_configuration: +.. _configuration: Configuration Guidelines ######################## diff --git a/sphinx_doc/howtos/configuration/params/tunable-params.rst b/sphinx_doc/configuration/params/tunable-params.rst similarity index 100% rename from sphinx_doc/howtos/configuration/params/tunable-params.rst rename to sphinx_doc/configuration/params/tunable-params.rst diff --git a/sphinx_doc/contribute/index.rst b/sphinx_doc/contribute/index.rst index 196e9f09cde2409533df3e3d5ddaf2653c5bcc53..8c0da7f0df1c4c29a865973406f3d5ab873c3629 100644 --- a/sphinx_doc/contribute/index.rst +++ b/sphinx_doc/contribute/index.rst @@ -6,6 +6,9 @@ Contributing to the Project As an open-source project, we welcome and encourage the community to submit patches for code, documentation, tests, and more, directly to the project. +We have a set of contribution guidelines and documentation guidelines. +You can see the them in the pages below. + .. toctree:: :maxdepth: 1 diff --git a/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/navigation_with_recovery_behaviours.gif b/sphinx_doc/getting_started/images/navigation_with_recovery_behaviours.gif similarity index 100% rename from sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/navigation_with_recovery_behaviours.gif rename to sphinx_doc/getting_started/images/navigation_with_recovery_behaviours.gif diff --git a/sphinx_doc/getting_started/index.rst b/sphinx_doc/getting_started/index.rst index bd1c24dd5aa52d79395a01227d74088c02d77009..b8c4d62e4435a32b323c721a99f41e4e689bd04b 100644 --- a/sphinx_doc/getting_started/index.rst +++ b/sphinx_doc/getting_started/index.rst @@ -5,13 +5,11 @@ Getting Started This document will take you through the process of installing the |PN| binaries and navigating a simulated Turtlebot 3 in the Gazebo simulator. We'll use the -|Distro| version of ROS 2, since it is the latest stable version at the time -this was written. The instructions are written primarily for Ubuntu 18, using -the standard installation options. +|Distro| version of ROS 2 and Ubuntu 18 for the standard installation options. .. note:: - See the :ref:`howtos` for other situations such as building from source or + See the :ref:`build-instructions` for other situations such as building from source or working with other types of robots. .. warning:: @@ -24,15 +22,14 @@ Installation ************ 1. Install the `ROS 2 binary packages`_ as described in the official docs -2. Install the |PN| packages using your operating system's package manager. For - Ubuntu 18, do this: +2. Install the |PN| packages using your operating system's package manager: .. code-block:: bash sudo apt install ros-dashing-navigation2 sudo apt install ros-dashing-nav2-bringup -3. Install the Turtlebot 3 packages. Again, for Ubuntu 18, it looks like this: +3. Install the Turtlebot 3 packages: .. code-block:: bash @@ -42,7 +39,7 @@ Running the Example ******************* 1. Start a terminal in your GUI -2. Set key environment variables. Here's how to do it in Ubuntu. +2. Set key environment variables: .. code-block:: bash @@ -56,6 +53,10 @@ Running the Example ros2 launch nav2_bringup nav2_simulation_launch.py + This launch file will launch Navigation2 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. If everything has started correctly, you will see the RViz and Gazebo GUIs like this. @@ -64,8 +65,7 @@ Running the Example :scale: 50% :alt: Initial appearance of RViz before hitting startup button - Initial appearance of RViz before hitting startup button. Nothing is - displayed at this point because |PN| is still in the unconfigured state + Initial appearance of RViz before hitting startup button, in unconfigured state. .. figure:: /images/gazebo/gazebo_turtlebot1.png :scale: 50% @@ -74,7 +74,7 @@ Running the Example Initial appearance of Gazebo with Turtlebot 3 world 4. Click the "Startup" button in the bottom left corner of RViz. This will - cause |PN| to change to the Active lifecycle state. It should + cause |PN| to change to the Active state. It should change appearance to show the map. .. figure:: /images/rviz/rviz_initial.png @@ -106,7 +106,8 @@ Navigating Estimate" button and try again, if you prefer. Once you've set the initial pose, the trasform tree will be complete and - |PN| is fully active and ready to go. + |PN| is fully active and ready to go. You should see the robot and particle + cloud now. .. figure:: /images/rviz/navstack-ready.png :scale: 50% @@ -129,3 +130,7 @@ Navigating :alt: Turtlebot on its way to the goal. Turtlebot on its way to the goal. + +.. image:: images/Navigation2_with_Turtlebot3_in_Gazebo/navigation_with_recovery_behaviours.gif + :height: 640px + :alt: Navigation2 with Turtlebot 3 Demo diff --git a/sphinx_doc/howtos/docs/index.rst b/sphinx_doc/howtos/docs/index.rst deleted file mode 100644 index 287bcff68bef89353e47e1f7e7becc6a147a93db..0000000000000000000000000000000000000000 --- a/sphinx_doc/howtos/docs/index.rst +++ /dev/null @@ -1,29 +0,0 @@ -.. _docs_howtos: - -Documentation How-Tos -##################### - -This guide has everything you need to know to begin writing, building, and -deploying technical documentation using our Git/Sphinx/Read the Docs workflow. -Start by learning how to clone and build this template on your local system. - -Build Guide -=========== - -.. toctree:: - :maxdepth: 1 - - process/docbuild - process/docker-build - - -.. _technical-guides: - -Technical Guides -================ - -.. toctree:: - :maxdepth: 1 - :glob: - - tech/* diff --git a/sphinx_doc/howtos/docs/process/docbuild.rst b/sphinx_doc/howtos/docs/process/docbuild.rst deleted file mode 100644 index c6b13e5062f5c2fece9bec769935f4f7f32e9c58..0000000000000000000000000000000000000000 --- a/sphinx_doc/howtos/docs/process/docbuild.rst +++ /dev/null @@ -1,256 +0,0 @@ -.. _doc_gen: - -Build the template locally -########################## - -These instructions will walk you through building the |PN| on your local -system. - -Documentation overview -********************** - -The |PN| Project content is written using the reStructuredText markup -language (.rst file extension) with Sphinx extensions, and processed -using Sphinx to create a formatted stand-alone website. Developers can -view this content either in its raw form as .rst markup files, or you -can generate the HTML content and view it with a web browser directly on -your workstation. - -You can read details about `reStructuredText`_, and `Sphinx`_ from -their respective websites. - -The project's documentation contains the following items: - -* ReStructuredText source files used to generate documentation found at the - `documentation site`_. All of the reStructuredText sources - are found in the `documentation repo`_. - -The reStructuredText files are processed by the Sphinx documentation system, -and make use of the breathe extension for including the doxygen-generated API -material. - -Set up the documentation working folders -**************************************** - -You'll need git installed to get the working folders set up: - -* For an Ubuntu development system use: - - .. code-block:: bash - - sudo apt-get install git - -* For a Fedora development system use - - .. code-block:: bash - - sudo dnf install git - -We use github.io for publishing the generated documentation. -Here's the recommended local folder setup for documentation contributions -and generation: - -.. code-block:: none - - projectname/ - doc-repo/ - -The parent folder ``projectname`` is there to make room for the -publishing area that will come later. It's best if the ``doc-repo`` -folder is an ssh clone of your personal fork of the upstream project -repos (though https clones work too): - -#. Use your browser to visit the `documentation repo`_ and make a - fork of the repo to your personal GitHub account. - - .. image:: images/fork-docs.png - -#. Copy the clone URL of the GitHub repo: - - .. image:: images/copy-clone-url.png - -#. At a command prompt, create the working folder and clone - the `documentation repo`_ to your local computer (and if you - have publishing rights, the `documentation site`_). If you don't have - publishing rights, you'll still be able to generate the docs locally, but - not publish them: - - .. code-block:: bash - - cd ~ - mkdir project-name && cd project-name - git clone git@github.com:<github-username>/<projectname>/<documentrepo>.git - -#. For the cloned local repos, tell git about the upstream repo: - - .. code-block:: bash - - cd doc-repo - git remote add upstream git@github.com:<projectname>/<document-repo>.git - -#. If you haven't done so already, be sure to configure git with your name - and email address for the signed-off-by line in your commit messages: - - .. code-block:: bash - - git config --global user.name "David Developer" - git config --global user.email "david.developer@company.com" - -.. _install_doc_gen: - -Installing the documentation tools -********************************** - -Our documentation processing has been tested to run with: - -* Python 3.6.3 -* Doxygen version 1.8.13 -* Sphinx version 1.7.5 -* Breathe version 4.9.1 -* docutils version 0.14 -* sphinx_rtd_theme version 0.4.0 - -The |PN| makes use of additional Sphinx extensions used for -creating drawings: - -* sphinxcontrib-plantuml -* sphinx.ext.graphviz (included with Sphinx) - -.. note:: The plantuml extension uses Java to render the uml drawing - syntax into an image. You'll need to have a Java runtime environment - (JRE) installed when generating documentation. - -Depending on your Linux version, install the needed tools: - -* For Ubuntu use: - - .. code-block:: bash - - sudo apt-get install doxygen python3-pip python3-wheel make default-jre - -* For Fedora use: - - .. code-block:: bash - - sudo dnf install doxygen python3-pip python3-wheel make default-jre - -And for either Linux environment, install the remaining python-based -tools: - -.. code-block:: bash - - cd ~/<projectname>/doc-repo - pip3 install --user -r scripts/requirements.txt - -And with that you're ready to generate the documentation. - -Documentation presentation theme -******************************** - -Sphinx supports easy customization of the generated documentation -appearance through the use of themes. Replace the theme files and do -another ``make html`` and the output layout and style is changed. -The ``read-the-docs`` theme is installed as part of the -``requirements.txt`` list above. - -Running the documentation processors -************************************ - -The doc-repo directory has all the .rst source files, extra tools, and Makefile for -generating a local copy of the technical documentation. - -.. code-block:: bash - - cd ~/<projectname>/doc-repo - make html - -Depending on your development system, it will take about 10 seconds to -collect and generate the HTML content. When done, you can view the HTML -output with your browser started at ``~/<projectname>/doc-repo/_build/html/index.html`` - -Publishing content -****************** - -If you have merge rights to the `documentation repo`_, you can update -the public project. - -You'll need to do a one-time clone of the upstream repo (we publish -directly to the upstream repo rather than to a personal forked copy): - -.. code-block:: bash - - cd ~/<projectname> - git clone git@github.com:<projectname>/<documentationrepo>.git - -Then, after you've verified the generated HTML from ``make html`` looks -good, you can push directly to the publishing site with: - -.. code-block:: bash - - make publish - -This will delete everything in the publishing repo's **latest** folder -(in case the new version has -deleted files) and push a copy of the newly-generated HTML content -directly to the GitHub pages publishing repo. The `documentation site`_ -will be updated within a few minutes, so it's best to verify the -locally generated html before publishing. - -Basic editing and making the template your own -********************************************** - -#. TOC trees need to be in the index.rst at each level to define the - site structure. For example, this is the TOC tree used to generate - this site: - - .. code-block:: rest - - .. toctree:: - :maxdepth: 1 - - introduction/index.rst - getting_started/index.rst - release_notes.rst - howtos/index.rst - contribute/index.rst - -#. Changes to theme can be made by editing ``static/custom.css``. -#. No matter where the images are before the build, after the build all the - images are collected in one directory: all the image filenames must be - unique. -#. Modify ``conf.py`` to reflect your project: - - .. code-block:: bash - - # General information about the project. - project = u'<project name>' - copyright = u'<year>, <project name>' - author = u'<project name> developers' - -#. Modify ``substitutions.txt`` to reflect your project: - - .. code-block:: rest - - .. |PN| replace:: <project name> - - .. |LPN| replace:: <long project name> - - .. _project repo: https://github.com/<projectname>/ - - .. _documentation repo: https://github.com/<proejctname>/<docrepo> - - .. _documentation site: https://<projectname>.github.io - - .. _project website: https://github.com/<projectname>/ - -#. Edit ``LICENSE`` to reflect your project name and requirements -#. Make any edits to ``Makefile`` that might be needed to facilitate the - build or change the name of your local instantiation of the github.io - website repository directory. -#. Replace logos and favicon in ``/images`` with your project logos -#. Run ``make clean`` to remove any previously generated HTML. -#. Regenerate the HTML with Sphinx with ``make html``. -#. Push the updated content to the github.io repo with ``make publish``. - -.. _reStructuredText: http://sphinx-doc.org/rest.html -.. _Sphinx: http://sphinx-doc.org/ diff --git a/sphinx_doc/howtos/docs/process/docker-build.rst b/sphinx_doc/howtos/docs/process/docker-build.rst deleted file mode 100644 index a5cbeb2f1f1abbb3ce853dcc19f9d18b088e62bc..0000000000000000000000000000000000000000 --- a/sphinx_doc/howtos/docs/process/docker-build.rst +++ /dev/null @@ -1,56 +0,0 @@ -.. _docker_build: - -Use Docker to build this Sphinx project -####################################### - -.. warning:: - - This is a work in progress and will only work if Docker is already - installed. - -.. note:: - - Permission to share the C drive must be reset every time you change - your windows password. - -If you'd like to build the documentation but don't want to install all of the -dependencies on your system, consider using a docker container to do it. This -is very similar to what most automated build systems do. - -You'll need to be in the same directory as the included -:file:`/scripts/docker/Dockerfile` to build the image. Once you're there, -simply run this command: - -.. code-block:: bash - - sudo docker build -t sphinx-builder . #Linux Bash - - docker build -t sphinx-builder . #Windows Powershell - -.. note:: - - ``sphinx-builder`` is the name of the image that gets created. - -Once the image has successfully built (docker not being configured for proxy -is a common gotcha [#f1]_ [#f2]_), you can build the project. You'll need to be in the same -directory as the :file:`conf.py` to successfully build the documentation, so -do that first, then run the following command (remember sphinx-builder is the -name we gave the image in the previous command, so if you named it something -else use that instead): - -.. code-block:: bash - - sudo docker run --rm -v `pwd`:/home/sphinx -w /home/sphinx -i -t sphinx-builder make html #Linux Bash - - docker run --rm -v ${pwd}:/home/sphinx -w /home/sphinx -i -t sphinx-builder make html #Windows Powershell - -``pwd`` is shorthand for "present working directory," so the -command maps (-v) the ``pwd`` of the host environment to the :file:`/home/sphinx` directory in the container, then sets it to the working directory -(-w). And finally, we run the container by name and pass in the -:command:`make html` command to build the documentation. The ``--rm`` option -ensures that docker cleans up after it's finished by deleting the container. - -.. rubric:: Footnotes - -.. [#f1] Configuring proxy for Docker for Windows: https://docs.docker.com/docker-for-windows/#proxies -.. [#f2] Configuring proxy for DockerCE in Linux: https://docs.docker.com/config/daemon/systemd/#httphttps-proxy \ No newline at end of file diff --git a/sphinx_doc/howtos/docs/process/images/check-repo.png b/sphinx_doc/howtos/docs/process/images/check-repo.png deleted file mode 100644 index 64e4ce17ad23d39c028a6686a5197138da89ddaf..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/process/images/check-repo.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/process/images/clone-repo.png b/sphinx_doc/howtos/docs/process/images/clone-repo.png deleted file mode 100644 index c30af8c26b1e457616bd9fd438a6fcb4c917d5a8..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/process/images/clone-repo.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/process/images/commit-nojekyll.png b/sphinx_doc/howtos/docs/process/images/commit-nojekyll.png deleted file mode 100644 index ee8c28e22c345353db0e292972f5b47008608a57..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/process/images/commit-nojekyll.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/process/images/copy-clone-url.png b/sphinx_doc/howtos/docs/process/images/copy-clone-url.png deleted file mode 100644 index 1b32542d884342a7f6a1ee9d3ca2de8bfff4cfbe..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/process/images/copy-clone-url.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/process/images/copy-githubio-clone-url.png b/sphinx_doc/howtos/docs/process/images/copy-githubio-clone-url.png deleted file mode 100644 index 0ded75df0c97328f81ee38354da57c44a8884c33..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/process/images/copy-githubio-clone-url.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/process/images/create-readme.png b/sphinx_doc/howtos/docs/process/images/create-readme.png deleted file mode 100644 index 6068a3570470b3dbf9b2bb83b5761aaf22b695a5..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/process/images/create-readme.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/process/images/fork-docs.png b/sphinx_doc/howtos/docs/process/images/fork-docs.png deleted file mode 100644 index a4b15645467032b475d65bc798ec613fbf6af958..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/process/images/fork-docs.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/process/images/get-git-url.png b/sphinx_doc/howtos/docs/process/images/get-git-url.png deleted file mode 100644 index 4e6eb7878a5138066f5d51a00ec1e202a50b30d0..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/process/images/get-git-url.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/process/images/get-git-zip.png b/sphinx_doc/howtos/docs/process/images/get-git-zip.png deleted file mode 100644 index d4c8c8339eb077817e9b29265b5487e04fd3ce8c..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/process/images/get-git-zip.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/process/images/name-git-repo.png b/sphinx_doc/howtos/docs/process/images/name-git-repo.png deleted file mode 100644 index 4a62944aec7236acf60a7b746be76a79b42a04ce..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/process/images/name-git-repo.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/process/images/name-github-pages-repo.png b/sphinx_doc/howtos/docs/process/images/name-github-pages-repo.png deleted file mode 100644 index 60f74b3b6c76cbfb90755481bea82b06ba24f956..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/process/images/name-github-pages-repo.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/process/images/name-nojekyll.png b/sphinx_doc/howtos/docs/process/images/name-nojekyll.png deleted file mode 100644 index 49fc7fc498b76b8d616e117df34bd893dea6fb27..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/process/images/name-nojekyll.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/process/images/new-git-repository.png b/sphinx_doc/howtos/docs/process/images/new-git-repository.png deleted file mode 100644 index 299df51f304fc64f8ea2beadc47b023f943840e4..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/process/images/new-git-repository.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/tech/GeneratedImagesExamples.rst b/sphinx_doc/howtos/docs/tech/GeneratedImagesExamples.rst deleted file mode 100644 index 3fa72443d2b8925add188a93262557d1d9f8555e..0000000000000000000000000000000000000000 --- a/sphinx_doc/howtos/docs/tech/GeneratedImagesExamples.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _dot_examples: - -Examples of Generated Images -################################ - -Test graphviz drawing from mft.dot - -.. graphviz:: images/mft.dot - -Test another graphviz drawing from repo_sync.dot - -.. graphviz:: images/repo_sync.dot - -And a test of plantuml from ssp.pu - -.. uml:: images/ssp.pu diff --git a/sphinx_doc/howtos/docs/tech/images/copy_url.png b/sphinx_doc/howtos/docs/tech/images/copy_url.png deleted file mode 100644 index 24b5ecd802965daaba5e03fef21dee9919671c35..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/tech/images/copy_url.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/tech/images/create_project.png b/sphinx_doc/howtos/docs/tech/images/create_project.png deleted file mode 100644 index 63ab63b04393692cf83f200261a8779a7a50d903..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/tech/images/create_project.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/tech/images/mft.dot b/sphinx_doc/howtos/docs/tech/images/mft.dot deleted file mode 100644 index 4b6dc378c7c921e0f766631ec48997885ea39ba3..0000000000000000000000000000000000000000 --- a/sphinx_doc/howtos/docs/tech/images/mft.dot +++ /dev/null @@ -1,25 +0,0 @@ -digraph G { - bgcolor="transparent"; - node [fontsize=10 shape=record] - node [fontsize=10] - rankdir=LR - - bin_complete [label="<ext>Extended Manifest\n(unsigned) - |<mft>Manifest\n(signed)|<bins>Binaries"] - - mft [label="<hdr>CSE Header - |CSS Header (Type 4)\nmodule_type = 4\n... - |<mcb>ManifestCryptoBlock - |PlatformFirmware\nAuthenticationExtension - |...other extensions... - |AdspMetadataFileExtension - |...alignment... - |AdspFwBinaryDesc"] - - mcb [label="ManifestRSAKey\nmodulus\nexponent - |Signature"] - - bin_complete:mft -> mft:hdr - mft:mcb -> mcb - -} diff --git a/sphinx_doc/howtos/docs/tech/images/ms-store-ubuntu-get.png b/sphinx_doc/howtos/docs/tech/images/ms-store-ubuntu-get.png deleted file mode 100644 index 4c7f7be136703ea83a9b242cc38739bd20a4645b..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/tech/images/ms-store-ubuntu-get.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/tech/images/ms-store-ubuntu.png b/sphinx_doc/howtos/docs/tech/images/ms-store-ubuntu.png deleted file mode 100644 index bf2fde92e07bb2bd516f4f7a6448d0c5994a0a6c..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/tech/images/ms-store-ubuntu.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/tech/images/new_project.png b/sphinx_doc/howtos/docs/tech/images/new_project.png deleted file mode 100644 index f47892ef0d81b21d0a4a98062499c5eaf8b9d7d9..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/howtos/docs/tech/images/new_project.png and /dev/null differ diff --git a/sphinx_doc/howtos/docs/tech/images/repo_sync.dot b/sphinx_doc/howtos/docs/tech/images/repo_sync.dot deleted file mode 100644 index 69792346a366e687c895e330e8cb182df5e1dfce..0000000000000000000000000000000000000000 --- a/sphinx_doc/howtos/docs/tech/images/repo_sync.dot +++ /dev/null @@ -1,30 +0,0 @@ -digraph repo_sync { - bgcolor="transparent"; - rankdir=LR - compound=true; - node [fontsize=10, shape=record, style=rounded]; - edge [fontsize=10]; - - - subgraph clusterPublic { - label="cool-project"; fontsize=10; - - subgraph clusterPubMaster { - label="master\n(RW)"; fontsize=11; - style="filled,rounded"; color="#F0F0F0" - - c1 -> c2 -> c3 -> c4; - - } - - subgraph clusterPubabcProd { - label="abc_prod\n(RO replica)"; fontsize=11; - style="filled,rounded"; color="#F0F0FF" - - node [style="rounded,dashed"]; - - abc_c4 [label="c4 [REL1]"]; - abc_c1 -> abc_c2 -> abc_c3 -> abc_c4; - } - } -} diff --git a/sphinx_doc/howtos/docs/tech/images/ssp.pu b/sphinx_doc/howtos/docs/tech/images/ssp.pu deleted file mode 100644 index ae6d015a870b97bd613b78cc377fefb8f469f943..0000000000000000000000000000000000000000 --- a/sphinx_doc/howtos/docs/tech/images/ssp.pu +++ /dev/null @@ -1,17 +0,0 @@ -@startuml -skinparam backgroundcolor transparent -component dai -package drivers { - component "apl-ssp" as ssp -} -database ".data" { - component "struct dai ssp[3]" as d_ssp -} -database ".rodata" { - component ssp_ops -} - -dai ..> d_ssp : expose via dai_get() -d_ssp -> ssp_ops : links to -ssp ..> ssp_ops : provide -@enduml diff --git a/sphinx_doc/howtos/docs/tech/important-sphinx-files.rst b/sphinx_doc/howtos/docs/tech/important-sphinx-files.rst deleted file mode 100644 index 3033d6d9e9f0dfa5fc29f4d8c745d4bddf8581d4..0000000000000000000000000000000000000000 --- a/sphinx_doc/howtos/docs/tech/important-sphinx-files.rst +++ /dev/null @@ -1,101 +0,0 @@ -.. _important-sphinx-files: - -Important Sphinx files -###################### - -These files will appear in most Sphinx projects and are used to extend and define the build behavior. - -.. rst-class:: content-collapse - -conf.py -======= - -Configure Sphinx variables - -suffix - Set the kind of files to process (.rst or .md). - - .. code-block:: python - - source_suffix = '.rst' - -master document - Set the file to use as the top level document for the project (relative to conf.py). - - .. code-block:: python - - master_doc = 'index' - -general info - General information about the project. - - .. code-block:: python - - project = u'Open source documentation template' - copyright = u'2018, TCS Documentation Template' - author = u'TCS developers' - -extensions - Add functionality to your Sphinx build. - - .. code-block:: python - - extensions = ['breathe', 'sphinx.ext.graphviz', 'sphinxcontrib.plantuml'] - - -exclude patterns - Exclude directories from Sphinx processing by adding them to a list. - - .. code-block:: python - - exclude_patterns = ['_build','_themes','scripts' ] - -theme - Use one of the provided Sphinx themes or a custom one. - - .. code-block:: python - - html_theme_path = ['_themes'] - html_theme = 'otc_tcs_sphinx_theme' - -.. rst-class:: content-collapse - -substitutions.txt -================= - -Add content to this file when you want it to appear at the end of or be -accessed by every page of the project. We use it to set global string -replacements and links. - -replace string - Useful when you want to create a shorthand version of a long string. - - .. code-block:: rest - - .. |PN| replace:: project name - -global link - Use these when you will be re-using a link throughout the project. - - .. code-block:: rest - - .. _project website: https://rosplanning.github.io/navigation2/ - -unicode - You can also create shortcuts for commonly used unicode characters. - - .. code-block:: rest - - .. |copy| unicode:: U+000A9 .. COPYRIGHT SIGN - :ltrim: - -.. note:: - - We implmented this by using an ``include`` directive in - the ``rst_epilog`` variable in :file:`conf.py` like this: - - .. code-block:: python - - rst_epilog = """ - .. include:: /substitutions.txt - """ diff --git a/sphinx_doc/howtos/docs/tech/pandocs-conversion.rst b/sphinx_doc/howtos/docs/tech/pandocs-conversion.rst deleted file mode 100644 index 4c4f2d0781ea8c58a4ae66490addb25597a1a0f8..0000000000000000000000000000000000000000 --- a/sphinx_doc/howtos/docs/tech/pandocs-conversion.rst +++ /dev/null @@ -1,113 +0,0 @@ -.. _pandocs-conversion: - -Pandocs Conversion Tutorial -########################### - -.. contents:: :local: - :depth: 2 - - -This tutorial shows you how to use ``pandoc`` to convert files in various -formats. - -Table 1 shows current conversions. - -.. list-table:: Table 1. Conversions - :widths: 80 100 100 - :header-rows: 1 - :stub-columns: 1 - - * - Convert - - From - - To - * - reSTructured Text to HTML - - ``.rst`` - - ``.html`` - * - Markdown to reSTructured Text - - ``.md`` - - ``.rst`` - * - reSTructured Text to HTML - - ``.rst`` - - ``.html`` - -Scope -===== - -Conversion should be a preliminary step in migrating to Sphinx -for your documentation project. The results of conversion will complete -about 80% of the work. It's expected that you'll edit converted files as -post-processing. We recommend studying the `Pandoc website`_ to learn more. - -In the Clear Linux\* documention, we established -`Documentation Contribution Guidelines`_, which explain conventions and -usage of reST syntax. We encourage you to establish similar guidelines for -your team. Even minimal initial investment in guidelines greatly -reduces future work. More importantly, providing clear guidelines supports -your team's long-term maintence efforts. - -Note: See also the Clear Linux `reSTructured Text Guide`_. - -Prerequisites -============= - -* `Install Pandocs`_ -* Command line interface basic skills -* Text editor (e.g., Sublime, Notepad++, etc.) -* Web browser - -Introduction -============ -We recommend following reST conventions and best practices for Sphinx. To -learn more, visit the `Sphinx website`_ - -Single file Conversion -======================= - -For single file conversions, - - -cd into the file directory: - -.. code-block:: bash - - $ cd pandocs-tutorial - - -From Markdown to reST ---------------------- - -#. Run the command: - -.. code-block:: bash - - $ pandoc --from=markdown --to=rst --output=cicero.rst cicero.md - -From Markdown to HTML ---------------------- - -#. Run the command: - -.. code-block:: bash - - $ pandoc cicero.md -f markdown -t html -s -o cicero.html - -From reST to HTML ------------------ -#. Run the command: - -.. code-block:: bash - - $ pandoc -f rst -t html cicero.rst > cicero.html - -**Congratulations!** You have learned how to convert single files to your preferred format. - - -.. _Install Pandocs: https://pandoc.org/installing.html - -.. _Sphinx website: http://www.sphinx-doc.org/en/master/index.html - -.. _Pandoc website: https://pandoc.org/ - -.. _Documentation Contribution Guidelines: https://clearlinux.org/documentation/clear-linux/reference/collaboration/documentation - -.. _reSTructured Text Guide: https://clearlinux.org/documentation/clear-linux/reference/collaboration/documentation/rest#additional-information diff --git a/sphinx_doc/howtos/index.rst b/sphinx_doc/howtos/index.rst deleted file mode 100644 index 313de3f44ae3db898307fcad7047a3a6aabb3c06..0000000000000000000000000000000000000000 --- a/sphinx_doc/howtos/index.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. _howtos: - -How-Tos -####### - -.. toctree:: - :maxdepth: 1 - - build_instructions/index.rst - docs/index.rst - configuration/index.rst - doxygen/index.rst diff --git a/sphinx_doc/index.rst b/sphinx_doc/index.rst index 091d1c3ff7114f784184dd6c0cd70a538d6afa06..c4b1f8a38747c9ce22da1a13c081314fa8f2c2dd 100644 --- a/sphinx_doc/index.rst +++ b/sphinx_doc/index.rst @@ -7,42 +7,68 @@ Overview ######## -The |PN| project is a set of ROS2 components that help you build a robot that -can drive around. The ROS 2 Navigation System is the framework that -enables a robot to autonomously reach a goal state, such as a position -and orientation relative to a map. Given a current pose, a map, -and a goal, the navigation system generates a plan to reach the goal, -and outputs commands to autonomously drive the robot, -respecting any safety constraints and avoiding obstacles. +The Navigation 2 project is the spiritual successor of the ROS Navigation Stack. +This project seeks to find a safe way to have a mobile robot move from point A to +point B. This will complete dynamic path planning, compute velocities for motors, +avoid obstacles, and structure recovery behaviors. -It has tools to: +Navigation 2 is built on ROS2 and makes use of Behavior Trees for navigation +task orchestration, rather than ``move_base``'s finite state machine. +For those familiar with the ROS1 Navigation Stack will know that ``move_base`` +had some issues and we have addressed them in Navigation 2. -- load and store maps -- localize the robot on the map -- plan a path from A to B around obstacles -- control the robot as it follows the path and avoid any obstacles along the way -- convert sensor data into a costmap representation of the world -- build complicated robot behaviors using behavior trees -- Plugins to enable your own custom algorithms and behaviors +Navigation 2 uses behavior trees to call modular servers to complete an action. +An action can be to compute a path, control effort, recovery, or any other navigation +related action. These are each separate nodes that communicate with the behavior tree (BT) +over a ROS action server. The diagram below will give you a good first-look at the structure +of Navigation 2. Note: It is possible to have multiple plugins for controllers, planners, +and recoveries in each of their servers with matching BT plugins. This can be used to +create contextual navigation behaviors. -These all work seemlessly together, so that, with a bit of customization for your -robot, you can just give it a destination and off it go. +The expected inputs to Navigation2 (Nav2) are TF transformations conforming to REP-105, a +map source if utilizing the Static Costmap Layer, a BT XML file, and any relevant sensor data +sources. It will then provide valid velocity commands for the motors of a holonomic or +non-holonomic robot to follow. We currently support holonomic and differential-drive base types +but plan to support Ackermann (car-like) robots as well in the near future. -Here you will find documentation on how to install and use |PN| with an example robot, Turtlebot -3, as well as how to customize it for other robots, tune the behavior for better -performance, as well as customize the internals for advanced results. -.. raw:: html +It has tools to: - <div style="position: relative; padding-bottom: 0%; overflow: hidden; max-width: 100%; height: auto;"> - <iframe width="708" height="400" src="https://www.youtube.com/embed/ZeCds7Sv-5Q" frameborder="0" allowfullscreen></iframe> - </div> +- load, serve, and store maps (Map Server) +- localize the robot on the map (AMCL) +- plan a path from A to B around obstacles (Nav2 Planner) +- control the robot as it follows the path (Nav2 Controller) +- convert sensor data into a costmap representation of the world (Nav2 Costmap 2D) +- build complicated robot behaviors using behavior trees (Nav2 Behavior Trees and BT Navigator) +- Compute recovery behaviors in case of failure (Nav2 Recoveries) +- Follow sequential waypoints (Nav2 Waypoint Follower) +- Manage the lifecycle of the servers (Nav2 Lifecycle Manager) +- Plugins to enable your own custom algorithms and behaviors (Nav2 Core) .. image:: images/architectural_diagram.png :height: 400px :width: 708px :alt: Navigation2 Block Diagram +We also provide a set of starting plugins to get you going. NavFn computes the shortest path +from a pose to a goal pose using A* or Dijkstra's algorithm. DWB will use the DWA algorithm +to compute a control effort to follow a path, with several plugins of its own for trajectory +critics. There are recovery behaviors included: waiting, spinning, clearing costmaps, and +backing up. There are a set of BT plugins for calling these servers and computing conditions. +Finally, there are a set of Rviz plugins for interacting with the stack and controlling the +lifecycle. + +Here is the documentation on how to install and use |PN| with an example robot, Turtlebot +3 (TB3), as well as how to customize it for other robots, tune the behavior for better +performance, as well as customize the internals for advanced results. Below is an example +of the TB3 navigating in a small lounge. + +.. raw:: html + + <div style="position: relative; padding-bottom: 0%; overflow: hidden; max-width: 100%; height: auto;"> + <iframe width="708" height="400" src="https://www.youtube.com/embed/ZeCds7Sv-5Q" frameborder="0" allowfullscreen></iframe> + </div> + Sections ******** @@ -50,7 +76,7 @@ Sections :maxdepth: 1 getting_started/index.rst - howtos/index.rst + build_instructions/index.rst tutorials/index.rst - release_notes.rst + configuration/index.rst contribute/index.rst diff --git a/sphinx_doc/release_notes.rst b/sphinx_doc/release_notes.rst deleted file mode 100644 index ac4ae550bd53168c829010948652989efc180a3b..0000000000000000000000000000000000000000 --- a/sphinx_doc/release_notes.rst +++ /dev/null @@ -1,5 +0,0 @@ -.. _release_notes: - -Release Notes -############# - diff --git a/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/gazebo_robot_reached_goal.png b/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/gazebo_robot_reached_goal.png deleted file mode 100644 index a14a4261f66b102ba668ac7196b72409f95395f9..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/gazebo_robot_reached_goal.png and /dev/null differ diff --git a/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/gazebo_turlebot3.png b/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/gazebo_turlebot3.png deleted file mode 100644 index b5776b16f4079886429c01ecf31b5009f3d9be7c..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/gazebo_turlebot3.png and /dev/null differ diff --git a/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_initial_view.png b/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_initial_view.png deleted file mode 100644 index 5a1a4e505b1111f8df03526bf722e1b26bfdf668..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_initial_view.png and /dev/null differ diff --git a/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_robot_navigating.png b/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_robot_navigating.png deleted file mode 100644 index aadbe2c040e9d266bf9383800613b415fdf3ef37..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_robot_navigating.png and /dev/null differ diff --git a/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_send_goal_pose.png b/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_send_goal_pose.png deleted file mode 100644 index 5f67ba5190474f46b1b3d7c5ea1e915cf78a71e7..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_send_goal_pose.png and /dev/null differ diff --git a/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_set_initial_pose.png b/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_set_initial_pose.png deleted file mode 100644 index 2b77d4ea680107f2beea1f6d46fa4a9f25cfd0e8..0000000000000000000000000000000000000000 Binary files a/sphinx_doc/tutorials/docs/images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_set_initial_pose.png and /dev/null differ diff --git a/sphinx_doc/tutorials/docs/navigation2_on_real_turtlebot3.rst b/sphinx_doc/tutorials/docs/navigation2_on_real_turtlebot3.rst index 75c51e1fb16876e6af6c6ffbbb32d2e80b7fefb2..86d3ec66f1d769069843b61ab5884709f3fd1541 100644 --- a/sphinx_doc/tutorials/docs/navigation2_on_real_turtlebot3.rst +++ b/sphinx_doc/tutorials/docs/navigation2_on_real_turtlebot3.rst @@ -12,10 +12,7 @@ Overview ======== This tutorial shows how to control and navigate Turtlebot 3 using the ROS2 Navigation2 on a physical Turtlebot 3 robot. -Before completing this tutorials, completing the :ref:`navigation2-with-turtlebot3-in-gazebo`. is highly recommended especially if you are new to ROS and Navigation2. - -This tutorial consists of two parts. In the first part, you learned how to use Turtlebot 3 robots in simulation (Gazebo). -In this part, you will learn how to control a physical Turtlebot Waffle using Navigation2. +Before completing this tutorials, completing :ref:`getting_started` is highly recommended especially if you are new to ROS and Navigation2. ``ROS2 Dashing`` and ``Navigation2 Dashing 0.2.4`` are used to create this tutorial. You should be able to do this tutorial using other Navigation2 versions as well. @@ -27,7 +24,7 @@ Requirements ============ You must install Navigation2, Turtlebot3. -If you don't have them installed, please follow :ref:`navigation2-with-turtlebot3-in-gazebo`. +If you don't have them installed, please follow :ref:`getting_started`. Tutorial Steps ============== @@ -40,14 +37,12 @@ Run the following commands first whenever you open a new terminal during this tu - ``source /opt/ros/<ros2-distro>/setup.bash`` - ``export TURTLEBOT3_MODEL=waffle`` -1- Launch Turtlebot 3 Robot State Publisher -------------------------------------------- - -Launch Turtlebot 3 robot state publisher, +1- Launch Turtlebot 3 +--------------------- - ``ros2 launch turtlebot3_bringup turtlebot3_state_publisher.launch.py use_sim_time:=False`` +You will need to launch your robot's interface, -Note: use_sim_time is set to **False** because we're on a physical robot. + ``ros2 launch turtlebot3_bringup robot.launch.py use_sim_time:=False`` 2- Launch Navigation2 --------------------- diff --git a/sphinx_doc/tutorials/docs/navigation2_with_slam.rst b/sphinx_doc/tutorials/docs/navigation2_with_slam.rst index 1f2d3eb57a0b51cf728593c5bfb9d1408994dfab..63b3c9e450c09d1b7be7c3c81fa479dbbbb91d7b 100644 --- a/sphinx_doc/tutorials/docs/navigation2_with_slam.rst +++ b/sphinx_doc/tutorials/docs/navigation2_with_slam.rst @@ -14,13 +14,13 @@ This document explains how to use Navigation 2 with SLAM. The following steps show ROS 2 users how to generate occupancy grid maps and use Navigation 2 to move their robot around. This tutorial applies to both simulated and physical robots, but will be completed here on physical robot. -Before completing this tutorials, completing the :ref:`navigation2-with-turtlebot3-in-gazebo`. is highly recommended especially if you are new to ROS and Navigation2. +Before completing this tutorials, completing the :ref:`getting_started`. is highly recommended especially if you are new to ROS and Navigation2. Requirements ============ You must install Navigation2, Turtlebot3, and SLAM Toolbox. -If you don't have them installed, please follow :ref:`navigation2-with-turtlebot3-in-gazebo`. +If you don't have them installed, please follow :ref:`getting_started`. SLAM Toolbox can be installed via: ``sudo apt install ros-dashing-slam-toolbox`` @@ -62,6 +62,8 @@ It is assumed that the SLAM node(s) will publish to /map topic and provide the m Bring up your choice of SLAM implementation. Make sure it provides the map->odom transform and /map topic. Run Rviz and add the topics you want to visualize such as /map, /tf, /laserscan etc. +For this tutorial, we will use `SLAM Toolbox <https://github.com/SteveMacenski/slam_toolbox>`_. + ``ros2 launch slam_toolbox online_async_launch.py`` diff --git a/sphinx_doc/tutorials/docs/navigation2_with_stvl.rst b/sphinx_doc/tutorials/docs/navigation2_with_stvl.rst index abe5cabe499854a5d76c40b9a05963ada57c9973..300aeb82c0066fba87b8282d0c1b0c43cc47128f 100644 --- a/sphinx_doc/tutorials/docs/navigation2_with_stvl.rst +++ b/sphinx_doc/tutorials/docs/navigation2_with_stvl.rst @@ -39,7 +39,7 @@ Tutorial Steps 0- Setup -------- -Follow the same process as in :ref:`navigation2-with-turtlebot3-in-gazebo` for installing and setting up a robot for hardware testing or simulation, as applicable. Ensure ROS2, Navigation2, and Gazebo are installed. +Follow the same process as in :ref:`getting_started` for installing and setting up a robot for hardware testing or simulation, as applicable. Ensure ROS2, Navigation2, and Gazebo are installed. 1- Install STVL --------------- @@ -129,7 +129,7 @@ Note: Pluginlib plugins for other Navigation2 servers such as planning, recovery 2- Launch Navigation2 --------------------- -Follow the same process as in :ref:`navigation2-with-turtlebot3-in-gazebo` to launch a simulated robot in gazebo with Navigation2. +Follow the same process as in :ref:`getting_started` to launch a simulated robot in gazebo with Navigation2. Navigation2 is now using STVL as its 3D sensing costmap layer. 3- RVIZ diff --git a/sphinx_doc/tutorials/docs/navigation2_with_turtlebot3_in_gazebo.rst b/sphinx_doc/tutorials/docs/navigation2_with_turtlebot3_in_gazebo.rst deleted file mode 100644 index 1396c5c73a222797261f7b93e3fb0d417650dd8d..0000000000000000000000000000000000000000 --- a/sphinx_doc/tutorials/docs/navigation2_with_turtlebot3_in_gazebo.rst +++ /dev/null @@ -1,192 +0,0 @@ -.. _navigation2-with-turtlebot3-in-gazebo: - -Navigation2 with Turtlebot 3 in Gazebo -************************************** - -- `Overview`_ -- `Requirements`_ -- `Tutorial Steps`_ -- `Videos`_ - -Overview -======== - -This tutorial shows how to control and navigate Turtlebot 3 using the ROS2 Navigation2 in Gazebo. -Turtlebot is a low-cost, educational robot kit with open-source software (ROS2). -Turtblebot robots are widely supported by the ROS community. -You can find many applications and examples of Turtlebot projects on the Internet. -You can find more information about Turtlebot3 `here. <https://www.turtlebot.com/>`_ - -Links to the robot kits and Github repo. - - - `Turtlebot3 Kits <https://www.turtlebot.com/purchase/>`_ - - `Turtlebot 3 Github <https://github.com/ROBOTIS-GIT/turtlebot3>`_ - -This tutorial consists of two parts. -In the first part, you will learn how to use Turtlebot 3 robots in simulation (Gazebo). -And in the second part, you will learn how to control a real Turtlebot Waffle using Navigation2. - -``ROS2 Dashing`` and ``Navigation2 Dashing 0.2.4`` are used to create this tutorial. - -This tutorial may take about 30 minutes to complete. It depends on your experience with ROS, robots, and what computer system you have. - -Requirements -============ - -- [Install ROS2](https://index.ros.org/doc/ros2/Installation/) - -- Install Navigation2 - - - ``sudo apt install ros-<ros2-distro>-navigation2 ros-<ros2-distro>-nav2-bringup`` - -- Install Turtlebot 3 - - - ``sudo apt install ros-<ros2-distro>-turtlebot3*`` - -- `Setup Turtlebot 3 <http://emanual.robotis.com/docs/en/platform/turtlebot3/ros2/#setup>`_ - -Tutorial Steps -============== - -0- Setup Your Environment Variables ------------------------------------ - -Run the following commands whenever you open a new terminal during this tutorial. - -- ``source /opt/ros/<ros2-distro>/setup.bash`` -- ``export TURTLEBOT3_MODEL=waffle`` -- ``export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/opt/ros/dashing/share/turtlebot3_gazebo/models`` - -Short-cut ---------- - -If you don't have the time to go through all the steps and only want to try Navigation2 in simulation, there is a solution for that. -After setting up your system variables, if you don't want to go through the step by step launch instructions, -you can use the launch file that does all the steps that are explained in the next sections for you. - -- ``ros2 launch nav2_bringup nav2_tb3_simulation_launch.py`` - -This launch file is going to launch Gazebo, Turtlebot3 specific nodes, Navigation2 and RViz2. -Once you see everything launced, you can jump to step 5. - -1- Launch Gazebo ----------------- - -Now, launch Gazebo with the world model, open a new terminal and type - - ``gazebo --verbose -s libgazebo_ros_init.so /opt/ros/dashing/share/turtlebot3_gazebo/worlds/turtlebot3_worlds/waffle.model`` - -Once, Gazebo is launched, you should see the Turtlebot3 world and Turtlebot 3 Waffle. - -If Gazebo fails to start, run the following commands and try to launch Gazebo again. - - - ``killall gzserver`` - - ``killall gzclient`` - -.. image:: images/Navigation2_with_Turtlebot3_in_Gazebo/gazebo_turlebot3.png - :height: 720px - :width: 1024px - :alt: TB3 world and robot in Gazebo - -2- Launch Turtlebot 3 Robot State Publisher -------------------------------------------- - -Launch Turtlebot 3 specific nodes, - - ``ros2 launch turtlebot3_bringup turtlebot3_state_publisher.launch.py use_sim_time:=True`` - -Note : Make sure ``use_sim_time`` is set to **True** because our robot Turtlebot 3 is in Gazebo. - -3- Launch Navigation2 ---------------------- - -Launch Navigation 2. If you set ``autostart:=False``, you need to click on the start button in RVIZ to initialize the nodes. -Make sure `use_sim time` is set to **True**, because we want to use the time simulation time in Gazebo instead of the system time. - -turtlebot3_world.yaml is the configuration file for the map we want to provide Navigation2. -In this case, it has the map resolution value, threshold values for obstacles and free spaces, and a map file location. - - ``ros2 launch nav2_bringup nav2_bringup_launch.py use_sim_time:=True autostart:=False map:=/opt/ros/dashing/share/nav2_bringup/launch/turtlebot3_world.yaml`` - -4- Launch RViz ---------------- - -Launch RVIZ with a pre-defined configuration file. - - ``ros2 run rviz2 rviz2 -d $(ros2 pkg prefix nav2_bringup)/share/nav2_bringup/launch/nav2_default_view.rviz`` - -Now, you should see a shadow of Turtlebot 3 robot model in the center of the plot in RViz. -Click on the Start button (Bottom Left) if you set the auto_start parameter to false. - -.. image:: images/Navigation2_on_real_Turtlebot3/rviz_after_launch_view.png - :height: 720px - :width: 1024px - :alt: Rviz after launch, auto_start = false - -Now, the map should appear in RViz. - -.. image:: images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_initial_view.png - :height: 720px - :width: 1024px - :alt: Turtlebot 3 map in RViz - -5- Initialize the location of Turtlebot 3 ------------------------------------------ - -First, find where the robot is in Gazebo. You can see where the robot's initial position in Gazebo. - -.. image:: images/Navigation2_with_Turtlebot3_in_Gazebo/gazebo_turlebot3.png - :height: 720px - :width: 1024px - :alt: Turtlebot 3 world and robot in Gazebo - -Set the pose of the robot in RViz. Click on the 2D Pose Estimate button and point the location of the robot on the map. -The direction of the green arrow is the orientation of Turtlebot. - -.. image:: images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_set_initial_pose.png - :height: 720px - :width: 1024px - :alt: Set initial pose in RViz - -Now, the 3D model of Turtlebot should move to that location. -A small error in the estimated location is tolerable. - -6- Send a Goal Pose --------------------- - -Pick a target location for Turtlebot on the map. -You can send Turtlebot 3 a goal position and a goal orientation by using the **Navigation2 Goal** or the **GoalTool** buttons. - -Note: Navigation2 Goal button uses a ROS2 Action to send the goal and the GoalTool publishes the goal to a topic. - -.. image:: images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_send_goal_pose.png - :height: 720px - :width: 1024px - :alt: Send goal pose in RViz - -Once you define the target pose, Navigation2 will find a global path and start navigating the robot on the map. - -.. image:: images/Navigation2_with_Turtlebot3_in_Gazebo/rviz_robot_navigating.png - :height: 720px - :width: 1024px - :alt: Turtlebot 3 navigating on a map in RViz - -You can also observe that Turtlebot 3 moves in the simulated environment in Gazebo as well. - -.. image:: images/Navigation2_with_Turtlebot3_in_Gazebo/gazebo_robot_reached_goal.png - :height: 720px - :width: 1024px - :alt: Turtlebot 3 navigating in Gazebo - -Next Tutorial -------------- - -:ref:`navigation2-on-real-turtlebot3` - -Videos ------- - -.. image:: images/Navigation2_with_Turtlebot3_in_Gazebo/navigation_with_recovery_behaviours.gif - :height: 480px - :width: 640px - :alt: Navigation2 with Turtlebot 3 Demo diff --git a/sphinx_doc/tutorials/index.rst b/sphinx_doc/tutorials/index.rst index 2086b83bbe6c7e5c800a039a91c6ae1ea126f4ef..8ae1daaafb18a8b00984bf2a6dfd87e20b55cbbc 100644 --- a/sphinx_doc/tutorials/index.rst +++ b/sphinx_doc/tutorials/index.rst @@ -8,7 +8,6 @@ Navigation2 Tutorials .. toctree:: :maxdepth: 1 - docs/navigation2_with_turtlebot3_in_gazebo.rst docs/navigation2_on_real_turtlebot3.rst docs/navigation2_with_slam.rst docs/navigation2_with_stvl.rst