Skip to content

Commit 0070945

Browse files
Add namespace for rotation shim primary controller (#800)
* Add namespace for rotation shim controller Signed-off-by: Maurice <mauricepurnawan@gmail.com> * Fix Signed-off-by: Maurice <mauricepurnawan@gmail.com> * Fix description Signed-off-by: Maurice <mauricepurnawan@gmail.com> * Update configuration/packages/configuring-rotation-shim-controller.rst Co-authored-by: Steve Macenski <stevenmacenski@gmail.com> Signed-off-by: mini-1235 <mauricepurnawan@gmail.com> * Add lightening to codespell for passing precommit Signed-off-by: Maurice <mauricepurnawan@gmail.com> * Update migration/Kilted.rst Signed-off-by: Steve Macenski <stevenmacenski@gmail.com> --------- Signed-off-by: Maurice <mauricepurnawan@gmail.com> Signed-off-by: mini-1235 <mauricepurnawan@gmail.com> Signed-off-by: Steve Macenski <stevenmacenski@gmail.com> Co-authored-by: Steve Macenski <stevenmacenski@gmail.com>
1 parent a492663 commit 0070945

6 files changed

Lines changed: 43 additions & 16 deletions

File tree

.codespell_words

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ Segway
33
implementors
44
retuned
55
segway
6+
lightening

configuration/packages/configuring-rotation-shim-controller.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,6 @@ Example
176176
stateful: True
177177
FollowPath:
178178
plugin: "nav2_rotation_shim_controller::RotationShimController"
179-
primary_controller: "nav2_regulated_pure_pursuit_controller::RegulatedPurePursuitController"
180179
angular_dist_threshold: 0.785
181180
forward_sampling_distance: 0.5
182181
angular_disengage_threshold: 0.3925
@@ -186,4 +185,6 @@ Example
186185
rotate_to_goal_heading: false
187186
188187
# Primary controller params can be placed here below
189-
# ...
188+
primary_controller:
189+
plugin: "nav2_regulated_pure_pursuit_controller::RegulatedPurePursuitController"
190+
# ...

migration/Kilted.rst

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,3 +443,28 @@ Useful when using low accelerations or when wheel odometry's latency (motor resp
443443
Default value:
444444

445445
- open_loop: false
446+
447+
Namespace added for primary controller parameters in Rotation Shim Controller
448+
-----------------------------------------------------------------------------
449+
450+
In `PR #5654 <https://github.com/ros-navigation/navigation2/pull/5654>`_, a namespace was introduced for the primary controller parameters within the Rotation Shim Controller.
451+
This change ensures proper handling of dynamic parameter updates by grouping the primary controller’s parameters under its own namespace.
452+
453+
Before
454+
455+
.. code-block:: yaml
456+
457+
plugin: "nav2_rotation_shim_controller::RotationShimController"
458+
primary_controller: "nav2_regulated_pure_pursuit_controller::RegulatedPurePursuitController"
459+
desired_linear_vel: 1.0
460+
lookahead_dist: 0.6
461+
462+
After
463+
464+
.. code-block:: yaml
465+
466+
plugin: "nav2_rotation_shim_controller::RotationShimController"
467+
primary_controller:
468+
plugin: "nav2_regulated_pure_pursuit_controller::RegulatedPurePursuitController"
469+
desired_linear_vel: 1.0
470+
lookahead_dist: 0.6

tutorials/docs/images/3laws_supervisor/graphics/3LawsStack.svg

Lines changed: 1 addition & 1 deletion
Loading

tutorials/docs/images/3laws_supervisor/graphics/kinematics_perception.svg

Lines changed: 1 addition & 1 deletion
Loading

tutorials/docs/using_3laws_supervisor.rst

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,21 +48,21 @@ Adding safety capabilities to the robot eliminates the burden of taking static s
4848

4949
Applications that do not require safety-rating or are not able to leverage expensive safety-rated lidars can typically use the Nav2 Collision Monitor or similar to stop or slow down the robot when an obstacle is detected.
5050
This is a software-based solution that monitors the robot's sensors (lidar, depth camera, sonar, etc) to detect obstacles and trigger a stop or slow down.
51-
This is broadly analog to traditional safety-rated systems, but it does not provide the same level of safety assurance.
51+
This is broadly analog to traditional safety-rated systems, but it does not provide the same level of safety assurance.
5252
However, it has the same limitations due to the slow-and-stop nature of the solution.
5353

5454
.. image:: images/3laws_supervisor/graphics/solution_infographic.png
5555
:alt: Supervisor Solution Infographic
5656
:align: center
5757

5858
The Supervisor ROS uses a dynamic approach to collision avoidance to enhance safety while addressing the efficiency challenges and lightening the system tuning load.
59-
Rather than solely stopping or slowing down when an obstacle is detected in proximity to the robot, the Supervisor takes over and adjusts the robot's trajectory in real-time to avoid collisions while still making progress towards its goal - also considering lower-level safety constraints described above if present (Pro version).
59+
Rather than solely stopping or slowing down when an obstacle is detected in proximity to the robot, the Supervisor takes over and adjusts the robot's trajectory in real-time to avoid collisions while still making progress towards its goal - also considering lower-level safety constraints described above if present (Pro version).
6060
This allows the robot to dynamically react to the environment while not prematurely stopping or slowing when maneuvers are available which can prevent triggering safety system reactions - increasing throughput.
6161
It will however still stop the robot is required as any other safety system might.
6262
For best use, a system should still contain a global replanning mechanism and/or a trajectory planner that considers collision.
6363
The Supervisor should complement these systems rather than completely replacing them for maximum effectiveness, *especially* on robots moving fast, with heavy loads, or slow dynamics.
6464
This can allow users to reduce the amount of tuning of Nav2's highly configurable but complex controller parameters, moving faster to market.
65-
It is also very good for teleoperation tasks either joysticking locally or via remote monitoring systems to avoid collisions due to remote operation delays!
65+
It is also very good for teleoperation tasks either joysticking locally or via remote monitoring systems to avoid collisions due to remote operation delays!
6666

6767
.. image:: images/3laws_supervisor/graphics/Nav2Diagram_3laws.png
6868
:alt: Nav2 and 3Laws Supervisor Integration Diagram
@@ -178,7 +178,7 @@ Supervisor Configuration: General
178178

179179
Now that we have the parameters extracted from the Nav2 configuration, we can complete the Supervisor configuration.
180180

181-
On the landing page shown above:
181+
On the landing page shown above:
182182

183183
* Input your license key in the "License Key" field. When one is inputted, it should automatically validate and show the license status in the GUI
184184
* Name the robot this configuration belongs to, whether a specific robot or a model of robot depending on the granularity of your configuration settings
@@ -194,7 +194,7 @@ There are additional advanced settings that may be configured, including:
194194

195195
.. note::
196196

197-
For safest operations, re-timestamping messages should be disabled and all messages in a system should be validated to be properly timestamped. For getting started, restamping all incoming messages would be OK if you are not confident in your system's timestamping or wish to use simulation time.
197+
For safest operations, re-timestamping messages should be disabled and all messages in a system should be validated to be properly timestamped. For getting started, restamping all incoming messages would be OK if you are not confident in your system's timestamping or wish to use simulation time.
198198

199199
Once you are done making changes on this page, click the "Save" button at the bottom of the page to save your configuration and hit "Next" to proceed to the next page.
200200

@@ -292,7 +292,7 @@ Set the sensor's QoS to be Sensor Data if not already default.
292292
:align: center
293293

294294
Add in the additional information about your sensors (number of rays, angles, range, update rate, etc) which should be obtained from your sensor's documentation.
295-
If using a consumer-grade lidar, consider hitting the *Edit Perception parameters (advanced)* button toggle on ``Accept laserscan with wrong size``.
295+
If using a consumer-grade lidar, consider hitting the *Edit Perception parameters (advanced)* button toggle on ``Accept laserscan with wrong size``.
296296
These sensors can frequently provide a different number of rays each iteration than it should based on low-cost hardware limitations.
297297
Thus, we want to bypass usual checks for safety-rated sensors to allow it to be used for the Supervisor.
298298
Similarly, set the Advanced *Min distance mode* to ``SET_AT_INFINITY`` so that readings with no range are set to infinity rather than minimal values.
@@ -301,7 +301,7 @@ Select the frame of reference setup in the General page for each Perception sour
301301
If you did not set this up previously, go back now and do so. It will now be available in the dropdown menu.
302302

303303
If providing a set of pre-localized obstacles for collision advoidance, toggle on the Obstacles Map and provide the topic name for the map.
304-
This currently supports obstacles provided in the form of:
304+
This currently supports obstacles provided in the form of:
305305

306306
* ``lll_msgs/ObstacleArray``
307307

@@ -347,7 +347,7 @@ The filter rate is the update rate of the Supervisor's collision avoidance calcu
347347

348348
For now, you may leave the configuration of Aggressiveness, Conservativeness, Pointiness, and Evasion Aggressiveness at their default values.
349349
These parameters control how aggressively the Supervisor will adjust the robot's trajectory to avoid collisions.
350-
These can be fine-tuned later based on the robot's emperical behavior and your application needs.
350+
These can be fine-tuned later based on the robot's empirical behavior and your application needs.
351351

352352
The fault management section is not required for the Supervisor to function, but it can be useful for monitoring the robot's health and performance.
353353
Set the ``Can resume on failure`` toggle to on so that we can resume from timeout failures from sensors and command velocity inputs if they occur.
@@ -430,13 +430,13 @@ In your Nav2 parameters file, change the ``cmd_vel_in_topic`` in the Collision M
430430
cmd_vel_out_topic: "cmd_vel"
431431
432432
If you do not wish to use the Collision Monitor, then you can skip this step and have ``/cmd_vel_smoothed`` sent to the Supervisor which can directly output ``/cmd_vel``.
433-
If using the Approach Footprint Collision Monitor configuration or only using stop zones, this is likely redundant to the Supervisor.
433+
If using the Approach Footprint Collision Monitor configuration or only using stop zones, this is likely redundant to the Supervisor.
434434

435435
Controller Configuration
436436
^^^^^^^^^^^^^^^^^^^^^^^^
437437

438438
Nav2 may need some custom configuration to best leverage the Supervisor in its autonomy workflow.
439-
The changes to the controllers depend on which category of control algorithm it uses:
439+
The changes to the controllers depend on which category of control algorithm it uses:
440440

441441
1. Advanced, predictive or reactive
442442
2. Geometric or algebraic
@@ -445,7 +445,7 @@ For advanced, predictive, or reactive controllers which consider collision and a
445445
Since these controllers will automatically deviate from the path when it is blocked and find ways around obstacles, this can remain.
446446
The Supervisor may in some situations manipulate this command to provide additional safety margin from obstacles, it works more as a paired companion.
447447
While replanning is not required since these algorithms can deviate from the route to get around obstacles, it may be beneficial to utilize it to navigate in environments with particularly large obstacles.
448-
These controllers may be retuned to be more aggressive *or* do not require as close of tuning for collision avoidance when using the Supervisor.
448+
These controllers may be retuned to be more aggressive *or* do not require as close of tuning for collision avoidance when using the Supervisor.
449449

450450
For Geometric algorithms like Regulated Pure Pursuit and Graceful controllers, the collision detection and avoidance pipeline must be *disabled* such that the controller doesn't give up and stop navigation when obstacles are detected in the way.
451451
Instead, the responsibilities will be shifted to the Supervisor to detect obstacles and either deviate or stop the robot when necessary.
@@ -519,7 +519,7 @@ While MPPI was able to overcome this obstacle itself, the increased throughput o
519519

520520
Note that a similar thing could be created via an intermediate configuration of a behavior tree designed to leverage precise path tracking algorithms like Regulated Pure Pursuit when no obstacles are on the path and switch to dynamic replanning and/or an advanced controller when obstacles are present to navigate around them.
521521
However, that requires more effort to setup and manage and only provides benefit if strict management over the robot behavior is required.
522-
If using replanning and MPPI (and an intermediate to advanced application-specific behavior tree), the improvements using Supervisor in such a situation are relatively nominal, but can (a) increase throughput marginally, (b) provide an additional heirarchical layer of collision avoidance as part of a larger safety story, and (c) reduce some of the most tedious fine tuning of predictive controller behavior in close proximity to obstacles.
522+
If using replanning and MPPI (and an intermediate to advanced application-specific behavior tree), the improvements using Supervisor in such a situation are relatively nominal, but can (a) increase throughput marginally, (b) provide an additional hierarchical layer of collision avoidance as part of a larger safety story, and (c) reduce some of the most tedious fine tuning of predictive controller behavior in close proximity to obstacles.
523523

524524
5. Hardware Demonstrations
525525
--------------------------

0 commit comments

Comments
 (0)