Hello Michael,
Sorry for the file, it was called RotVectorSingularities.jpg, I gave you the
wrong pointer. Although the whole time I should probably have called my
problem discontinuities, not singularities, which would have made my e-mail
a lot clearer.
You are right, the discontinuities originate from the EulerParam generation
function. I think it will be easier to fix those discontinuities directly in
the quaternion generation function, as you suggested. So I’ll try that.
Thanks!
Jean-Olivier
From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com] On Behalf
Of AnyBody Support
Sent: Thursday, September 06, 2007 3:27 AM
To: anyscript@yahoogroups.com
Subject: RE: [AnyScript] Rotation Vectors (Type=RotVectors)
Importance: High
Hello Jean-Olivier,
Unfortunately, the VectorLength.jpg seems to be missing from the folder with
the other 3 figures. Or did I miss it?
It sounds a bit strange. I guess the vector length is always positive. This
means that a vector pointing the opposite direction must be a different
orientation, unless as you say it is -2pi+Phi. However, this can only be
positive if Phi is larger than 2pi, which it is not in your case.
I am not sure whether we are missing something here. How do the Euler
parameters look? Are they nice and smooth?
Could you upload those too? And if so.please label them, so it is obvious
which component is which curve.
Best regards,
Michael
Michael Damsgaard, AnyBody Support
www.anybodytech.com
Hello Michael, hello Søren,
I converted my data to Rotation vectors. But as you (and I) expected, some
of my trajectories do not give me straight contiguous vectors. Now, I want
to fix that data since those vector inversions cause problems in the
simulation.
The alternative solution vector is always at 180 degrees from the previous
solution. Therefore, I figured I could just turn the vector around and
correct the angle. When we look at the vector length diagram
(VectorLength.jpg), it is clear that the diagram is turned upside down for
the vectors that are switched (that’s normal, the vector being reverse, the
angle is measured from the other side: right-hand rule). Knowing this, I
would expect the angles (vectors length) to be something like “-2*pi + Phi”.
But it’s not. It has a value very close to the “not reversed” vector length
(angles) (in this case the difference between the angle of the two
solutions, at frame 229, is about -0.0331 rad).
In other words, this means that the rotation vector pointing directly
opposite uses a different angle? How is that possible and how is that
equivalent angle calculated? i.e. The vector <pi/2,0,0>’s reversed
equivalent would NOT be <-3pi/2,0,0>?
Hope I make sense… I uploaded the diagram of one of the vector length
(angle) that is causing a problem into the files section, under the name
VectorLength.jpg You can see the vector switch at frame 229 and then switch
back at 441. I also uploaded the initial vector trajectory so you can really
see the singularities (OriginalVector.jpg) and finally, I uploaded the
corrected vector, normalized to a length of 1, with the singularity section
reversed (Vec=-Vec/|Vec|) under the name FixedUnitVector.jpg. So it is only
the vector length (Phi) that I am unable to correct.
SEE FOLDER: “RotVector Singularities”
(http://tech.
<http://tech.groups.yahoo.com/group/anyscript/files/RotVector%20Singularitie
> groups.yahoo.com/group/anyscript/files/RotVector%20Singularitie
s/)
Hope I make sense, thanks a lot!
Jean-Olivier
From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
[mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com] On
Behalf
Of Jean-Olivier Racine
Sent: Friday, August 31, 2007 8:16 AM
To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
Subject: RE: [AnyScript] Rotation Vectors (Type=RotVectors)
Importance: High
Thanks, that’s a great explanation. Clears it all up.
Jean-Olivier
From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com>
[mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com> ] On
Behalf
Of AnyBody Support
Sent: Friday, August 31, 2007 5:56 AM
To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com>
Subject: RE: [AnyScript] Rotation Vectors (Type=RotVectors)
Importance: High
Hi Jean-Olivier,
I didn’t exactly understand the point you were missing - probably my
mistake. But here a little more detailed version that hopefully clears it up
The u vector is a 3D unit vector that points in the direction of the
rotation axis. Let say u = [u_x, u_y, u_z]^T where u^T*u = 1.
This implies that the rotation vector
RotVector = phiu = [phiu_x, phiu_y, phiu_z]^T.
and that
p = [cos(phi/2), sin(phi/2)*u_x, sin(phi/2)*u_y, sin(phi/2)*u_z]^T (i.e. 4
elements)
where phi is same rotation angle in the two cases.
I believe, you should be able to find phi using the ATAN2(x,y) function
Often you use
p = [e_0 e^T]^T
where e is the vector sin(phi/2)u. Then the input for ATAN2 should be e_0
and sqrt(e^Te) (I cannot recall the order of the argument in ATAN2 -
sorry).
I hope this clears it up.
Best regards,
Michael
Michael Damsgaard, AnyBody Support
<http://www.anybodyt <http://www.anybodytech.com> ech.com>
www.anybodytech.com
From: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com>
<mailto:anyscript%40yahoogroups.com>
[mailto:anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com>
<mailto:anyscript%40yahoogroups.com> ] On
Behalf
Of Jean-Olivier Racine
Sent: Thursday, August 30, 2007 16:58
To: anyscript@yahoogrou <mailto:anyscript%40yahoogroups.com> ps.com
<mailto:anyscript%40yahoogroups.com>
<mailto:anyscript%40yahoogroups.com>
Subject: [AnyScript] Rotation Vectors (Type=RotVectors)
Hello Michael,
In the equation you wrote, I only see three parameters, while there are four
in the EulerParams.
Is it just because of the list reformatting and I should read something
like:
p = [ cos(phi/2), sin(phi/2)*u]
(First column is cos(phi/2) and second one is sin(phi/2)*u?)
Thanks!
Jean-Olivier
Michael Damsgaard`s explanantion:
About the Rotation Vector:
The definition of this is fairly easy. It is a vector pointing in the
direction of the rotation axis and the length of the vector is the angle of
rotation in radians. In math it can be written
RotVector = phi * u
where the Euler parameters are given by
p = [ cos(phi/2) sin(phi/2)*u]
u is the unit vector in the direction of the axis of rotation.
I am not sure whether to recommend you to use it or not. It is
mathematically a nice definition I think, but like Cardan angles, it has
drawbacks. Firstly, there are multiple rotation vectors that correspond to
the same orientation. AnyBody tries to take one so it is always a continuous
function, but this could cause problems with external data, I guess.
Secondly, the mathematics contains a singularity around zero. We have tried
to handle it by special treatment of this orientation though and so far it
seems to be fine. It is use internally in some of the standard joints such
as the revolute joint, I believe.
[Non-text portions of this message have been removed]
[Non-text portions of this message have been removed]
[Non-text portions of this message have been removed]
[Non-text portions of this message have been removed]
[Non-text portions of this message have been removed]
[Non-text portions of this message have been removed]