Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 74 additions & 3 deletions configuration/packages/configuring-docking-server.rst
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,18 @@ Parameters
============== ==============

Description
Angular Tolerance (rad) to exist undocking loop at staging pose.
Angular tolerance (rad) to exit undocking loop at staging pose.

:rotation_angular_tolerance:

============== ==============
Type Default
-------------- --------------
double 0.05
============== ==============

Description
Angular tolerance (rad) to exit the rotation loop when rotate_to_dock is enabled.

:max_retries:

Expand Down Expand Up @@ -117,6 +128,17 @@ Parameters
Description
Fixed frame to use, recommended to be a smooth odometry frame **not** map.

:odom_topic:

============== ==============
Type Default
-------------- --------------
string "odom"
============== ==============

Description
The topic to use for the odometry data when rotate_to_dock is enabled.

:dock_backwards:

============== ==============
Expand Down Expand Up @@ -283,6 +305,28 @@ Parameters
Description
Radius to end goal to commense slow down.

:controller.rotate_to_heading_angular_vel:

============== ==============
Type Default
-------------- --------------
double 1.0
============== ==============

Description
Angular velocity (rad/s) to rotate to the goal heading when rotate_to_dock is enabled.

:controller.rotate_to_heading_max_angular_accel:

============== ==============
Type Default
-------------- --------------
double 3.2
============== ==============

Description
Maximum angular acceleration (rad/s^2) to rotate to the goal heading when rotate_to_dock is enabled.

:controller.use_collision_detection:

============== ==============
Expand Down Expand Up @@ -389,7 +433,7 @@ Simple Charging Dock is a provided charging dock plugin that can handle many doc
============== ==============

Description
Staging pose angle relative to dock pose (rad).
Staging pose angle relative to dock pose (rad). If ``dock_direction`` is set to "backward", this angle must be faced in the opposite direction of the dock pose. However, if ``rotate_to_dock`` is enabled, this angle must be facing the same direction as the dock pose because the robot will rotate to the dock pose after detection.

:<dock_name>.use_battery_status:

Expand Down Expand Up @@ -557,7 +601,7 @@ Simple Charging Dock is a provided charging dock plugin that can handle many doc
Description
If not using stall detection, the pose threshold to the docking pose where ``isDocked() = true``.

:<dock_name>:dock_direction:
:<dock_name>.dock_direction:

============== ==============
Type Default
Expand All @@ -568,6 +612,19 @@ Simple Charging Dock is a provided charging dock plugin that can handle many doc
Description
Whether the robot is docking with the dock forward or backward in motion. This is the replacement for the deprecated ``dock_backwards`` parameter. Options are "forward" or "backward".

:<dock_name>.rotate_to_dock:

============== ==============
Type Default
-------------- --------------
bool false
============== ==============

Description
Enables backward docking without requiring a sensor for detection during the final approach. When enabled, the robot approaches the staging pose facing forward with sensor coverage for dock detection; after detection, it rotates and backs into the dock using only the initially detected pose for dead reckoning. In the undocking phase, the robot will move forward to the staging pose and then rotate to the original heading. This may also be paired with sensor detection in the reverse direction as well if available.

Note: This parameter is only valid when the ``dock_direction`` is set to "backward".

Example
*******
.. code-block:: yaml
Expand All @@ -583,6 +640,8 @@ Example
max_retries: 3
base_frame: "base_link"
fixed_frame: "odom"
odom_topic: "odom"
dock_backwards: false # Deprecated, use dock_direction in plugin
dock_prestaging_tolerance: 0.5
service_introspection_mode: "disabled"

Expand All @@ -595,6 +654,7 @@ Example
use_external_detection_pose: true
use_battery_status: false # true
use_stall_detection: false
rotate_to_dock: false

external_detection_timeout: 1.0
external_detection_translation_x: -0.18
Expand All @@ -618,3 +678,14 @@ Example
k_delta: 2.0
v_linear_min: 0.15
v_linear_max: 0.15
v_angular_max: 0.75
slowdown_radius: 0.25
rotate_to_heading_angular_vel: 1.0
rotate_to_heading_max_angular_accel: 3.2
use_collision_detection: true
costmap_topic: "local_costmap/costmap_raw"
footprint_topic: "local_costmap/published_footprint"
transform_tolerance: 0.1
projection_time: 1.0
simulation_time_step: 0.1
dock_collision_threshold: 0.3
17 changes: 17 additions & 0 deletions migration/Jazzy.rst
Original file line number Diff line number Diff line change
Expand Up @@ -477,3 +477,20 @@ New Position Goal Checker
*************************

In `PR #5162 <https://github.com/ros-navigation/navigation2/pull/5162>`_, a new goal checker plugin called ``PositionGoalChecker`` has been added to Nav2. This plugin provides an alternative to the existing goal checkers by focusing only on the position component of the robot pose, ignoring orientation. This is used by the RPP controller to create stateful behavior to rotate to heading once meeting the goal tolerance.

Docking backwards without sensor
********************************

In `PR #5153 <https://github.com/ros-navigation/navigation2/pull/5153>`_, the docking server was updated to allow docking backwards without a sensor for detection. It should be setup to approach the staging pose for the dock in the forward direction with sensor coverage for dock detection, then after detection it will rotate to back up into the dock using the initial detected pose only for deadreckoning.

A new parameter ``reverse_to_dock`` was added to the ``SimpleChargingDock`` and ``SimpleNonChargingDock`` plugins to allow this feature.

Default value:

- false

See :ref:`configuring_docking_server` for more information.

Here we can see the working demo of the feature:

.. image:: images/reverse_to_dock.gif
Comment thread
SteveMacenski marked this conversation as resolved.
Binary file added migration/images/reverse_to_dock.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions tutorials/docs/using_docking.rst
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ The plugins has a few key APIs:
- ``bool isCharging()`` which provides if we've started charging while docked (charging docks only)
- ``bool disableCharging()`` which should disable charging, if under the robot's control for undocking (charging docks only)
- ``bool hasStoppedCharging()`` which indicates if we've successfully stopped charging on undocking (charging docks only)
- ``bool isCharger()`` which indicates if this is a charging-typed dock
- ``DockDirection getDockDirection()`` which indicates the direction of the dock (if the robot should drive forwards, backwards, etc onto the dock)
- ``bool shouldRotateToDock()`` which indicates if the robot should rotate to dock (for example, to perform a backward docking without detections)

The ``SimpleChargingDock`` provides an implementation with common options for these APIs:

Expand Down