Skip to content

Tutorial: Adding end-to-end custom navigation capabilities to Nav2#903

Open
NOTMOVETON wants to merge 34 commits intoros-navigation:masterfrom
NOTMOVETON:master
Open

Tutorial: Adding end-to-end custom navigation capabilities to Nav2#903
NOTMOVETON wants to merge 34 commits intoros-navigation:masterfrom
NOTMOVETON:master

Conversation

@NOTMOVETON
Copy link
Copy Markdown


Basic Info

Info Please fill out this column
Ticket(s) this addresses #870
Does this PR contain AI-generated software? (Yes, the rewritten from .md .rst tutorial file )

Description of contribution in a few bullet points

Tutorial is about:

  • Making a custom Navigator to handle behavior trees
  • Building a new custom Servers with custom interfaces
  • Writing Behavior Tree nodes
  • Writing the Behavior Trees itself
  • Connecting all parts into a working system

@NOTMOVETON
Copy link
Copy Markdown
Author

NOTMOVETON commented Apr 18, 2026

@SteveMacenski
I have added number of small details as you have suggested. Please check it, and if it would be easier for you to review - here is link to .md version which fully corresponds to new .rst file in plugin_tutorials

Also I have added gif in overview section and demo+explanation video at step 7

Comment thread tutorials/docs/writing_new_nav2_full_pipeline.rst Outdated
Comment thread tutorials/docs/writing_new_nav2_full_pipeline.rst Outdated
Comment thread plugin_tutorials/docs/writing_new_nav2_full_pipeline.rst Outdated
Comment thread plugin_tutorials/docs/writing_new_nav2_full_pipeline.rst Outdated

For a better understanding, here is the image of the pipeline flow:

.. image:: images/Writing_new_nav2_full_pipeline/image4.png
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note to self: Do this in my styling

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can I help somehow?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think something I need to put together with my graphics packages once we're ready to merge

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, I will change small fixes now and basically its done :)

Comment thread tutorials/docs/integrating_new_task_server_and_navigator_plugin.rst
Comment thread tutorials/docs/integrating_new_task_server_and_navigator_plugin.rst
Comment thread tutorials/docs/integrating_new_task_server_and_navigator_plugin.rst
Comment thread tutorials/docs/integrating_new_task_server_and_navigator_plugin.rst Outdated
Comment thread tutorials/docs/integrating_new_task_server_and_navigator_plugin.rst
Comment thread tutorials/docs/integrating_new_task_server_and_navigator_plugin.rst Outdated
@NOTMOVETON NOTMOVETON force-pushed the master branch 3 times, most recently from 34a979f to 3fb20d9 Compare April 22, 2026 22:18
d.kotov and others added 24 commits April 23, 2026 01:18
Signed-off-by: d.kotov <moveton40@gmail.com>
Signed-off-by: d.kotov <moveton40@gmail.com>
Signed-off-by: d.kotov <moveton40@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: d.kotov <moveton40@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: d.kotov <moveton40@gmail.com>
Signed-off-by: Steve Macenski <stevenmacenski@gmail.com>
Signed-off-by: d.kotov <moveton40@gmail.com>
Signed-off-by: d.kotov <moveton40@gmail.com>
Signed-off-by: d.kotov <moveton40@gmail.com>
Signed-off-by: d.kotov <moveton40@gmail.com>
Signed-off-by: d.kotov <moveton40@gmail.com>
Signed-off-by: d.kotov <moveton40@gmail.com>
Signed-off-by: d.kotov <moveton40@gmail.com>
Signed-off-by: d.kotov <moveton40@gmail.com>
@SteveMacenski
Copy link
Copy Markdown
Member

Let me know when I should check again. Please leave the graphics comment open as a reminder to myself

Signed-off-by: d.kotov <moveton40@gmail.com>
@NOTMOVETON
Copy link
Copy Markdown
Author

Let me know when I should check again. Please leave the graphics comment open as a reminder to myself

Please check again :)

@SteveMacenski
Copy link
Copy Markdown
Member

Asked for some outside feedback: https://www.linkedin.com/posts/steve-macenski-41a985101_nav2-share-7453121552893542401-L8Bf?utm_source=share&utm_medium=member_desktop&rcm=ACoAABnzaBYBjQwl9dCmBDFWicTZDTYTVfoqy2I

Otherwise other than the open item I just commented on about the on_XYZ() seems good to me :-)

Signed-off-by: d.kotov <moveton40@gmail.com>
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is a bit unclear to me what the "Goal msg" refers to from SetBlandeState and SetCameraYaw

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@SteveMacenski said that he will do it himself, so I guess the image will change as well as descriptions in the picture

Comment thread tutorials/docs/integrating_new_task_server_and_navigator_plugin.rst
@NOTMOVETON
Copy link
Copy Markdown
Author

@mini-1235 Is there anything else you think its better to change/add/remove? Maybe the structure or some section are unclear?

@SteveMacenski
Copy link
Copy Markdown
Member

Comments are getting lost in the sea of review remarks, I think this is the last thing I asked for that needs to be done:

You mean something like this?

BT::NodeStatus SetBladeState::on_success()
   {
     return result_.result->success ? BT::NodeStatus::SUCCESS : BT::NodeStatus::FAILURE;
   }

Yes :-) (both in the tutorial and in the source code)

Signed-off-by: d.kotov <moveton40@gmail.com>
@NOTMOVETON
Copy link
Copy Markdown
Author

@SteveMacenski
updated, both in guide and code

@SteveMacenski
Copy link
Copy Markdown
Member

I was hoping to get 1x more review from a new person before merging... someone that isn't a maintainer or understands Nav2 super well so that we can an outside perspective on what's missing or unclear

@NOTMOVETON
Copy link
Copy Markdown
Author

I asked in large robotics group if anyone can do a review, hopefully someone will pick it up soon

Copy link
Copy Markdown
Contributor

@EricoMeger EricoMeger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall I think this tutorial is good. I hadn't had the chance to implement my own BT node yet, and this gave me a good understanding of how to approach it.

One minor thing: it might be worth showing a CMakelists example for nav2_operations_bt_nodes, since that package involves plugin registration which can be a bit cumbersome. I don't really have a strong opinion on this, just a thought.

Comment thread tutorials/docs/integrating_new_task_server_and_navigator_plugin.rst Outdated
@NOTMOVETON
Copy link
Copy Markdown
Author

One minor thing: it might be worth showing a CMakelists example for nav2_operations_bt_nodes, since that package involves plugin registration which can be a bit cumbersome. I don't really have a strong opinion on this, just a thought.

It has been excluded on purpose, as said in guide more info could be found in related package.

See conversation here

Signed-off-by: d.kotov <moveton40@gmail.com>
Signed-off-by: d.kotov <moveton40@gmail.com>
Comment thread tutorials/docs/integrating_new_task_server_and_navigator_plugin.rst
@NOTMOVETON
Copy link
Copy Markdown
Author

@SteveMacenski Hi! Is there something else I can do?

@SteveMacenski
Copy link
Copy Markdown
Member

Sorry, I've been behind and a bit sick. This LGTM. Please open a nav2 tutorials PR with the code that matches the tutorial for users to follow through as a full example.

Then I can update the graphic and merge

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants