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

Add acceleration limits to DriveOnHeading and BackUp behaviors #4810

Open
wants to merge 10 commits into
base: main
Choose a base branch
from

Conversation

RBT22
Copy link
Contributor

@RBT22 RBT22 commented Dec 20, 2024


Basic Info

Info Please fill out this column
Ticket(s) this addresses NA
Primary OS tested on Ubuntu
Robotic platform tested on own robot hardware
Does this PR contain AI generated software? No

Description of contribution in a few bullet points

Added two params: acceleration_limit and deceleration_limit for DriveOnHeading and BackUp behaviors.

Description of documentation updates required from your changes

Added new parameter, so need to add that to default configs and documentation page


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

Copy link
Contributor

mergify bot commented Dec 20, 2024

@RBT22, your PR has failed to build. Please check CI outputs and resolve issues.
You may need to rebase or pull in main due to API changes (or your contribution genuinely fails).

1 similar comment
Copy link
Contributor

mergify bot commented Dec 20, 2024

@RBT22, your PR has failed to build. Please check CI outputs and resolve issues.
You may need to rebase or pull in main due to API changes (or your contribution genuinely fails).

@RBT22 RBT22 force-pushed the rolling/acc-drive-on-heading branch from a6633a8 to 228de3b Compare December 20, 2024 11:29
Copy link
Contributor

mergify bot commented Dec 20, 2024

@RBT22, your PR has failed to build. Please check CI outputs and resolve issues.
You may need to rebase or pull in main due to API changes (or your contribution genuinely fails).

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.

Build is failing - not 100% sure why off hand other than it relates to a method added

Copy link
Contributor

mergify bot commented Jan 2, 2025

@RBT22, your PR has failed to build. Please check CI outputs and resolve issues.
You may need to rebase or pull in main due to API changes (or your contribution genuinely fails).

@RBT22 RBT22 force-pushed the rolling/acc-drive-on-heading branch from f8f5bd8 to 36daf76 Compare January 2, 2025 14:49
Copy link
Contributor

mergify bot commented Jan 2, 2025

@RBT22, your PR has failed to build. Please check CI outputs and resolve issues.
You may need to rebase or pull in main due to API changes (or your contribution genuinely fails).

@RBT22 RBT22 force-pushed the rolling/acc-drive-on-heading branch from 36daf76 to 83b4ff4 Compare January 2, 2025 14:54
Copy link
Contributor

mergify bot commented Jan 2, 2025

@RBT22, your PR has failed to build. Please check CI outputs and resolve issues.
You may need to rebase or pull in main due to API changes (or your contribution genuinely fails).

1 similar comment
Copy link
Contributor

mergify bot commented Jan 2, 2025

@RBT22, your PR has failed to build. Please check CI outputs and resolve issues.
You may need to rebase or pull in main due to API changes (or your contribution genuinely fails).

@RBT22 RBT22 force-pushed the rolling/acc-drive-on-heading branch from 79dbabc to 836fb46 Compare January 2, 2025 15:21
Copy link
Contributor

mergify bot commented Jan 2, 2025

@RBT22, your PR has failed to build. Please check CI outputs and resolve issues.
You may need to rebase or pull in main due to API changes (or your contribution genuinely fails).

@RBT22 RBT22 force-pushed the rolling/acc-drive-on-heading branch 3 times, most recently from a56b9c8 to 544887c Compare January 2, 2025 15:48
Copy link

codecov bot commented Jan 2, 2025

Codecov Report

Attention: Patch coverage is 52.00000% with 12 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
...nclude/nav2_behaviors/plugins/drive_on_heading.hpp 52.00% 12 Missing ⚠️
Files with missing lines Coverage Δ
...nclude/nav2_behaviors/plugins/drive_on_heading.hpp 82.65% <52.00%> (-10.60%) ⬇️

@SteveMacenski
Copy link
Member

SteveMacenski commented Jan 7, 2025

Sorry for the delayed review - see comment above. It also looks like this block doesn't have any test coverage. I think you should make a new backup or drive on heading unit or system test which specifies acceleration limits to exercise.

This is not ABI/API breaking, so once approved, you could open a PR to backport to Jazzy/Humble if you wanted either (Jazzy I may be able to do automatically, Humble I definitely can't / wouldn't unless someone else opened it)

if (command_speed_ > 0.0) {
double max_vel_to_stop = std::sqrt(2.0 * deceleration_limit_ * remaining_distance);
if (max_vel_to_stop < cmd_vel->twist.linear.x) {
cmd_vel->twist.linear.x = max_vel_to_stop;
Copy link
Member

Choose a reason for hiding this comment

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

I think you may also need to set a minimum velocity parameter. Most robots can't go 1mm/s or have stalling velocities.

Copy link
Member

Choose a reason for hiding this comment

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

Speaking of this -- an aside. Do you use the rotation shim controller? Right now, we don't do the deceleration as a function of its target orientation and this would be great to add in there too if you happened to also use it & be open to submitting the PR

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@SteveMacenski I can add the limits for the shim controller after this, but I’m kinda stuck on the tests—can’t get the subscriber to run its callback. Any tips?

Copy link
Member

@SteveMacenski SteveMacenski Jan 11, 2025

Choose a reason for hiding this comment

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

It generally looks right ot me, but I'd look at other subscription-based BT node tests for reference :-)

I'd also try:

  • do rclcpp::spin_some(node_); after the while loop
  • Print in the callbacks, are you sure its not actually being triggered
  • Check the topic is correct

@RBT22 RBT22 force-pushed the rolling/acc-drive-on-heading branch from 544887c to 9b9a6ce Compare January 9, 2025 10:02
Copy link
Contributor

mergify bot commented Jan 9, 2025

@RBT22, your PR has failed to build. Please check CI outputs and resolve issues.
You may need to rebase or pull in main due to API changes (or your contribution genuinely fails).

Signed-off-by: RBT22 <[email protected]>
rclcpp::ParameterValue(-2.5));
nav2_util::declare_parameter_if_not_declared(
node, this->behavior_name_ + ".minimum_speed",
rclcpp::ParameterValue(0.01));
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
rclcpp::ParameterValue(0.01));
rclcpp::ParameterValue(0.10));

More realistic

Copy link
Member

Choose a reason for hiding this comment

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

Also for the nav2_params.yaml

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.

Also, configuration guide entries are needed and migration guide to mention the new params

rclcpp::ParameterValue(-2.5));
nav2_util::declare_parameter_if_not_declared(
node, this->behavior_name_ + ".minimum_speed",
rclcpp::ParameterValue(0.01));
Copy link
Member

Choose a reason for hiding this comment

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

Also for the nav2_params.yaml

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