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 -2*pi+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 = phi*u = [phi*u_x, phi*u_y, phi*u_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]