Description
Describe the bug
I am building a ackermann-controlled vehicle and would like to control the mobile base via steering angle and linear velocity instead of a twist since I have a preceding pure pursuit controller. In the documentation (Ackermann Controller it says that the references are linear velocity and angular position of the steering. Setting these references via ForwardController reveals that the angular position command interface is in fact a angular velocity command interface. Since the steering library is worked on rn anyway: Would it be an idea to let people switch between controlling the vehicle via Twist or AckermannDrive messages? This would remove the slightly awkward setup of having to separate ForwardCommand controllers or a completely self-written controller just to set steering angle and velocity instead of a Twist.
To Reproduce
Steps to reproduce the behavior:
- Start an Ackermann vehicle
- Attach two forward command controllers to the Ackermann controller e.g.
ros__parameters:
joints:
- ackermann_steering_controller/angular
forward_velocity_controller:
ros__parameters:
joints:
- ackermann_steering_controller/linear
- Set a steering command and a linear velocity command
Expected behavior
Setting a steering angle should be passed on to the angle commands and not be correlated with the velocity.
Screenshots
The blue line is the commanded steering angle and the orange one is the true steering angle. Changing the linear velocity also influences the steering angle.
Environment (please complete the following information):
- OS: Ubuntu 22
- Version Iron
Additional context
Add any other context about the problem here, especially include any modifications to any ros2_controllers that relate to this issue.