Я хочу рассчитать время, необходимое для достижения target-pos из initial-pos , принимая во внимание некоторые начальные скорости.
- i: Исходное положение: 0,0 м
- т: целевое положение: 10,0 м
- a: счет: 0,3 м /с 2
- д: дек .: 0,3 м / с 2
- v: максимальная скорость: 0,5 м / с
- u: начальные скорости: [ 0,0 м / с, -0,5 м / с, 5,0 м / сс]
Сначала я вычисляю расстояние, необходимое для перемещения до максимальной скорости.
v_dist = ((v² * (a + d)) / (a * d)) / 2.0
v_dist = ((0.25 * 0.6) / 0.09) / 2.0
v_dist = ((0.15) / (0.09)) / 2.0
v_dist = 0.833333
Если мы не достигнем максимальной скорости, другими словами, если мы не пройдем расстояние, которое нам нужно пройти, чтобы достичь максимальной скорости, это всегда будет Треугольный профиль движения
Для Треугольного профиля движения Я использую следующую формулу:
t = sqrt(2.0 * abs(t-i) * ((a+d)/(a*d)))
Which results in:
t = sqrt(2.0 * abs(10.0) * ((0.3+0.3)/(0.3*0.3)))
t = sqrt(20 * (0.6/(0.09)))
t = sqrt(20 * (6.6667))
t = sqrt(133.333)
t = 11.547
К сожалению, эта формула не учитывает начальную скорость, и я не могу понятькуда вставить это.Я также испытываю трудности с наматыванием головы вокруг детали ((a+d)/(a*d))
.
Как настроить формулу так, чтобы она учитывала начальную скорость, даже если текущее направление движения противоположно тому, гдецелевая позиция?
Для Трапециевидного профиля Я использую следующую формулу:
t = (abs(t-i) - ((a * (v/a)²) /2) + ((d * (v/d)²) /2)) / v + (v/a) + (v/d)
Для этой формулы у меня та же проблема, что и для треугольной формулы.Я не понимаю, куда я положил u (начальная скорость), поэтому он обрабатывается правильно.