On Sam, 2013-02-09 at 16:41 +0100, Cyrille Henry wrote:
Le 09/02/2013 15:39, Roman Haefeli a écrit :
I believe it is (unfortunately) not as simple as that. When you rotate with [rotateXYZ], the three axis are not always perpendicular to each other. For instance, if you set Y to 90, the X and the Z rotate around the same axis.
every rotation keep the 3 axes perpendicular. but rotateXYZ do 3 rotations, X, Y and Z, in this order.
if you rotate 90° in Y, Z axe became what use to be the X axe. so rotation in Z after a 90° rotation in Y is the same than a rotation in X before the Y rotation. that's the gimbal lock.
but after the Y rotation, a X rotation is not the same than a Z rotation.
if you don't believe me, you can try : gemhead rotate X 0 Z rotate 0 90 0 cube
X and Z are still (and will always be) perpendicular.
Ok, this makes sense to me now. Thanks.
However, the gyroscope (at least the one from Wiimote MotionPlus and most likely also the one from your phone) consists of three separate sensor which are perpendicular to each other at any time.
If I understand Fero correctly, he would like to use the sensors so he can control an object in Gem that follows exactly the orientation of his phone. I also tried that once with a Wiimote and Gem but I couldn't wrap my head around the two concepts of [rotateXYZ] and the gyro sensors.
gyro sensors give rotation speed. not absolute rotation.
Yeah, right. But you can add the values up to get rotation (of course, it's always rotation relative to itself, which will obviously drift from reality over time).
in theory (with infinite acurate sensors, no drift etc), you have to do a feedback loop (using gemlist_info), so that the current rotation is modify by the sensors value. (rotation did not sums up)
...parsing solution .... beep...... stack overflow (in my head)!
You mean you add each increment (gyro measurement) to the rotation separately, then get the orientation with gem_list info, add the next increment to the orientation, get orientation again, add increment etc? Can you cast that into a little Gem example patch, if it is not too much trouble?
Roman