如何解决我应该如何实现 3 参数向量四元数来表示旋转?
由于单位四元数q=q0+qv(norm(q)=1)方便表示旋转,所以这种表示方式会有4个参数。能不能用单位四元数的向量部分,也就是qv来表示旋转?这将使用 3 个参数来呈现旋转。
问题1:如果有,有什么限制吗?比如单位四元数的第一个元素必须是0?
现在我有一个四轴飞行器动力学估计器,我使用 3 参数矢量四元数来表示旋转。关于我如何在Matlab中实现四元数乘法,如下所示:
function [r] = vec_quat_multiply(p,q)
%vector quaternion multiplycation
p1=p(1);p2=p(2);p3=p(3);
q1=q(1);q2=q(2);q3=q(3);
p0=sqrt(1-(p1^2+p2^2+p3^2)); q0=sqrt(1-(q1^2+q2^2+q3^2));
r=[p0q0-p1q1-p2q2-p3q3; p0q1+q0p1+p2q3-p3q2; p0q2+q0p2+p3q1-p1q3; p0q3+q0p3+p1q2-p2q1;];
r0=r(1)/norm(r); r1=r(2)/norm(r); r2=r(3)/norm(r); r3=r(4)/norm(r);
r=[real(r1);real(r2);real(r3)];
end
问题2:如果我使用上面的函数,并且随着时间的推移,由于计算精度的问题,当我计算单位四元数的第一个元素时(p0=sqrt(1−(p12+p22+p32) );q0=sqrt(1−(q12+q22+q32));用这两行来实现),有时会返回一个虚数。我该怎么办?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。