-
Notifications
You must be signed in to change notification settings - Fork 269
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 Plugin: separate linear and angular #2018
Ackermann Steering Plugin: separate linear and angular #2018
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a change in the behaviour of the plugin, I think we should retarget this to main
. What do you think @mjcarroll ?
f7d3254
to
f8443f8
Compare
…in normal mode Added separate parameters for angular speed, min_angular_velocity, max_angular_velocity, min_angular_acceleration, etc. Added the gainPAng to normal mode (not steering-only mode) Signed-off-by: ThreonX <76905674+ThreonX@users.noreply.github.com> Signed-off-by: Bac0nEater <thenickys123@gmail.com>
update pre-commit-hooks Signed-off-by: mosfet80 <realeandrea@yahoo.it> Signed-off-by: Bac0nEater <thenickys123@gmail.com>
As of gazebosim/sdformat#1117, SDFormat supports joints under world (//world/joint in xpath). This PR adds support for it in gz-sim. Note that some systems that operate on joints, such as the JointPositionController, require that the system is instantiated inside a model, and therefore, will not work with world joints. It's not clear whether this is a real problem since world joints are most likely to be fixed joints used to attach two models together. Signed-off-by: Addisu Z. Taddese <addisu@openrobotics.org> Signed-off-by: Bac0nEater <thenickys123@gmail.com>
Signed-off-by: Nick <69305722+Bac0nEater@users.noreply.github.com> Signed-off-by: Bac0nEater <thenickys123@gmail.com>
Signed-off-by: Bac0nEater <thenickys123@gmail.com>
Signed-off-by: Bac0nEater <thenickys123@gmail.com>
Signed-off-by: Bac0nEater <thenickys123@gmail.com>
f8443f8
to
90a21e6
Compare
Signed-off-by: Nick <69305722+Bac0nEater@users.noreply.github.com>
Signed-off-by: Nick <69305722+Bac0nEater@users.noreply.github.com>
Signed-off-by: Nick <69305722+Bac0nEater@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As I already mentioned in my previous comment, this might break other users.
a current user of this plugin needs to include these new tags otherwise the min angular vel, max angular vel, min angular acceleration and max angular acceleration will not be defined.
there are two ways to include this:
- target this to
main
- Add a legacy tag, to be able to choose the current behaviour or use this new one. The default behaviour should be the current behaviour
Signed-off-by: Nick <69305722+Bac0nEater@users.noreply.github.com>
Signed-off-by: Nick <69305722+Bac0nEater@users.noreply.github.com>
I'm sorry. I'm not sure what is the legacy tag. Is it the tags and releases in Github? |
what I was trying to say, it;s that you can add a new tag inside the plugin, for example <angular_limits>true</angular_limits>
<min_angular_velocity>-10</min_angular_velocity>
<max_angular_velocity>10</max_angular_velocity>
<min_angular_acceleration>-20</min_angular_acceleration>
<max_angular_acceleration>20</max_angular_acceleration>
</plugin> if this is true then use the specific angular limits otherwise use the other limits to avoid break other users. |
Signed-off-by: Nick <69305722+Bac0nEater@users.noreply.github.com>
Signed-off-by: Nick <69305722+Bac0nEater@users.noreply.github.com>
Signed-off-by: Nick <69305722+Bac0nEater@users.noreply.github.com>
Signed-off-by: Nick <69305722+Bac0nEater@users.noreply.github.com>
Signed-off-by: Nick <69305722+Bac0nEater@users.noreply.github.com>
Signed-off-by: Nick <69305722+Bac0nEater@users.noreply.github.com>
Removing |
Thanks for the contribution. Looking over this I'm not sure if this makes sense to me for an Ackermann based vehicle. The problem resides in the fact that angular velocity is only a function of the heading/steering angle and the forward drive velocity of the wheels. This would rely upon someone doing the math to know which one is "limiting the system" and does not seem to add any functionality I could think of offhand for a real Ackermann based vehicle, instead this could be potentially much more risky to users. Also not sure the value in setting min/max angular rates would do for Ackermann as well since it's not a diff drive. What problem were you hoping to solve or added functionality that is missing were you hoping for this to have? |
Sweet as, I can't close this from my side, as these guys have left the lab. But safe to say no more work on this thread will be done; so if you can close on your side, perfect. I'll open a PR |
@retinfai, please make sure to rebase your branch on the latest merge for gz-sim8 (which includes the changes to the ackermann plugin) before creating that PR. |
🎉 New feature
Summary
This separate fields between linear and angular in Ackermann Steering Plugin, such as linear, acceleration and jerk.
Linear velocity, acceleration and jerk fields stay the same. However, we moved the angular velocity, acceleration and jerk fields, so we can specify the velocity, acceleration and jerk differently for linear and angular.
Explanation:
We also added P control to normal mode (not SteeringOnly mode).
The plugin and integration tests are written based on the original velocity and acceleration of Ackermann Steering.
Test it
The plugin can be tested using examples/worlds/ackermann_steering_with_angular.sdf
Checklist
codecheck
passed (See contributing)