Skip to content

Conversation

silanus23
Copy link

I would like to contribute on #1243 and have moved forward with the first step: documentation and a rough implementation roadmap.

Kinematics: Adapted from NASA’s jpl-osr-rover-code, matching the 6×4 rocker-bogie configuration (steerable front/rear pairs, fixed center).

Testing: Planning to use that repo as a simulation testbed. It targets Jazzy but can be updated for Rolling easily.

Docs: Added a section explaining the kinematic model and its relevance. Intended as groundwork for the proposed steering_controllers_library refactor.

Issue thread has been inactive, so this PR follows the direction mentioned earlier—starting with documentation. Feedback is welcome to move this forward efficiently.

@christophfroehlich

@Copilot Copilot AI review requested due to automatic review settings July 20, 2025 11:55
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR proposes a refactored, plugin-based architecture for steering controllers in ROS 2 control, specifically targeting support for six-wheel rovers with four-wheel steering. The proposal aims to address extensibility limitations in the current monolithic steering controller design by introducing a kinematics-agnostic controller that uses pluginlib for different vehicle models.

  • Plugin-based architecture separating generic control logic from kinematic models
  • Documentation for six-wheel steering kinematics based on Ackermann principles
  • Additive implementation approach to avoid disrupting existing controllers

Reviewed Changes

Copilot reviewed 3 out of 4 changed files in this pull request and generated 3 comments.

File Description
steering_controllers_library/doc/refactored_steering_library.rst Proposes new GenericSteeringController with pluginlib-based kinematic models
doc/six_wheeler_steering_controller.rst Documents six-wheel steering kinematics, parameters, and configuration
doc/images/six_wheeler_steering.drawio Provides kinematic diagram for six-wheel rover visualization

@silanus23 silanus23 marked this pull request as draft July 20, 2025 11:57
@christophfroehlich
Copy link
Contributor

I would like to contribute on #1243 and have moved forward with the first step: documentation and a rough implementation roadmap.

Kinematics: Adapted from NASA’s jpl-osr-rover-code, matching the 6×4 rocker-bogie configuration (steerable front/rear pairs, fixed center).

Testing: Planning to use that repo as a simulation testbed. It targets Jazzy but can be updated for Rolling easily.

Docs: Added a section explaining the kinematic model and its relevance. Intended as groundwork for the proposed steering_controllers_library refactor.

Issue thread has been inactive, so this PR follows the direction mentioned earlier—starting with documentation. Feedback is welcome to move this forward efficiently.

@christophfroehlich

Thanks for picking this topic.

Please post your proposal in the issue or open an issue in the roadmap repository instead of adding a new file to the repo.

About the naming: From six_wheel_steering_controller I would expect that all 6 wheels are steerable. Do you have another naming suggestion?

@silanus23
Copy link
Author

silanus23 commented Jul 20, 2025

Thanks for the clarification.
I assumed the proposal docs belonged here, but I’ll move the design part to the roadmap repo and link it from here.
For the name: I agree, six_wheel_steering_controller could be misleading. Would four_wheel_steering_rover_controller or six_wheel_rover_controller or 6x4_wheeler_controller work better in your view?

Let me know if you'd prefer this PR to be closed, or kept as a draft reference until implementation starts.

@christophfroehlich
Copy link
Contributor

I agree, six_wheel_steering_controller could be misleading. Would four_wheel_steering_rover_controller or six_wheel_rover_controller or 6x4_wheeler_controller work better in your view?

6x4 is not working as ROS package name: https://ros.org/reps/rep-0144.html

only consist of lowercase alphanumerics and _ separators and start with an alphabetic character.

better using something that will work. six_times_four_wheeler also does not seem to be very nice, so maybe six_wheel_rover would be the best option.

Let me know if you'd prefer this PR to be closed, or kept as a draft reference until implementation starts.

keep it, remove the design draft and just update the kinematics documentation here.

@silanus23 silanus23 force-pushed the feature/refactored-steering branch from 26c7ac5 to 62405c6 Compare July 22, 2025 06:21
@silanus23 silanus23 marked this pull request as ready for review July 22, 2025 09:58
@silanus23
Copy link
Author

silanus23 commented Aug 21, 2025

Sorry for giving a too late update. Things are not the same as my proposal but I tried to stick with the #692 @christophfroehlich 's suggestions. I will provide 6 wheeler controller with this.
The package derives many of it's functions from steering_controller_library so maybe I may need to add signature of the writers of steering_controller.
My main motive here is instead restricting user with some pre added steering models one can add simply any robot model by just entering couple of equations and updating an unordered_map (not vector to make sure the ease of use).
I provided an example use of this package in https://github.com/silanus23/generic_steering_controller_demo in here. I am looking forward for your guidance. Thanks for your time.

@Zarqu0n
Copy link

Zarqu0n commented Aug 25, 2025

I think this is so usefull development. I am waiting for improvements. Did you try the both steering and traction in the same joint in your example bot?

@silanus23
Copy link
Author

silanus23 commented Aug 26, 2025

@Zarqu0n That's an important question. Thanks for pointing that out. I guess current implementation can handle both scenarios but this thing surely needs a testing. My current demo doesn't test this. I will put this on a test asap with a 4 wheeler demo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants