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 79.10448% with 14 lines in your changes missing coverage. Please review.
✅ Project coverage is 84.90%. Comparing base (56c6fa0) to head (f52b6b1).

Files with missing lines Patch % Lines
...iff_drive_controller/src/diff_drive_controller.cpp 80.00% 4 Missing and 3 partials ⚠️
diff_drive_controller/src/odometry.cpp 78.12% 6 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1854      +/-   ##
==========================================
- Coverage   85.12%   84.90%   -0.22%     
==========================================
  Files         143      143              
  Lines       13744    13776      +32     
  Branches     1201     1204       +3     
==========================================
- Hits        11699    11696       -3     
- Misses       1638     1673      +35     
  Partials      407      407              
Flag Coverage Δ
unittests 84.90% <79.10%> (-0.22%) ⬇️

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 50.00% <78.12%> (-26.32%) ⬇️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Contributor

@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 and others added 4 commits August 20, 2025 19:03
@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
Contributor

@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 and others added 2 commits September 9, 2025 15:08
Co-authored-by: Christoph Fröhlich <christophfroehlich@users.noreply.github.com>
@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!

@mergify
Copy link
Contributor

mergify bot commented Oct 3, 2025

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

@Amronos
Copy link
Contributor Author

Amronos commented Oct 3, 2025

Sorry for the delay on this! All requested changes have been made now, please review!

Copy link
Contributor

@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 your patience. This is almost good to be merged, two minor comments only

}
}

void Odometry::integrate(const double dx, const double dheading)
Copy link
Contributor

Choose a reason for hiding this comment

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

I'd find it more meaningful to pass dt to the integration method as well, instead of delta values only?
Or we rename the method to accumulate or something.

Comment on lines +56 to +58
bool updateFromPos(const double left_pos, const double right_pos, const double dt);
bool updateFromVel(const double left_vel, const double right_vel, const double dt);
bool tryUpdateOpenLoop(const double linear_vel, const double angular_vel, const double dt);
Copy link
Contributor

Choose a reason for hiding this comment

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

  • no need for const qualifier for non-ref datatypes.
  • let's change the code style to snake case for new methods.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants