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

Rework PID class API #246

Open
wants to merge 20 commits into
base: ros2-master
Choose a base branch
from
Open

Rework PID class API #246

wants to merge 20 commits into from

Conversation

christophfroehlich
Copy link
Contributor

@christophfroehlich christophfroehlich commented Dec 7, 2024

While fixing the clang errors I realized that lots of implicit casts to computeCommand were used, and the typical usage was to pass something like period.nanoseconds() and convert it internally to seconds. Because introducing an overload with double dt as argument is ambiguous and might silently break user code, I decided to convert the class methods from camelCase to snake_case (the ros2_control standard), remove the uint64_t version but introduce the following new overloads which converts dt to seconds in a consistent way

  • double dt
  • rcl_duration_value_t dt_ns
  • rclcpp::Duration dt
  • std::chrono::nanoseconds dt_ns

I converted the method names of PidROS accordingly as well, but left the only rclcpp::Duration version there.

The old methods remain deprecated, this should not break anything in downstream packages.
AFAIK adding non-virtual methods should not be a problem regarding ABI break?

@codecov-commenter
Copy link

codecov-commenter commented Dec 7, 2024

Codecov Report

Attention: Patch coverage is 92.85714% with 13 lines in your changes missing coverage. Please review.

Project coverage is 75.87%. Comparing base (74510fd) to head (3d3bb50).

Files with missing lines Patch % Lines
src/pid_ros.cpp 80.35% 11 Missing ⚠️
src/pid.cpp 93.75% 2 Missing ⚠️
Additional details and impacted files
@@               Coverage Diff               @@
##           ros2-master     #246      +/-   ##
===============================================
+ Coverage        74.78%   75.87%   +1.08%     
===============================================
  Files               22       22              
  Lines             1071     1119      +48     
  Branches            85       85              
===============================================
+ Hits               801      849      +48     
  Misses             222      222              
  Partials            48       48              
Flag Coverage Δ
unittests 75.87% <92.85%> (+1.08%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
include/control_toolbox/pid.hpp 86.66% <100.00%> (+8.88%) ⬆️
include/control_toolbox/pid_ros.hpp 100.00% <ø> (ø)
test/pid_parameters_tests.cpp 100.00% <100.00%> (ø)
test/pid_publisher_tests.cpp 94.87% <100.00%> (ø)
test/pid_tests.cpp 100.00% <100.00%> (ø)
src/pid.cpp 93.67% <93.75%> (+1.02%) ⬆️
src/pid_ros.cpp 72.41% <80.35%> (ø)

Copy link

mergify bot commented Dec 7, 2024

This pull request is in conflict. Could you fix it @christophfroehlich?

@christophfroehlich christophfroehlich changed the title Add computeCommand with double dt_s argument Rework PID class API Dec 13, 2024
include/control_toolbox/pid.hpp Outdated Show resolved Hide resolved
include/control_toolbox/pid.hpp Outdated Show resolved Hide resolved
include/control_toolbox/pid.hpp Outdated Show resolved Hide resolved
include/control_toolbox/pid_ros.hpp Outdated Show resolved Hide resolved
include/control_toolbox/pid_ros.hpp Outdated Show resolved Hide resolved
include/control_toolbox/pid_ros.hpp Outdated Show resolved Hide resolved
src/pid.cpp Outdated Show resolved Hide resolved
src/pid_ros.cpp Outdated Show resolved Hide resolved
src/pid_ros.cpp Outdated Show resolved Hide resolved
src/pid_ros.cpp Outdated Show resolved Hide resolved
src/pid_ros.cpp Outdated Show resolved Hide resolved
Copy link
Member

@saikishor saikishor left a comment

Choose a reason for hiding this comment

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

In general looks great to me.

Compatibility tests look spot on. Super good work.

Just a few things, i thought that might be worth discussing.

include/control_toolbox/pid_ros.hpp Outdated Show resolved Hide resolved
src/pid.cpp Outdated Show resolved Hide resolved
src/pid.cpp Outdated Show resolved Hide resolved
src/pid_ros.cpp Outdated Show resolved Hide resolved
saikishor
saikishor previously approved these changes Dec 17, 2024
Copy link
Member

@saikishor saikishor left a comment

Choose a reason for hiding this comment

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

LGTM.

Thanks for the changes

Copy link
Member

@saikishor saikishor left a comment

Choose a reason for hiding this comment

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

Rest looks good

include/control_toolbox/pid_ros.hpp Outdated Show resolved Hide resolved
src/pid_ros.cpp Outdated Show resolved Hide resolved
Copy link
Member

@saikishor saikishor left a comment

Choose a reason for hiding this comment

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

LGTM

@saikishor
Copy link
Member

@christophfroehlich Thank you for correcting things again and again. This is a great job.

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.

3 participants