Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Ackermann steering controller example not working properly #438

Open
Victorvi99 opened this issue Nov 8, 2024 · 0 comments
Open

Ackermann steering controller example not working properly #438

Victorvi99 opened this issue Nov 8, 2024 · 0 comments

Comments

@Victorvi99
Copy link

Hi, I am trying to use the '/gz_ros2_control/ign_ros2_control_demos/launch/ackermann_drive_example.launch.py' as an inspiration for my ackermann simulation.

When launching the ackermann_drive_example.launch.py and teleoperating it with the keyboard (vx=0.5 and wz=0.3) I experienced that the car turns to the right in Ignition when sending positive angular velocities. However, when visualizing the odom frame in rviz published by the ackermann steering controller, the car (shown by robotmodel subscribed to robot_description) turns to the left, as expected with positive angular velocities.

I would expect the car turning to the left also in Ignition following the robot base link convention (x: forward, y:left, z:up) in which the right hand rule says that positive angular velocities would turn to the left.

By inspecting the test_ackermann_drive.xacro.urdf, I could see that the 'left_wheel_steering_joint' and the 'right_wheel_steering_joint' define rpy="-1.57 0 0" which turns the base_link frame -90deg around the x axis leading to x:forward, y:down, z:left. Then, the axis section within the joint is defined as xyz="0 1 0" ,which means that the steering will be around the y axis transformed which points downwards, so in that case, a positive angular velocity is to the right as happening in Ignition when launching the simulation.

Trying to invert this behaviour to get positive angular velocities turning the car to the left, I have tried to change the 'left_wheel_steering_joint' and the 'right_wheel_steering_joint' origin section rpy="1.57 0 0" turning the base_link frame 90deg around the x axis leading to x:forward,y:up, z:right with axis="0 1 0" so that a positive angular velocity around y axis would turn to the left as expected. However, when doing that change and launching the simulation, the car turns to the left with positive angular velocities but the turning radius is heavily affected (from ~3m with the original setup to ~10m with the rpy joint change". It seems that is kind of drifting and not turning as it should.

I have also tried to maintain the original rpy rotation of the steering joints and changing the axis section xyz="0 -1 0" but it resulted in the same behaviour.

I would like to know if someone of you have experienced something similar as I could not found a solution for it.

Let me know if you can test it and which is your output.

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

No branches or pull requests

1 participant