Quaternion rotation around only two axes.
18 次查看(过去 30 天)
显示 更早的评论
Hello all,
I am working on a problem where i am using quaternions to put meaured accelerations into the global reference frame (North-East-Down). When I rotate the acceleraion vectors by the conjugate of the quaternions it does this perfectly. However, what if i wanted to keep the Heading (the yaw, or the k component on the quaterion) the same and not rotate my accelerations about this axis as to not change the heading? How would i go about doing this? is this possible?
thank you for your input
4 个评论
James Tursa
2020-12-11
Can you post the exact code you are using currently to rotate your acceleration vector?
回答(1 个)
Amrtanshu Raj
2020-12-23
Hi,
You can convert the quaternion to euler angles and then set the yaw(z axis) to zero and then convert it back to quaternion and do the required rotations.
quat = quaternion(0,.1,.2,.3) %Sample data
ang = quat2eul(quat) %get euler angles
ang_new = ang
ang_new(1) = 0 %set yaw to zero
quat_new = quaternion(eul2quat(ang_new)) %convert it back to quaternion
Hope this helps !!
2 个评论
Amrtanshu Raj
2020-12-23
Directly getting the desired quaternion after eliminating rotation along a specific axis is not possible in Matlab. However, you can derive a set of equations using basic quaternion and vector calculations to get rotation quaternion after eliminating rotation along a specific axis.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Coordinate Transformations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!