Calculate difference in Euler angle

3 次查看(过去 30 天)
Sharah
Sharah 2016-9-27
编辑: Guillaume 2016-9-27
Hello. I have a set of Euler data (yaw, pitch roll). I need to calculate the relative differences in the, for example, the yaw angle from the start position.
I have a problem in calculating this since, say, the yaw angle will go from 0 to 360 degree. If the initial position is at 356 degree, I am not sure how to handle the data when the movement yaws to 1 again. If I use x-initialPosition metric, i will get 1-356, which is not the answer. Any suggestion?
This also applies to pitch that goes from 180 to -180

回答(1 个)

Guillaume
Guillaume 2016-9-27
编辑:Guillaume 2016-9-27
mod(1-359, 360)
For pitch:
mod(pitch2 - pitch1 + 180, 360) - 180
  4 个评论
Sharah
Sharah 2016-9-27
no, i mean, the range of the yaw is 0 to 360. so if that start PointStart = 357, and Point2 = 3; the mod(3-357, 360) would work, which is 6.
however, let say the object rotates to the left, and Point3 is now = 351. instead of mod(351-357, 360) giving -6, the answer is now -354.
I'd like to find a way that can calculate these angle automatically without checking if they are negative or positive
Guillaume
Guillaume 2016-9-27
编辑:Guillaume 2016-9-27
mod(351-387, 360) is 354 not -354. Note that -6 and 354 are the same angles (modulo 360).
As demonstrated (twice now), you perform you difference as usual. If you want to display it in the range [0,360[ you use
mod(difference, 360)
If you want to display it in the range [-180, 180[ you use
mod(difference + 180, 360) - 180
This is basic modular arithmetic

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by