Possible to calculate yaw,pitch,roll from x,y,z magnetic field values alone?

by RS » Mon, 12 Oct 2009 19:23:54 GMT

Sponsored Links
 DD, there are a few special cases that won't work:

If mag a sensor's first axis (say x) is already pointing mag north
exactly, the mag components on the other two axis (say y,z) would be

here your x axis is not just towards north but is exactly tangential
to one of the field lines connecting south-north.

The Earth and hence the mag field *curves* being too large in
comparison to the tiny sensor, this x axis is essentially parallel to
the local field *line* and not just tangential at a point.

While you continue to point the x axis to mag north if you try to
cause a roll alone (around the x axis here), the readings won't change
in any way. Also, the y,z components would continue to remain zero.

Combine it with another sensor and you are in luck. Android does these
internally already. Further there are APIs available to remap
coordinates, get rotation matrices etc.

You'll have to read the sensor related stuff on d.android.com for



Possible to calculate yaw,pitch,roll from x,y,z magnetic field values alone?

by DD » Sun, 18 Oct 2009 20:47:20 GMT

 Thanks R.S.  I think you are talking about the special case. But for
the time being, I feel this doesn't need to be considered that much.
so may I know exactly the physics formulas (or other methods) that can
be used to calculate yaw,pitch and roll solely based on the data given
by the magnetometer.

Yeah, you mentioned to combine the mag readings with other sensors and
to use the APIs in Android. Actually, this is just the reason why I
brought this question up. I have seen the APIs that actually calculate
yaw,pitch and roll by the mag AND the accelerometer. From my
experiments, I found that yaw,pitch and roll were strongly affected by
the acceleration, for example, if you move the phone horizontally with
a very big acceleration, the screen orientation is probably changed,
meaning the yaw,pitch and roll changes much as the accelerations

This is why I want to see if I can use the mag alone to get the
orientation(yaw, pitch, roll) so that the orientation readings are
independent on the accelerations.

Thank you very much.


Sponsored Links

Possible to calculate yaw,pitch,roll from x,y,z magnetic field values alone?

by Scott » Tue, 20 Oct 2009 01:42:24 GMT

 I'm afraid it's not mathematically possible to generate a full
attitude solution from a single vector observation (mag vector,
gravity vector, etc..). There simply isn't enough information there.
It doesn't matter if you're not pointed along the mag field, you will
still only get a partial attitude solution in the shape of a cone
centered around the mag field. This has been an issue in the aerospace
industry for a while now, and usually the problem is solved by
combining information from two or more sensors. In this case, the
Android API is probably using the mag field and what it assumes is a
gravity vector from the accelerometer (that's why the solution is
affected by external accelerations).

If you're interested in how to generate an attitude solution from two
vector observations, you should look up the TRIAD algorithm for
attitude determination.



Possible to calculate yaw,pitch,roll from x,y,z magnetic field values alone?

by DD » Sat, 24 Oct 2009 16:44:20 GMT

 Thanks Scott. Yes, you are right. the Android API is calculating the
orientation by using the mag and gravity(acceleration), and this is
why the orientation is affected (strongly affected) by the
acceleration. So just wondering if you have any idea to get the pure
acceleration data without gravity involved?meaning at any time the
phone only shows the net moving acceleration of the phone without G
added on. Thank you!


Other Threads

1. Accessing a server through wifi

I want to access a server from my G1 phone which is in the same wifi
network. Using other nodes in the network, I found out that I am able
to ping the server but I am unable to access the web page. Please help

 - Naan


2. Issues with debugging using Ganymede Eclipse

This page is about setting up eclispe to do Platform development.

If you are using the SDK, please refer to the documentation on

On Fri, Apr 24, 2009 at 2:01 AM, Explore Android

Xavier Ducrohet
Android Developer Tools Engineer
Google Inc.


3. Voice Recognition in API demos crashing

4. android sqlite question

5. Blank screen when switching activities

6. Framerate killed by onTouchEvent spam

7. Samsung launches I7500, The Co mpany鈥檚 First Android-Powered Mobile Phone