@@ -119,7 +119,7 @@ The installed folder will have the following structure.
119119 The launch file we executed in this example is shown below. A launch file that is general will tend to have a proportional
120120level of complexity. We are not currently interested in dissecting all elements of this file. Rather, our interest is to
121121take a look at the relevant files used and what they mean. By understanding these, we would be a step closer to be able to
122- modify this example for our own purposes.
122+ modify the example or interact with it for your own purposes.
123123
124124.. dropdown :: Contents of :file:`tb3_simulation_launch.py`
125125
@@ -136,12 +136,6 @@ The highlighted lines point out to these important files.
136136- :file: `urdf/gz_waffle.sdf.xacro `
137137- :file: `urdf/turtlebot3_waffle.urdf `
138138
139- .. rli :: https://raw.githubusercontent.com/ros-navigation/navigation2/refs/heads/jazzy/nav2_bringup/maps/tb3_sandbox.yaml
140- :language: yaml
141- :linenos:
142-
143-
144-
145139.. rli :: https://raw.githubusercontent.com/ros-navigation/navigation2/refs/heads/jazzy/nav2_bringup/worlds/tb3_sandbox.sdf.xacro
146140 :language: xml
147141 :linenos:
@@ -154,8 +148,8 @@ The highlighted lines point out to these important files.
154148 :language: xml
155149 :linenos:
156150
157- Navigation
158- ----------
151+ Navigation :file: ` nav2_params.yaml `
152+ -----------------------------------
159153
160154.. seealso ::
161155
@@ -173,8 +167,8 @@ Once more, there is a trade-off between generality and the complexity of the con
173167elements of the configuration in the table below.
174168
175169In ``nav2 ``, each functionality is divided into a so-called *server *. Each server will have its own set of parameters and
176- will communicate with other servers. In this topology, ideally one functionality can be modified withouts affecting
177- other servers.
170+ will communicate with other servers. In this topology, ideally one functionality can be modified without affecting
171+ other servers. These are not all servers available in `` nav2 ``, but all the servers used in this example.
178172
179173===================== ================================= =============================================================================
180174Server TL;DR Link
@@ -192,16 +186,43 @@ Server TL;DR Link
192186``collision_monitor `` Extra layer of safety `docs <https://docs.nav2.org/configuration/packages/configuring-collision-monitor.html >`_
193187===================== ================================= =============================================================================
194188
195- Each server will be attached to one or more ``nav2 `` *plugins *. The plugins will define the
189+ Each server can be attached to one or more ``nav2 `` *plugins *. The plugins will define important aspects of the
190+ server and plugins will have their own parameters.
196191
197192.. seealso ::
198193 Official documentation: https://docs.nav2.org/plugins/index.html
199194
200- Our navigator uses Adaptive Monte-Carlo Localiser (`AMCL <https://docs.nav2.org/configuration/packages/configuring-amcl.html >`_).
201- Planner ``nav2_navfn_planner::NavfnPlanner `` https://docs.nav2.org/configuration/packages/configuring-navfn.html
202- Controller Model Predictive Path Integral Controller ``nav2_mppi_controller::MPPIController `` https://docs.nav2.org/configuration/packages/configuring-mppic.html
195+ In ``nav2 ``, mainly, there will be a *global * planner (in this case ``nav2_navfn_planner::NavfnPlanner ``) and a *local *
196+ controller (in this case ``nav2_mppi_controller::MPPIController ``). In general terms, the global planner can find solutions
197+ when the goal is far and create a trajectory. The controller will be responsible for dealing with following the trajectory
198+ in the short term. This split is common in robotics.
199+
200+ map :file: `nav2_params.yaml `
201+ -----------------------------------
203202
203+ .. rli :: https://raw.githubusercontent.com/ros-navigation/navigation2/refs/heads/jazzy/nav2_bringup/maps/tb3_sandbox.yaml
204+ :language: yaml
205+ :linenos:
204206
207+ A costmap in ``nav2 `` is a 2D grid in which each cell is assigned a value, similarly to an image. Using the image analogy,
208+ each *costmap * (image) will be made of *costs * (pixels). The value in each pixel will define how *costly * it is to move
209+ through that pixel.
210+
211+ Suppose that we have the small costmap below, for illustrative purposes. Suppose that we use ``F `` for free space, U
212+ for unknown, and O for occupied. We can see this as a top-view image of the path that the robot can traverse. The planner
213+ and controller will use this information.
214+
215+ +--+------+------+--+--+
216+ | O |O |O |O |U |
217+ +--+------+------+--+--+
218+ | O |``F`` |``F`` |O |U |
219+ +--+------+------+--+--+
220+ | O |O |``F`` |O |U |
221+ +--+------+------+--+--+
222+ | O |``F`` |``F`` |O |U |
223+ +--+------+------+--+--+
224+ | O |O |O |O |U |
225+ +--+------+------+--+--+
205226
206227Navigation with SLAM
207228++++++++++++++++++++
0 commit comments