通过施加扭矩来改变方向


9

假设您有一个自由漂浮在太空中的物体。您有一个希望此对象指向的矢量,以及一个表示其当前朝向的矢量。从这两个向量中,您可以获得代表方向变化的旋转(矩阵,四元数等),以使两个向量对齐。

如果您仅能够对对象施加扭矩(角速度的导数),那么一种随时间施加扭矩而又不会超出目标的过高算法是什么呢?

(在这种情况下,这是一艘太空船,它希望使用推进器自动将自己定位在行进方向上。滚动无关紧要。)


您是否正在尝试优化燃料使用(施加的总扭矩)或速度?另外,在此操作开始时,船舶是否以零角速度起航?
贾斯汀·L.2010年

好吧,优化速度将具有无限无限的加速度,而优化燃料消耗将具有几乎为零的加速度。因此,在实践中,我将使用看起来不错的折衷方案。至于起始角速度,希望我可以自然地将其包括在计算中。
Karantza 2010年

Answers:


4

可以像线性加速度的类似情况一样处理。

首先要注意的事实是:由于船舶以角速度为零开始,因此您希望船舶以角速度为零结束,这意味着速度的总变化必须等于零。

从中我们可以看到,随着时间的推移,加速度的积分必须等于零-必须有与“负加速度”一样多的“正”加速度。

因此,无论解决方案是什么,都必须限制于此属性:向前和向后等于“总”加速度。

以下是随时间变化的加速度曲线图的形状:

随时间变化的加速度图

以此来看,您的加速度可能有太多可能的形式和形状!让我们对所需的加速度形状进行一些假设,以便给出简单/简洁的答案。

为了简单回答,我将使加速度处于三种状态之一:前进,后退或零。向前和向后将具有相等的幅度,并且状态可以立即切换。(没有逐渐增加的加速度)

您可以使用以下公式找到在给定时间段内给定加速度的距离变化:

s = 0.5*a*t^2

这里最简单的解决方案是加速直到到达中点,然后减速其余部分。

我们将以P您要移动的总距离为单位:

s = P/2
P/2 = 0.5*a*t^2
P = a*t^2
t^2 = P/a
t = sqrt(P/a)

所以基本上:

  1. 在加速asqrt(P/a)时间单位(单位基于把你的单位的加速度)
  2. 在相同的时间内以相同的幅度减速

这不是唯一的解决方案。它将以最快的时间到达您的位置(2*sqrt(P/a))。但是,如果您想要更宽松的版本怎么办?

在这种情况下,您可以以1/3的速度加速,以1/3的速度滑行,然后以三分之一的速度减速。或1 / 4th,惯性滑行1/2,也减速1 / 4th。

也许您可以先加速一段固定的时间,然后再减速一段固定的时间,但是要等到到达正确的位置后再开始减速。


对于线性运动,您是非常正确的。我主要关心的是将这样的算法与物理引擎一起使用,该算法仅为我提供偏航,俯仰和侧倾控制扭矩。一旦开始旋转,这些轴就不正交了,所以我希望有更好的解决方案。但是,无论如何,您的计时方式仍然适用。
Karantza 2010年

啊; 对不起,我一定不明白你的问题。我不确定在不了解您的引擎规格的情况下是否可以做出更彻底的回答。但是,肯定有一种在恒定方向上施加恒定扭矩的方法吗?
贾斯汀·L.2010年

是的,您的答案可能尽可能接近。我通过破解四元数来解决我的特殊问题,直到获得线性算法可以应用的东西为止。谢谢!
卡兰察2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.