-
Notifications
You must be signed in to change notification settings - Fork 525
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
Added option to obtain velocity directly from joint_state. #206
base: indigo-devel
Are you sure you want to change the base?
Added option to obtain velocity directly from joint_state. #206
Conversation
Thanks for your contribution, but I'd like to have clearpathrobotics#10 merged upstream. Do you think it'll also fix your needs? I think I could have all clearpathrobotics merged upstream in a couple of days, and then you can add extra features here. What do you think? |
Sounds good! That seems to address everything I tried to. |
I'm working on:
I expect to finish all this by the end of next week. |
I have something like this in clearpathrobotics@22b106a and a bunch of critical issues addressed in later commits. That's the only reason I'd refrain for merging this... it'd be difficult to bring my stuff upstream, but if we diverge here it'd be even more painful. |
Hi @efernandez et al. Thanks, cc @majcote @tonybaltovski - per the phone call just now |
👍 |
@wxmerkt I'm quite busy, but @tonybaltovski will help me to get the bits you need upstream. I'd try to bring other features soon as well, as the covariance, etc. My major concern is that some commits introduced a few bugs that got fix. Somehow I'd prefer to get everything go upstream together, as the latest code has been tested for almost 1 year (for some features) with no changes and giving no problems. |
I'm at bit reluctant about bringing everything upstream as a single update as there are plenty of robots from various companies & labs using this controller. I'd prefer the usual approach of one feature + tests at a time. |
We've done some more testing locally and noticed that e.g. the naming of some parameters changed and some behaviours regressed compared to the current debians. The addition of the dynamic reconfigure is nice and should become a default in my opinion. While we are keen to explore getting the use-velocities-for-odometry-pose-estimates in, I'd recommend against pushing the entire fork indigo-devel head upstream at once and go feature by feature - we've seen a few regressions e.g. when it came to raw orientation (@majcote was there during testing and may be able to comment some more) so more testing would be recommended. Also, @efernandez are you using your fork internally or the debians for the research bots? |
@bmagyar @wxmerkt Fair enough, especially because each feature will have to be validated and tested. I don't think the fork is used at all (or has been tested) in research platforms. I still need some feedback to understand what regression we faced. I know the params for the wheel joint source are new and different from anything that were before. I'd have to look into it to understand the problem though. @majcote Keep me up to date with your findings, please. |
Here's a few loosely collected observations:
|
clearpathrobotics@9683ef1#diff-380f38b77ed7f79a1de5cf7de13f429eL166
I think we should cherry-pick a single change at a time and for param changes I can try to provide a backwards compatibility solution, so things don't break unexpectedly. https://github.com/clearpathrobotics/ros_controllers/pull/18/files is the PR that provided the wheel joint source to compute the robot space pose/twist. However, is on top of other changes. I'd start pushing them in order one by one, but if you're in a rush, maybe it's better to get this PR and I'd handle any conflicts later. Also note that in later changes, I fix how the twist is computed; that's why I said I can only guarantee the latest version of our fork works well, while getting intermediate versions could show different (and sometimes bad) behavior. |
Thanks for looking into this Enrique. We changed the radius multiplier to match our gearbox, but the generic |
Per issue #159, added the option to use joint_state velocity instead of the difference between joint_state positions in diff_drive_controller Odometry. I noticed a previous pull request for this feature, but it seems to have died.
false
will make the diff_drive_controller use a different Odometry::update method which uses joint velocity for its velocity estimates.diff_drive_raw_velocity.test
: The controller runs correctly if estimate_velocity_from_position is set tofalse
.diff_drive_raw_velocity_invalid.test
: The controller still runs correctly if estimate_velocity_from_position is set tosomething_invalid
, defaulting to comparing position data. If another behavior is expected please let me know so I can fix this.true
, my instinct was the existing diff_drive_controller.test was probably sufficient to test this default behavior. If there's interest in a test with the parameter set explicitly, I'll add it.1: I considered adding options to support the current behavior for position while also smoothing joint velocity, but decided that rabbit hole was too deep to explore without a clear need. If nothing else, figuring out what to name all the parameters was horrifying. ↩