ros-controls / ros2_controllers

Generic robotic controllers to accompany ros2_control
https://control.ros.org
Apache License 2.0
385 stars 332 forks source link

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

Open tomlogan501 opened 3 years ago

tomlogan501 commented 3 years ago

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 commented 2 years ago

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

Advice and questions are welcome. thank you.

Timple commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago

@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):

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 commented 2 years ago

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

tonynajjar commented 2 years ago

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

https://github.com/ros-controls/ros2_controllers/pull/345

bmagyar commented 2 years ago

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 commented 1 year ago

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

hishambaharom commented 1 year ago

@bmagyar when the ackermann_steering_controller support on ros2 humble

bmagyar commented 1 year ago

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