qt - 如何通过给定的一组位置向量获得绕 2 个轴的旋转速度

标签 qt matlab math vector 3d

我有一大堆标准化位置向量。矢量集由特殊的测量设备记录,同时该设备绕两个轴旋转。每个位置矢量也是定义时间的 X、Y 和 Z 重力值的组合。我的任务是获取两个轴的旋转速度。

测量设备的坐标系相对于机器坐标系绕 z 轴旋转约 45°。

测量设备的 z 轴与机器的 z 轴平行。 coordinate systems

我尝试将笛卡尔坐标转换为球坐标。为此,我使用了 Qt-Framework 和 MATLAB。结果我得到了 2 个角度和一个半径。在我看来,半径并不重要。但这两个角度不适合我的问题,因为我需要机器绕机器 Z 轴和 X 轴的旋转速度。此时,重要的是要知道旋转速度非常慢,以至于重力矢量始终以 1g 指向地面。测量设备的 X、Y 和 Z 值表示受重力矢量影响的方向。例如,如果 Z 轴指向地面,则该值接近 1。如果该轴平行于地面(也与重力矢量正交),则该值接近零。

如果机器只绕Z轴旋转,我可以很容易地得到一圈的周期。 Y 值和 X 值随时间变化的图是正弦或余弦。所以我可以通过寻找零点、最大值或最小值来得到周期。

绕 z 轴旋转 rotation around the machines z-axis

但是这个解决方案仅适用于 1 轴问题。如果机器绕 X 轴额外旋转,则测量的 X、Y 和 Z 值是两次旋转的组合。我不知道如何解决我的问题。

绕机器z轴和x轴旋转:55秒后开始旋转! rotation around the machines z-axis and x-axis

另一个想法是逆运动学,但为此我需要机器的尺寸和测量设备安装的确切点。

绕 1 轴旋转 rotation around 1 axis

Dataset rotation around 1 axis

绕 2 轴旋转 rotation around 2 axis

Dataset rotation around 2 axes

我该如何开始或继续?

我尝试用这张图片来可视化旋转过程。 rotational process

最佳答案

我试图将其作为评论添加,但有长度限制。因此,一些澄清问题/中间结论:

谢谢你的数字!因此,从上面的第四张图(显示 2 轴 x-y-z 正弦波)来看,从您的机器图来看,就像您有三个坐标系:第一个是地球坐标系,称为 x1,y1,z1,如您将其显示在“机器图片”图中。第二个框架称为 x2,y2,z2 绕 x1 和 x2 轴旋转(它们保持平行)。第三个坐标系 x3,y3,z3 是绕 z2 (=z3) 轴旋转的坐标系。您的加速度计固定在 x3,y3,z3 坐标系中。

您的单轴数据集的 z3=z2 与地球 z1 对齐,并围绕 z 旋转,因此 x3 和 y3 围绕正交正弦波中的采样重力旋转。

在你的第二个数据集中,外部万向节 x1=x2 以恒定速率旋转,在 z 加速度计上产生完美的正弦波,而内部 z3=z2 万向节也可能以恒定速率旋转,但现在x3 和 y3 上的加速度计的振幅通过乘以 x1/x2 旋转角的余弦进行调制。

这一切听起来正确吗?

在根据位置测量估计速度时,我们始终需要知道的另一件事是系统如何随时间变化的某种模型或概念:我们可以假设一些最大角加速度吗?或者我们可以假设一旦旋转达到一定速度,它们就会保持不变吗?当 x1/x2 角度经过 +/-pi/2 弧度时,尝试缝合 z2/z3 万向节角度时,这一点变得尤为重要,此时 z2/z3 角度暂时无法观察到,因为 x 和 y 加速度计是与重力矢量正交,只会显示噪音。它还将帮助我们决定 x1/x2 万向节是否上升到 pi/2 然后再次下降,或者继续沿同一方向旋转到 > pi/2,因为这两种运动在 z 加速度计上看起来相同,并且那里无法观察到 z2/z3 角度。

关于qt - 如何通过给定的一组位置向量获得绕 2 个轴的旋转速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20531489/

相关文章:

c++ - Qt桌面着色器编译问题

c++ - 使用QPixmap的Qt内存泄漏

matlab - 具有彩色组和组内不同标记的散点图

arrays - 如何知道向量中是否存在连续增加的五个值

javascript - 确定更大的数字并划分

ruby - 如何编写偶数除以最大相等奇数的代码

Qt 无法设置几何图形

qt - Ubuntu 14.04 上带有 QT 的 OpenCV 意外完成

image - 为什么 imagesc 会改变颜色图 (MATLAB)

在矩阵中找到最大同行正方形的算法