Python::根据IMU数据计算一个3D样条线,以便在点之间插值

2024-03-29 09:59:03 发布

您现在位置:Python中文网/ 问答频道 /正文

(场景-下面的问题)

我正在写硕士论文,正在努力写一段python代码。我有一组IMU数据,这给了我很多信息。其中一行给出了以下信息:

LocalUTC (HMS)          19:15:18.857        
Latitude (+/-D M S)     -13 23 23.30087
Longitude (+/-D M S)    -76 08 34.16626
H-MSL (m)               1170.490            #hight above sea level in meter
AccBdyX (m/s^2)         -0.801
VelBdyX (m/s)           -45.971
AccBdyY (m/s^2)         0.348
VelBdyY (m/s)           1.470
AccBdyZ (m/s^2)         -0.183
VelBdyZ (m/s)           -0.082
Roll (Deg)              0.0264490000
Pitch (Deg)             -0.0513730000
Heading (Deg)           315.1353210000

这个特定的集合(条目)也是照片拍摄的“时间戳”。这意味着我有两个文件

  1. 周期性::每5ms(->;200Hz)
  2. 基于事件::每次拍照

目前,我的申请远远不够好,也没有什么成效。但我设法建立了这些数据集的列表和一个函数,在一张照片周围给我8个“点/条目”。现在我想“找到”穿过这8个点的完美样条曲线。

然后,我将使用这个样条线和精确的曝光时间和持续时间来计算曝光时间内的移动。

(问题)

有什么提示和帮助如何建立一个给定的三维点集三维样条曲线?

我在网上查了一下,发现了不少线索。基本上我认为我必须使用“Catmull-Rom”样条线。请参阅Interpolation methods了解一些事实。

另一个提示是在一个正常的处方集中发现的

  1. 函数本身::f(t)=坐标->;(纬度,经度,H-MSL)
  2. 一阶导数::f'(t)=“速度”->;(VelBdyX,VelBdyY,VelBdyZ)
  3. 二阶导数::f''(t)=“加速度”->;(AccBdyX,AccBdyY,AccBdyZ)

这意味着(对我来说)我不需要计算样条曲线,我只需要把值放在正确的位置?!?因为f'(t)是“切线”,f'(t)是“相切”向量的长度。但我试过了。。。还有。。。好。。。如果有用的话我就不发了。;—)

所以我基本上有两个问题。。。。(对不起)

  1. (数学)3D函数会是什么样子?在
  2. (python)如何将其放入python?在

最后,我将返回一个新的n条目的数据集。这些条目表示样条曲线中间两个给定点之间的不同步长。

  • 第一次进入->曝光时间开始
  • 第二个到n-1个->;n-2个条目
  • 条目n(最后)—>;曝光时间结束

n将在5到50之间-取决于照片的速度和分辨率。

对不起,我的英语(生疏了)!如果有不清楚和/或错误的地方,请随时纠正并询问。我希望你们能帮助我


Tags: 数据函数gt信息时间条目曲线照片