Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Mobile Robotics Controllers (Ackermann, four_wheels, swerve, ...) #264

Open
tomlogan501 opened this issue Nov 8, 2021 · 10 comments
Open

Comments

@tomlogan501
Copy link

Hi,
I create just this topic to keep track of the transfert of those controllers from ROS1 to ROS2.
We can discuss the main changes and the benefit to do so (new architecture, cyclic, ...)

@harderthan
Copy link

Hello.

I create ackermann-steering-controller-ros2 repository and implement a migration for ros1 ackermann_steering_controller

I finished only to build the migrated code. I have a todo list below.

TODO

  • Trouble shooting to build
  • Add the Odometry/Velocity Calculation on ackermann_steering_controller.cpp
  • Add test codes for ackermann_steering_controller.cpp
  • Update Odometry.hpp and .cpp
  • Update documents (remarks, descriptions, etc.)
  • Add Test Code
  • PR

Advice and questions are welcome. thank you.

@Timple
Copy link
Contributor

Timple commented Dec 14, 2021

Be carefull with 'just' porting from ROS1.
For ROS1 ackermann, the implementation seemed off.

Also support for front-wheel drive seems to be missing, but that might be a new feature request.

@harderthan
Copy link

For ROS1 ackermann, the implementation seemed off.

@Timple Reallly thank you for the feedback! I didn't know it.

Do you know if there was any discussion about adding an Ackermann controller? I'm not sure how I should contribute. Does it make sense to read and implement all this design_drafts?

And, I couldn't find the information about 'front-wheel drive'.
Do you mean four_wheel_steering_controller?

@bmagyar
Copy link
Member

bmagyar commented Dec 17, 2021

@harderthan please don't create a separate repository with code copied.
The way to contribute changes and get feedback is to first fork this repo and add a new package.

For porting of controllers you don't need a design draft. I agree with @Timple however I think the first step should be to do the porting of that controller as-is, then you can go and improve it. Doing too many things at once will only get you into a situation where it's impossible to trace your steps back and impossible to review as well.

Here's my suggestion for a chain of PRs once you have most things working (applicable to any of the controllers above):

  • Basic package structure implementing a controller that does nothing in particular, should have plugin, main header file, main cpp file, cmake properly set up, a load-controller test (see other controllers), no parameters, no subscriber or publisher
  • Add all basic subscribers and publishers, doing the least amount of activity, add basic controller documentation (see other controllers)
  • Add the implementation of the controller, subscriber callbacks and publishing to topics, add basic functional tests
  • Expose parameters and add tests that rely on setting parameters
  • Add any more tests that were not added yet
  • Add any new features by implementing the new functionality, adding parameter(s) for it and appropriate tests without changing the default behaviour unless you have a very good reason to do so

When in doubt, check the diff_drive_controller although it's not in a great shape so if you have better ideas for some things, feel free to be smarter.
Also take a look at our contribution guidelines: http://control.ros.org/contributing.html

@samehmohamed88
Copy link

Has any further work been done on this issue? I also need to implement a car-like steering controller for my current project.

@tonynajjar
Copy link
Contributor

@bmagyar are you getting the notifications on this PR? Could you advise on how to proceed?

#345

@bmagyar
Copy link
Member

bmagyar commented Jul 17, 2022

As far as I'm concerned @tonynajjar your PR is the way to go. Sorry for the delay on reviewing, we've been really busy with framework features and controllers received a little less attention. We have the reviewer lottery to help with that but sometimes you get unlucky with the draw

@DiuLaMaX
Copy link

DiuLaMaX commented Dec 8, 2022

@bmagyar What is the current status of migrating Ackermann_steering_controller from ROS1 to ROS2?

@hishambaharom
Copy link

@bmagyar when the ackermann_steering_controller support on ros2 humble

@bmagyar
Copy link
Member

bmagyar commented Dec 13, 2022

@DiuLaMaX @hishambaharom it's waiting for you guys to put the work in ;)

# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

No branches or pull requests

8 participants