Skip to content

Conversation

@Amronos
Copy link
Contributor

@Amronos Amronos commented Aug 6, 2025

Fixes #271.
Fixes #357.

I have updated the odometry implementation of the diff_drive_controller to fix the above two issues alongside improving the code's readability. This implementation is similar to that of omni_wheel_drive_controller.
I have created some new methods and deprecated the older ones.

Should I also make similar changes to other controllers? If yes, should I do that in a separate PR?

@codecov
Copy link

codecov bot commented Aug 6, 2025

Codecov Report

❌ Patch coverage is 75.34247% with 18 lines in your changes missing coverage. Please review.
✅ Project coverage is 84.97%. Comparing base (3d03572) to head (8dc9951).
⚠️ Report is 2 commits behind head on master.

Files with missing lines Patch % Lines
diff_drive_controller/src/odometry.cpp 71.05% 8 Missing and 3 partials ⚠️
...iff_drive_controller/src/diff_drive_controller.cpp 80.00% 4 Missing and 3 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1854      +/-   ##
==========================================
- Coverage   85.20%   84.97%   -0.24%     
==========================================
  Files         148      148              
  Lines       14321    14359      +38     
  Branches     1225     1230       +5     
==========================================
- Hits        12202    12201       -1     
- Misses       1694     1731      +37     
- Partials      425      427       +2     
Flag Coverage Δ
unittests 84.97% <75.34%> (-0.24%) ⬇️

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

Files with missing lines Coverage Δ
...troller/include/diff_drive_controller/odometry.hpp 100.00% <ø> (ø)
...iff_drive_controller/src/diff_drive_controller.cpp 83.00% <80.00%> (+0.32%) ⬆️
diff_drive_controller/src/odometry.cpp 49.12% <71.05%> (-27.20%) ⬇️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Member

@christophfroehlich christophfroehlich left a comment

Choose a reason for hiding this comment

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

Let's discuss my points first, and merge the outcome. If necessary, let's open a new PR afterwards for the other controllers.

@Amronos
Copy link
Contributor Author

Amronos commented Sep 4, 2025

Sorry for the delay in fixing the failing checks here! I was busy shifting Linux distros and had tried to make the commits that caused the checks to fail through the web.

Copy link
Member

@christophfroehlich christophfroehlich left a comment

Choose a reason for hiding this comment

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

Still not sure about the tryUpdateOpenLoop method, maybe @saikishor or anyone else has an opinion about that.

@Amronos
Copy link
Contributor Author

Amronos commented Sep 24, 2025

@christophfroehlich pre-commit isn't working for me for some reason, but besides that I have made the changed you requested. If possible, could you clone the pr, and push a fix for the pre-commit? Thanks!

Copy link
Member

@christophfroehlich christophfroehlich left a comment

Choose a reason for hiding this comment

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

Thanks for the latest cleanup! LGTM

Comment on lines +230 to 235
catch (const std::runtime_error &)
{
odometry_message_.header.stamp = time;
odometry_message_.pose.pose.position.x = odometry_.getX();
odometry_message_.pose.pose.position.y = odometry_.getY();
odometry_message_.pose.pose.orientation.x = orientation.x();
odometry_message_.pose.pose.orientation.y = orientation.y();
odometry_message_.pose.pose.orientation.z = orientation.z();
odometry_message_.pose.pose.orientation.w = orientation.w();
odometry_message_.twist.twist.linear.x = odometry_.getLinear();
odometry_message_.twist.twist.angular.z = odometry_.getAngular();
realtime_odometry_publisher_->try_publish(odometry_message_);
// Handle exceptions when the time source changes and initialize publish timestamp
previous_publish_timestamp_ = time;
should_publish = true;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Is this block meant to catch the error of previous_publish_timestamp as unintialized ? if so, we should initialize it in on_configure. If not, this block may not be reachable.

Copy link
Contributor Author

@Amronos Amronos Nov 30, 2025

Choose a reason for hiding this comment

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

This isn't really a part of the changes made in this PR, perhaps create a separate issue? A similar pattern exists in other controllers as well, so the change will need to be propagated to them as well.
If you create another issue, please also link this suggestion in it.

Copy link
Member

Choose a reason for hiding this comment

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

You are right, this existed before and the diff is just not properly rendered by the UI. @Juliaj please open a (first) issue with this.

Copy link
Contributor

Choose a reason for hiding this comment

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

@Juliaj
Copy link
Contributor

Juliaj commented Nov 29, 2025

@Amronos, thanks for working on this PR. It would be great to add some tests for the odometry changes. If you can't accommodate this within this PR, please consider creating a GitHub issue so the community can pick it up.

@Amronos
Copy link
Contributor Author

Amronos commented Nov 30, 2025

@Amronos, thanks for working on this PR. It would be great to add some tests for the odometry changes. If you can't accommodate this within this PR, please consider creating a GitHub issue so the community can pick it up.

Thanks a lot for the review! I don't really have the time to work on tests for this PR rn, and so have gone ahead and created #2033.

Copy link
Contributor

@Juliaj Juliaj left a comment

Choose a reason for hiding this comment

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

LGTM.

@christophfroehlich christophfroehlich merged commit 89fd9e1 into ros-controls:master Dec 1, 2025
17 checks passed
@Amronos Amronos deleted the update-diff_drive-odom branch December 1, 2025 10:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

3 participants