ros2_controllers icon indicating copy to clipboard operation
ros2_controllers copied to clipboard

tricycle_controller vs tricycle_steering_controller

Open christophfroehlich opened this issue 2 years ago • 1 comments

We have two controllers with similar names: tricycle_controller vs tricycle_steering_controller.

I haven't used any of them, so I ask: (especially @tonynajjar who has contributed the first one, and @petkovich who created the second one)

  • Is there a justification of keeping both?

If the answer is yes:

  • Let's document it.
  • The "older" tricycle_controller doesn't follow our best-practices, e.g., using generate_parameter_library, and it lacks of tests (see coverage): Let's improve that.

If the answer is no:

  • Is the "newer" tricycle_steering_controller feature-equal to the "older" tricycle_controller?

If the answer is no: Let's port them. If the answer is yes:

  • Is the "newer" tricycle_steering_controller compatible to the "older" tricycle_controller? (I don't think so)
  • Should we delete it after some deprecation period with some migration guidelines published in the docs?

christophfroehlich avatar Nov 19 '23 18:11 christophfroehlich

What I understood so far:

  • Tricycle_controller has a single double-actuated wheel: steering and traction on the same wheel. This is basically a front-drive bicycle model, because it does not make a difference how many wheels are on the rear axle.
  • This is different from tricycle_steering_controller, which claims having two traction wheels on the rear axle and one steering joint in the front (or vice versa). Same for bicycle_steering_controller: on traction wheel on the rear axle and one steering joint in the front (or vice versa)
  • Tricycle_controller has additional features:
    • Traction limiter
    • Steering limiter
    • ackermann_msg debug topic

I tend now to include tricycle controller into the steering lib on a long term basis, see also #692 Then we don't have to decide if it should be called tricycle (one possible mechanical configuration) or bicycle (the actual kinematic model) controller ;)

christophfroehlich avatar Dec 31 '23 15:12 christophfroehlich