【问题标题】:Not getting direction value in my velocity calculation在我的速度计算中没有得到方向值
【发布时间】:2019-11-15 10:08:57
【问题描述】:

我正在建立一个地面站来跟踪我们未来的立方体卫星,其中一件事是计算它经过头顶时的频率多普勒频移。为了测试这一点,我们正在使用 ISS TLE。我正在使用 Skyfield,它非常有帮助,但我遇到了一个我似乎无法弄清楚的简单问题。我需要物体的速度,这很容易获得,但我还需要相对于我的位置的方向。我假设它是速度矢量的一部分,因为速度既是大小又是方向。也许我在代码中遗漏了一些显而易见的东西,目前修复它的方式是在两个时间点获取距离,并确定它是关闭还是疏远。然后我简单地将向量乘以 -1(如果它接近),否则乘以 1。我认为可以使用 .velocity 函数来处理类似的事情,但似乎并非如此。

diff = satObsDiff.at(ts_now)
diff1 = satObsDiff.at(ts_next)

velocity = diff.speed().km_per_s * 1000 #converts km to m
print("Velocity: ")
print(velocity)
adjusted_velocity = velocity

range1 = diff.distance().km
range2 = diff1.distance().km
change = (range1 - range2)*1000

direction = 1

if change >= 0:
    direction = 1
else:
    direction = -1

observed_freq = ((C/(C + (adjusted_velocity * direction))) * emitted_freq)

【问题讨论】:

    标签: python skyfield


    【解决方案1】:

    如果两个向量指向相同的方向,则它们的点积为正,如果它们成直角,则为零,如果它们指向彼此,则为负。所以我怀疑你可以通过计算相对位置与速度的点积并检查它是否大于或小于零来判断从一颗后退的卫星接近:

    d = np.dot(velocity.km, diff.position.km)
    if d > 0:
       print('receding')
    else:
       print('approaching')
    

    如果你想知道范围变化的速度,你也可以折腾一些分区:

    https://stackoverflow.com/a/55226228/85360

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多