Skip to content

Commit 8945bbe

Browse files
authored
update docs for iterative graceful controller (#624)
* update docs for iterative graceful controller Signed-off-by: Michael Ferguson <mfergs7@gmail.com> * add add_orientations Signed-off-by: Michael Ferguson <mfergs7@gmail.com> * updates after review comments Signed-off-by: Michael Ferguson <mfergs7@gmail.com> * additional review udpates Signed-off-by: Michael Ferguson <mfergs7@gmail.com> * update notes on initial rotation tolerance Signed-off-by: Michael Ferguson <mfergs7@gmail.com> * trailing whitespace Signed-off-by: Michael Ferguson <mfergs7@gmail.com> * update defaults for control law Signed-off-by: Michael Ferguson <mfergs7@gmail.com> * add omni, legged Signed-off-by: Michael Ferguson <mfergs7@gmail.com> * update migration docs Signed-off-by: Michael Ferguson <mfergs7@gmail.com> * spelling/linter Signed-off-by: Michael Ferguson <mfergs7@gmail.com> --------- Signed-off-by: Michael Ferguson <mfergs7@gmail.com>
1 parent 5bda46a commit 8945bbe

3 files changed

Lines changed: 63 additions & 18 deletions

File tree

configuration/packages/configuring-graceful-motion-controller.rst

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,27 @@ Graceful Controller Parameters
2525
Description
2626
The TF transform tolerance (s).
2727

28-
:motion_target_dist:
28+
:max_lookahead:
2929

3030
============== =============================
3131
Type Default
3232
-------------- -----------------------------
33-
double 0.6
33+
double 1.0
3434
============== =============================
3535

3636
Description
37-
The lookahead distance (m) to use to find the motion_target point.
37+
The maximum lookahead distance (m) to use when selecting a target pose for the underlying control law. Using poses that are further away will generally result in smoother operations, but simulating poses that are very far away can result in reduced performance, especially in tight or cluttered environments. If the controller cannot forward simulate to a pose this far away without colliding, it will iteratively select a target pose that is closer to the robot.
38+
39+
:min_lookahead:
40+
41+
============== =============================
42+
Type Default
43+
-------------- -----------------------------
44+
double 0.25
45+
============== =============================
46+
47+
Description
48+
The minimum lookahead distance (m) to use when selecting a target pose for the underlying control law. This parameter avoids instability when an unexpected obstacle appears in the path of the robot by returning failure, which typically triggers replanning.
3849

3950
:max_robot_pose_search_dist:
4051

@@ -52,29 +63,29 @@ Graceful Controller Parameters
5263
============== =============================
5364
Type Default
5465
-------------- -----------------------------
55-
double 3.0
66+
double 2.0
5667
============== =============================
5768

5869
Description
59-
Ratio of the rate of change in phi to the rate of change in r. Controls the convergence of the slow subsystem. If this value is equal to zero, the controller will behave as a pure waypoint follower. A high value offers extreme scenario of pose-following where theta is reduced much faster than r.
70+
Ratio of the rate of change in phi to the rate of change in r. Controls the convergence of the slow subsystem. If this value is equal to zero, the controller will behave as a pure waypoint follower. A high value offers extreme scenario of pose-following where theta is reduced much faster than r. The referenced paper calls this `k1`.
6071

6172
:k_delta:
6273

6374
============== =============================
6475
Type Default
6576
-------------- -----------------------------
66-
double 2.0
77+
double 1.0
6778
============== =============================
6879

6980
Description
70-
Constant factor applied to the heading error feedback. Controls the convergence of the fast subsystem. The bigger the value, the robot converge faster to the reference heading.
81+
Constant factor applied to the heading error feedback. Controls the convergence of the fast subsystem. The bigger the value, the robot converge faster to the reference heading. The referenced paper calls this `k2`.
7182

7283
:beta:
7384

7485
============== =============================
7586
Type Default
7687
-------------- -----------------------------
77-
double 0.2
88+
double 0.4
7889
============== =============================
7990

8091
Description
@@ -124,6 +135,17 @@ Graceful Controller Parameters
124135
Description
125136
Maximum angular velocity (rad/s) produced by the control law.
126137

138+
:v_angular_min_in_place:
139+
140+
============== =============================
141+
Type Default
142+
-------------- -----------------------------
143+
double 0.25
144+
============== =============================
145+
146+
Description
147+
Minimum angular velocity (rad/s) produced by the control law when rotating in place. This value should be based on the minimum rotation speed controllable by the robot.
148+
127149
:slowdown_radius:
128150

129151
============== =============================
@@ -146,18 +168,18 @@ Graceful Controller Parameters
146168
Description
147169
Enable a rotation in place to the goal before starting the path. The control law may generate large sweeping arcs to the goal pose, depending on the initial robot orientation and ``k_phi``, ``k_delta``.
148170

149-
:initial_rotation_min_angle:
171+
:initial_rotation_tolerance:
150172

151173
============== =============================
152174
Type Default
153175
-------------- -----------------------------
154-
double 0.75
176+
double 0.75
155177
============== =============================
156178

157179
Description
158-
The difference in the path orientation and the starting robot orientation to trigger a rotate in place, if ``initial_rotation`` is enabled.
180+
The difference in the path orientation and the starting robot orientation to trigger a rotate in place, if ``initial_rotation`` is enabled. This value is generally acceptable if continuous replanning is enabled. If not using continuous replanning, a lower value may perform better.
159181

160-
:final_rotation:
182+
:prefer_final_rotation:
161183

162184
============== =============================
163185
Type Default
@@ -166,7 +188,7 @@ Graceful Controller Parameters
166188
============== =============================
167189

168190
Description
169-
Similar to ``initial_rotation``, the control law can generate large arcs when the goal orientation is not aligned with the path. If this is enabled, the final pose will be ignored and the robot will follow the orientation of he path and will make a final rotation in place to the goal orientation.
191+
The control law can generate large arcs when the goal orientation is not aligned with the path. If this is enabled, the orientation of the final pose will be ignored and the robot will follow the orientation of the path and will make a final rotation in place to the goal orientation.
170192

171193
:rotation_scaling_factor:
172194

@@ -190,6 +212,17 @@ Graceful Controller Parameters
190212
Description
191213
Whether to allow the robot to move backward.
192214

215+
:in_place_collision_tolerance:
216+
217+
============== =============================
218+
Type Default
219+
-------------- -----------------------------
220+
double 0.1
221+
============== =============================
222+
223+
Description
224+
When performing an in-place rotation after the XY goal tolerance has been met, this is the angle (in radians) between poses to check for collision.
225+
193226
Example
194227
*******
195228
.. code-block:: yaml
@@ -217,10 +250,11 @@ Example
217250
FollowPath:
218251
plugin: nav2_graceful_controller::GracefulController
219252
transform_tolerance: 0.1
220-
motion_target_dist: 0.6
253+
min_lookahead: 0.25
254+
max_lookahead: 1.0
221255
initial_rotation: true
222-
initial_rotation_min_angle: 0.75
223-
final_rotation: true
256+
initial_rotation_threshold: 0.75
257+
prefer_final_rotation: true
224258
allow_backward: false
225259
k_phi: 3.0
226260
k_delta: 2.0
@@ -229,4 +263,5 @@ Example
229263
v_linear_min: 0.1
230264
v_linear_max: 1.0
231265
v_angular_max: 5.0
266+
v_angular_min_in_place: 0.25
232267
slowdown_radius: 1.5

migration/Jazzy.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,3 +204,13 @@ New Plugin Container Layer
204204
**************************
205205

206206
In `PR #4781 <https://github.com/ros-navigation/navigation2/pull/4781>`_ a costmap layer plugin type was added to support the grouping of different costmap layers under a single costmap layer. This would allow for different isolated combinations of costmap layers to be combined under one parent costmap instead of the current implementation which would indiscriminately combine all costmap layers together.
207+
208+
Iterative Target Selection for the Graceful Controller
209+
******************************************************
210+
211+
In `PR #4795 <https://github.com/ros-navigation/navigation2/pull/4795>`_ the ``nav2_graceful_controller`` was updated to iteratively select motion targets. This is a large refactor which significantly improves the performance of the controller. The ``motion_target_dist`` parameter has been replaced by ``min_lookahead`` and ``max_lookahead`` parameters. Additional changes include:
212+
213+
* Improved defaults for ``k_phi``, ``k_delta``, ``beta`` parameters of the underlying control law.
214+
* Automatic creation of orientations for the plan if they are missing.
215+
* Addition of ``v_angular_min_in_place`` parameter to avoid the robot getting stuck while rotating due to mechanical limitations.
216+
* ``final_rotation`` has been renamed ``prefer_final_rotation`` and the behavior has changed slightly.

plugins/index.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,8 @@ Controllers
133133
| | | to path heading before passing | model rotate in place |
134134
| | | to main controller for tracking. | |
135135
+--------------------------------+-----------------------+------------------------------------+-----------------------+
136-
| `Graceful Controller`_ | Alberto Tudela | A controller based on a | Differential |
137-
| | | pose-following control law to | |
136+
| `Graceful Controller`_ | Alberto Tudela | A controller based on a | Differential, Omni, |
137+
| | | pose-following control law to | Legged |
138138
| | | generate smooth trajectories. | |
139139
+--------------------------------+-----------------------+------------------------------------+-----------------------+
140140
| `Vector Pursuit Controller`_ | Black Coffee Robotics | A controller based on the vector | Differential, |

0 commit comments

Comments
 (0)