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

Ackermann Steering Plugin #618

Merged
merged 10 commits into from
Mar 16, 2021
Merged

Conversation

knoedler
Copy link
Contributor

@knoedler knoedler commented Feb 7, 2021

Summary

This adds an Ackermann Steering Plugin based on the differential drive plugin.

The plugin accepts a linear velocity (x) and a rotational velocity (z) the same as the differential drive plugin and sets the vehicle drive and steering joints to achieve the requested inputs. The plugin and integration tests are largely based on the differential drive plugin.

Items to consider:
SpeedLimiter.cc and SpeedLimiter.hh are identical copies from the diff_drive plugin
Odometry is not as accurate as a pure diff_drive robot. I had to open the integration tests limit up from 1cm to 25cm when comparing odometry to ground truth in the integration tests. I tried various ground friction coefficients and using the wheel
slip plugin, but I did not achieve 1cm accuracy for the odometry.
There is a lot of commonality between the differential and Ackermann plugins. It might make sense to merge them at some point in the future when the Ackermann plugin has aged a bit and is stable (to minimize risk to the heavily used diff drive plugin).
I was not able to generate a coverage report.

Test it

The plugin can be tested using examples/worlds/ackermann_steering.sdf

Checklist

  • Signed all commits for DCO
  • Added tests
  • Added example world and/or tutorial
  • Updated documentation (as needed)
  • [NA] Updated migration guide (as needed)
  • codecheck passed (See contributing)
  • All tests passed (See test coverage)
  • [?] While waiting for a review on your PR, please help review

@knoedler knoedler requested a review from chapulina as a code owner February 7, 2021 00:01
@github-actions github-actions bot added the 🔮 dome Ignition Dome label Feb 7, 2021
src/systems/ackermann_steering/AckermannSteering.cc Outdated Show resolved Hide resolved
src/systems/ackermann_steering/AckermannSteering.cc Outdated Show resolved Hide resolved
test/integration/ackermann_steering_system.cc Outdated Show resolved Hide resolved
test/integration/ackermann_steering_system.cc Outdated Show resolved Hide resolved
test/integration/ackermann_steering_system.cc Outdated Show resolved Hide resolved
src/systems/ackermann_steering/AckermannSteering.hh Outdated Show resolved Hide resolved
@knoedler knoedler requested a review from ahcorde February 8, 2021 16:52
@chapulina chapulina added the enhancement New feature or request label Feb 8, 2021
@ahcorde
Copy link
Contributor

ahcorde commented Feb 10, 2021

@osrf-jenkins retest this please

Copy link
Contributor

@chapulina chapulina left a comment

Choose a reason for hiding this comment

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

This is looking good to me! I didn't check the math too closely though. I took a quick look at the implementation on gazebo_ros_pkgs but the approach looks a bit different.

src/systems/ackermann_steering/AckermannSteering.cc Outdated Show resolved Hide resolved
src/systems/ackermann_steering/AckermannSteering.cc Outdated Show resolved Hide resolved
@@ -0,0 +1,130 @@
/*********************************************************************
Copy link
Contributor

Choose a reason for hiding this comment

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

I think this can be moved to a common place so multiple plugins reuse it, see gazebosim/gz-math#194. We shouldn't block this PR for this, we can come back later and update this plugin and diff drive once the version on ign-math is released.

src/systems/ackermann_steering/AckermannSteering.cc Outdated Show resolved Hide resolved
Copy link
Contributor

@ahcorde ahcorde left a comment

Choose a reason for hiding this comment

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

Remember to sign all your commits. DCO is failing

@knoedler
Copy link
Contributor Author

knoedler commented Mar 4, 2021

Remember to sign all your commits. DCO is failing

That particular commit was from clicking on "commit suggestion". I would have expected github to handle signoffs. I have made a couple of attempts to resolve it, but my googling has not found a successful way to resolve it.

I believe I have addressed the issues from the two reviews.

@chapulina
Copy link
Contributor

I would have expected github to handle signoffs.

Yeah unfortunately GitHub doesn't make it easy to sign commits from the web UI. We've been manually adding the signature for those cases.

One way of solving this would be by adding the signature locally while rebasing and then force-pushing. If this is too much trouble, we can manually accept the DCO check since all other commits are properly signed.

@knoedler
Copy link
Contributor Author

One way of solving this would be by adding the signature locally while rebasing and then force-pushing. If this is too much trouble, we can manually accept the DCO check since all other commits are properly signed.

If you could, please manually accept the DCO check.

Adding the signature locally/rebasing/force-pushing was one of the approaches I tried a couple of different ways, but it didn't work for me in this case.

Copy link
Contributor

@chapulina chapulina left a comment

Choose a reason for hiding this comment

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

Thank you for the new plugin!

@chapulina chapulina merged commit 9f19dd9 into gazebosim:ign-gazebo4 Mar 16, 2021
chapulina added a commit that referenced this pull request Jul 26, 2022
Signed-off-by: Kevin <[email protected]>

Co-authored-by: Kevin <[email protected]>
Co-authored-by: Louise Poubel <[email protected]>
chapulina added a commit that referenced this pull request Jul 26, 2022
* Ackermann Steering Plugin (#618)

Signed-off-by: Kevin <[email protected]>

Co-authored-by: Kevin <[email protected]>
Co-authored-by: Louise Poubel <[email protected]>

* Using math::SpeedLimiter on the ackermann_steering controller. (#837)

Signed-off-by: LolaSegura <[email protected]>

* Add Tf publishing to AckermannSteering system (#1576)

Signed-off-by: Andrew Ealovega <[email protected]>
Signed-off-by: Louise Poubel <[email protected]>

Co-authored-by: Alejandro Hernández Cordero <[email protected]>
Co-authored-by: Louise Poubel <[email protected]>

Co-authored-by: knoedler <[email protected]>
Co-authored-by: Kevin <[email protected]>
Co-authored-by: LolaSegura <[email protected]>
Co-authored-by: Andrew Ealovega <[email protected]>
Co-authored-by: Alejandro Hernández Cordero <[email protected]>
@azeey azeey added the beta Targeting beta release of upcoming collection label Jul 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
beta Targeting beta release of upcoming collection 🔮 dome Ignition Dome enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants