-
Notifications
You must be signed in to change notification settings - Fork 8
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
Fix angvel representation issue #36
Conversation
Creates a new property that allows the user to say that euler rate representation is being used and performs the necessary transformation to the axis-angle representation. This property is only used when position_control = false.
Looks good. Would be possible to have this conversion on the PIDController, so all angular velocity output are in the same representation? As far as I remember, I'd been using an auv with roll and pitch near zero, so I hadn't paid much attention to it. |
Yep, your understanding is exactly right.
Regarding this one, after thinking a bit more, I got that the world-aligned body frame ( Thus, one might say that the conversion performed in the The world-aligned body frame, AFAIK, is something defined in this component for convenience, so one should not expect that the angular velocity is already given in such frame on the received
In summary, I think the solution currently provided on this PR is the simplest one because it avoids the representation error with minimal change to the code. However, it has the problem of performing the angular velocity control in the body-frame instead of the world-aligned body frame, which is inconsistent IMO. If you think the other solution I presented above - applying the transformation on the
Sure thing, as soon as we agree on the solution, I will update the documentation. |
If no one objects I'll merge this 👍 |
This PR would close isse #35 that I have reported. This does so by creating a new property in the
WorldToAligned
task that actually allows the user to explicitly say that provided angular part of the command is represented by an Euler rate vector and, only in this case, performs the corresponding transformation.This new property does not make any modifications when the position control domain is used. Also, it is set to
false
by default so that this PR is backward compatible with already deployed systems.IMHO, this now allows the user to properly set a cascade from a world position control (that provides euler rates as angular commands) to a world-aligned body velocity control that actually expects that command to be a scaled-axis representation.
Depends on
How to test
@joaobrittoneto @saarnold @bwehbe