Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Shim Controller: Added parameter rotate_to_heading_once to align a robot only at the very beginning #4721

Merged
merged 1 commit into from
Oct 16, 2024

Conversation

ikhann
Copy link
Contributor

@ikhann ikhann commented Oct 14, 2024


Basic Info

Info Please fill out this column
Ticket(s) this addresses (add tickets here #1)
Primary OS tested on (Ubuntu, MacOS, Windows)
Robotic platform tested on (Differential Robot, Gazebo)
Does this PR contain AI generated software? (No)

Description of contribution in a few bullet points

  • Added a new dynamic parameter called rotate_to_heading_once.
    If the parameter is set to True, then Shim aligns the robot's heading with the path only once at the very beginning.

  • Added a method bool RotationShimController::isGoalChanged(const nav_msgs::msg::Path & path)
    This function checks whether the goal in the provided path has changed compared to the current path stored in the controller.
    Returns true if the current path is empty (no poses stored) or if the goal pose (last pose in the path) differs from the goal pose of the provided path.

Description of documentation updates required from your changes

Example:

controller_server:
  ros__parameters:
    use_sim_time: True
    controller_frequency: 20.0
    min_x_velocity_threshold: 0.001
    min_y_velocity_threshold: 0.5
    min_theta_velocity_threshold: 0.001
    controller_plugins: ["FollowPath"]
    FollowPath:
      plugin: "nav2_rotation_shim_controller::RotationShimController"
      primary_controller: "dwb_core::DWBLocalPlanner"
      angular_dist_threshold: 0.785
      angular_disengage_threshold: 0.25
      rotate_to_heading_once: True
      forward_sampling_distance: 0.5
      rotate_to_heading_angular_vel: 1.8
      max_angular_accel: 3.2
      simulate_ahead_time: 1.0

Future work that may be required in bullet points

For Maintainers:

  • Check that any new parameters added are updated in docs.nav2.org
  • Check that any significant change is added to the migration guide
  • Check that any new features OR changes to existing behaviors are reflected in the tuning guide
  • Check that any new functions have Doxygen added
  • Check that any new features have test coverage
  • Check that any new plugins is added to the plugins page
  • If BT Node, Additionally: add to BT's XML index of nodes for groot, BT package's readme table, and BT library lists

@ikhann ikhann marked this pull request as draft October 14, 2024 11:29
@ikhann ikhann marked this pull request as ready for review October 14, 2024 11:32
Copy link
Member

@SteveMacenski SteveMacenski left a comment

Choose a reason for hiding this comment

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

LGTM, we just need the updates to the configuration guide for Rotation Shim Controller to describe the parameter in the docs, and the migration guide entry to introduce the added feature for folks upgrading from previous distributions.

@SteveMacenski
Copy link
Member

However, you need to fix the linting issues and DCO sign offs that are missing on this PR that CI has pointed out.

@ikhann
Copy link
Contributor Author

ikhann commented Oct 15, 2024

However, you need to fix the linting issues and DCO sign offs that are missing on this PR that CI has pointed out.

Thanks! I'll fix the linting issues and other stuff shortly.

@SteveMacenski
Copy link
Member

@ikhann still a few linting errors if you look at the ament_cpplint and ament_uncrustify jobs

@ikhann ikhann force-pushed the rotate_to_heading_once branch 2 times, most recently from d1ec130 to 631160a Compare October 16, 2024 16:58
@ikhann
Copy link
Contributor Author

ikhann commented Oct 16, 2024

@ikhann still a few linting errors if you look at the ament_cpplint and ament_uncrustify jobs

Everything should be good now.

Copy link

codecov bot commented Oct 16, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Files with missing lines Coverage Δ
..._shim_controller/nav2_rotation_shim_controller.hpp 100.00% <ø> (ø)
...m_controller/src/nav2_rotation_shim_controller.cpp 95.20% <100.00%> (-1.65%) ⬇️

... and 2 files with indirect coverage changes

@SteveMacenski SteveMacenski merged commit c7ef3be into ros-navigation:main Oct 16, 2024
11 checks passed
@SteveMacenski
Copy link
Member

Great thanks!

SteveMacenski pushed a commit that referenced this pull request Nov 8, 2024
SteveMacenski added a commit that referenced this pull request Nov 8, 2024
* Adding non-charging dock support to docking server (for conveyers, pallots, etc) (#4627)

* adding non-charging dock support to docking server

Signed-off-by: Steve Macenski <[email protected]>

* docs and linting

* adding unit tests

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: Steve Macenski <[email protected]>

* Publish optimal trajectory as a Path message (#4640)

* Publish optimal trajectory as a Path message

Signed-off-by: Alyssa Agnissan <[email protected]>

* move publish_optimal_path to TrajectoryVisualizer + minor refactoring

Signed-off-by: Alyssa Agnissan <[email protected]>

* tests added for optimal path publication

Signed-off-by: Alyssa Agnissan <[email protected]>

* populate optimal path message in add()

Signed-off-by: Alyssa Agnissan <[email protected]>

* move path population in add_marker

Signed-off-by: Alyssa Agnissan <[email protected]>

---------

Signed-off-by: Alyssa Agnissan <[email protected]>

* [collision monitor] Select the observation sources used with each polygon (#4227)

* Collision monitor: select specific observation sources for polygon

Signed-off-by: asarazin <[email protected]>

* optimization

Signed-off-by: asarazin <[email protected]>

* add tests

Signed-off-by: asarazin <[email protected]>

---------

Signed-off-by: asarazin <[email protected]>
Co-authored-by: asarazin <[email protected]>

* Restore exported BT test utils header files after cmake revamp (#4652) (#4654)

Signed-off-by: Mike Wake <[email protected]>

* fix(bt_nodes): Correct default `server_timeout` behavior by using `getInputPortOrBlackboard()` (#4649)

Signed-off-by: Alan Xue <[email protected]>

* PoseStamped vector specialization (#4607)

* PoseStamped vector specialization

Signed-off-by: Tony Najjar <[email protected]>

* merge master

Signed-off-by: Tony Najjar <[email protected]>

* add path

Signed-off-by: Tony Najjar <[email protected]>

* fix size check

Signed-off-by: Tony Najjar <[email protected]>

* fix test

Signed-off-by: Tony Najjar <[email protected]>

* Revert "fix test"

This reverts commit 51f54eb.

* fix test

Signed-off-by: Tony Najjar <[email protected]>

---------

Signed-off-by: Tony Najjar <[email protected]>

* [DWB] Option to limit velocity commands in trajectory generator (#4663)

* Option to limit vel cmd through traj generator

Signed-off-by: huiyulhy <[email protected]>

* Cleanup

Signed-off-by: huiyulhy <[email protected]>

* fix linting

Signed-off-by: huiyulhy <[email protected]>

* Update linting

Signed-off-by: huiyulhy <[email protected]>

* uncrustify

Signed-off-by: huiyulhy <[email protected]>

* uncrustify

Signed-off-by: huiyulhy <[email protected]>

---------

Signed-off-by: huiyulhy <[email protected]>

* Adding planner server timeout for costmap waiting (#4673)

* Adding planner server timeout for costmap waiting

Signed-off-by: Steve Macenski <[email protected]>

* Adding controller server's costmap timeout as well

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: Steve Macenski <[email protected]>

* fixing path longer on approach (#4622)

* fixing path longer on approach

Signed-off-by: Pradheep <[email protected]>

* removing the short circuit

Signed-off-by: Pradheep <[email protected]>

* adding additional layer of check

Signed-off-by: Pradheep <[email protected]>

---------

Signed-off-by: Pradheep <[email protected]>

* fix to bt action server logging before bt execution result being ready (#4677)

Signed-off-by: DreamWest <[email protected]>

* Correct paper name for graceful controller

Signed-off-by: Steve Macenski <[email protected]>

* Added missing action clients in robot_navigator(BasicNavigator) to destroy_node (#4698)

* fix: added assisted_teleop_client to robot_navigator(BasicNavigator) destroy_node

Signed-off-by: Tiwa Ojo <[email protected]>

* fix: added other missing action clients to robot_navigator(BasicNavigator) destroy_node

Signed-off-by: Tiwa Ojo <[email protected]>

---------

Signed-off-by: Tiwa Ojo <[email protected]>

* Fixing SGF in MPPI and Smoother (#4669)

Signed-off-by: Steve Macenski <[email protected]>

* fix: handle transition failures in all servers (#4708)

* fix: handle transition failures in planner/controller/smoother servers

Signed-off-by: Kemal Bektas <[email protected]>

* adding support for rest of servers + review comments

Signed-off-by: Steve Macenski <[email protected]>

* Replacing throws with error and failed lifecycle transitions

Signed-off-by: Steve Macenski <[email protected]>

* fix vel smoother unit tests

Signed-off-by: Steve Macenski <[email protected]>

* fixing docking server unit testing

Signed-off-by: Steve Macenski <[email protected]>

* fixing last bits

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: Kemal Bektas <[email protected]>
Signed-off-by: Steve Macenski <[email protected]>
Co-authored-by: Kemal Bektas <[email protected]>

* [RotationShimController] fix: rotate on short paths (#4716)

Add header data to goal for short paths.

Commit d8ae3c1 added the possibility to
the rotation shim controller to rotate towards the goal when the goal
was closer that the `forward_sampling_distance`. This feature was not
fully working as the goal was missing proper header data, causing the
rotation shim to give back control to the main controller.

Co-authored-by: agennart <[email protected]>

* Added parameter `rotate_to_heading_once` (#4721)

Signed-off-by: Daniil Khaninaev <[email protected]>

* [RotationShimController] fix: rotate to goal heading (#4724)

Add frame_id to goal when rotating towards goal heading, otherwise the
transform would fail. This bug was introduced in 30e2cde by not setting
the frame_id.

Signed-off-by: agennart <[email protected]>
Co-authored-by: agennart <[email protected]>

* [loopback_sim] Publish clock, [nav2_costmap_2d] Fix Qos (#4726)

* Publish /clock from loopback sim

Signed-off-by: Adi Vardi <[email protected]>

* [nav2_costmap_2d] Fix obstacle_layer trying to use RELIABLE QoS

Use QoS profile from rclcpp::SensorDataQoS() instead of rmw_qos_profile_t.
This solves an issue where the subscriber uses RELIABLE setting even when initialized from rmw_qos_profile_sensor_data.
In addition the Subscriber(..., rmw_qos_profile_t) constructor is deprecated in favor of Subscriber(..., rclcpp::QoS)

Signed-off-by: Adi Vardi <[email protected]>

* [nav2_smac_planner] fix typos

Signed-off-by: Adi Vardi <[email protected]>

* Use single quotes

Signed-off-by: Adi Vardi <[email protected]>

---------

Signed-off-by: Adi Vardi <[email protected]>

* Fix incorrect doxygen comment (#4741)

Signed-off-by: Ryan Friedman <[email protected]>

* Updating error logging in Smac collision detector object (#4743)

* Updating error logging in Smac configs

Signed-off-by: Steve Macenski <[email protected]>

* linting

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: Steve Macenski <[email protected]>

* [map_io] Replace std logs by rclcpp logs (#4720)

* replace std logs by rclcpp logs

Signed-off-by: Guillaume Doisy <[email protected]>

* RCLCPP_DEBUG to RCLCPP_INFO for visibility

Signed-off-by: Guillaume Doisy <[email protected]>

---------

Signed-off-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>

* manual backport to Jazzy of 6b2e244

Signed-off-by: Steve Macenski <[email protected]>

* bump to 1.3.3 for jazzy sync

Signed-off-by: Steve Macenski <[email protected]>

* fixing backport issue

Signed-off-by: Steve Macenski <[email protected]>

* fixing backport of docking linking changes

Signed-off-by: Steve Macenski <[email protected]>

---------

Signed-off-by: Steve Macenski <[email protected]>
Signed-off-by: Alyssa Agnissan <[email protected]>
Signed-off-by: asarazin <[email protected]>
Signed-off-by: Mike Wake <[email protected]>
Signed-off-by: Alan Xue <[email protected]>
Signed-off-by: Tony Najjar <[email protected]>
Signed-off-by: huiyulhy <[email protected]>
Signed-off-by: Pradheep <[email protected]>
Signed-off-by: DreamWest <[email protected]>
Signed-off-by: Tiwa Ojo <[email protected]>
Signed-off-by: Kemal Bektas <[email protected]>
Signed-off-by: Daniil Khaninaev <[email protected]>
Signed-off-by: agennart <[email protected]>
Signed-off-by: Adi Vardi <[email protected]>
Signed-off-by: Ryan Friedman <[email protected]>
Signed-off-by: Guillaume Doisy <[email protected]>
Co-authored-by: alyquantillion <[email protected]>
Co-authored-by: anaelle-sw <[email protected]>
Co-authored-by: asarazin <[email protected]>
Co-authored-by: aosmw <[email protected]>
Co-authored-by: Alan <[email protected]>
Co-authored-by: Tony Najjar <[email protected]>
Co-authored-by: Huiyu Leong <[email protected]>
Co-authored-by: Pradheep Krishna <[email protected]>
Co-authored-by: DreamWest <[email protected]>
Co-authored-by: Tiwa Ojo <[email protected]>
Co-authored-by: Kemal Bektas <[email protected]>
Co-authored-by: Saitama <[email protected]>
Co-authored-by: agennart <[email protected]>
Co-authored-by: Daniil Khaninaev <[email protected]>
Co-authored-by: Adi Vardi <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>
Co-authored-by: Guillaume Doisy <[email protected]>
stevedanomodolor pushed a commit to stevedanomodolor/navigation2 that referenced this pull request Nov 18, 2024
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.

2 participants