Post by Tully FooteIf you're looking for c++ methods I've started a summary at
http://www.ros.org/wiki/tf/RotationMethods The kdl and eigen methods are
not filled out yet but they will be soon.
Thanks! That's very helpful. The transformations.py script was a big
help already.
Fortunately, my GPS device (Applanix POS-LV) has excellent
documentation. From it, I was able to conclude that the device uses
what ROS calls "rzyx".
According to Wikipedia, this is a fairly standard definition for
aerospace applications: +z is down, and +y points towards the
starboard wing. They also use +x = North, +y = East, and +z = down
for the global reference frame. This is somewhat upside-down from the
"usual" robotics coordinates: local +z = up; +y = left; and global +x
= East; +y = North; +z = up.
http://en.wikipedia.org/wiki/Tait-Bryan_angles
I have not had time to write the code, yet. But, given the
information provided, it looks fairly straightforward. It is
interesting that the problem is not with the quaternions, but with the
ill-defined terms "roll, pitch and yaw". I've used them for several
years without realizing how ambiguous they were (24 different
meanings, arrgh!).
Your efforts are worthwhile, I think. I am probably not the only one
ignorant about the math of this stuff. It does not help that so many
different groups seem to have their own idiosyncratic notation and
"standards". A few clear examples can go a long way.
At some point, I want to figure out how to use the GPS error
ellipsoids to estimate the Odometry msg covariance matrices. That
looks challenging, but not strictly necessary for now. The message
interface sets the covariances to zero, as if the values were not
random variables (which they are, of course).
--
joq