Формула для управления движением танкообразного транспортного средства? - PullRequest
5 голосов
/ 24 сентября 2008

Кто-нибудь знает формулу, используемую для управления движением простого танкообразного транспортного средства?

Чтобы «направить» его, вам нужно изменить силу, приложенную левым и правым «колесами». Например. 1 единица силы на обоих колесах заставляет его двигаться вперед. -1 единица силы на обоих колесах заставляет его двигаться назад. Приложите большее усилие к одному колесу, чем к другому, и оно поворачивается.

Как бы вы рассчитали величину силы, необходимой на оба колеса, чтобы повернуть бак на определенное количество градусов в любом случае?

Или я неправильно об этом думаю?

редактирование: Как упоминал Уильям Келлер, я упустил скорость танка. Предположим, что 1 единица силы на обоих колесах перемещает танк вперед на 1 единицу в секунду.

Для тех, кто заинтересован, я только что нашел эту ветку на gamedev.net: http://66.102.9.104/search?q=cache:wSn5t58ACJwJ:www.gamedev.net/community/forums/topic.asp%3Ftopic_id%3D407491+tank+track+radius+velocity&hl=en&ct=clnk&cd=1&gl=za&client=firefox-a

Другая тема: http://www.physicsforums.com/showthread.php?t=220317

Оказывается, ключом к нахождению формулы было просто знание правильной терминологии ("мини-погрузчик"): P

Ответы [ 10 ]

4 голосов
/ 24 сентября 2008

Вы думаете об этом неправильно. Дело в том, что различное количество силы на гусеницах не будет поворачивать танк на определенное количество градусов. Скорее, различная сила изменит СКОРОСТЬ поворота.

Соотношение между силой и скоростью поворота будет зависеть от механики танка. Чем шире танк, тем медленнее он поворачивается. Чем быстрее танк, тем быстрее он поворачивается.

P.S. Еще несколько мыслей по этому поводу: я не думаю, что основанный на физике ответ возможен без использования реального танка. Некоторые из ответов касаются физики поворота, но у всех них есть неявное предположение, что система обладает бесконечной мощью. Может ли танк реально работать при 1, -1? И может ли он достичь этой скорости мгновенно - ускорение также применимо к поворотам.

Наконец, протекторы имеют длину и ширину. Это означает, что вы получите некоторое боковое проскальзывание протекторов в любой ситуации разворота, чем быстрее поворот, тем больше потребуется такое проскальзывание. Это приведет к сгоранию энергии при резком повороте, даже если двигатель имеет мощность, позволяющую сделать оборот 1, -1, он не будет вращаться так быстро, как это было бы из-за потерь на трение.

3 голосов
/ 24 августа 2016

Для транспортного средства с бортовым поворотом, которому требуется повернуть в радиусе «r» с заданной скоростью «Si» внутреннего колеса / колеи, внешняя колея должна двигаться со скоростью «Так»:

So = Si * ((r+d)/r)

Детали:

В системе рулевого управления поворот выполняется, когда внешние колеса / гусеницы перемещаются на большее расстояние, чем внутренние колеса / гусеницы.

Кроме того, дополнительное пройденное расстояние завершается в то же время, что и внутренняя колея, а это означает, что внешние колеса / колея должны двигаться быстрее.

Окружность окружности, обозначенная "внутренней" дорожкой:

c1 = 2*PI*r
'r' is radius of circle origin to track/wheel

Окружность окружности, описанная "внешней" дорожкой:

c2 = 2*PI*(r+d)
'r' is radius of circle origin to inner track/wheel
'd' is the distance between the Inner and Outer wheels/track.

Кроме того, c2 = X * c1, что говорит о том, что c2 пропорционально больше, чем c1

X = c2 / c1
X = 2*PI*(r+d) / 2*PI*r
X = (r+d)/r

Таким образом, для транспортного средства с бортовым поворотом, которое требуется для поворота в радиусе «r» с заданной скоростью «s» внутреннего колеса / гусеницы, внешняя гусеница должна двигаться в:

So = Si * ((r+d)/r)

Где:

'So' = Speed of outer track
'Si' = Speed of inner track
'r'  = turn radius from inner track
'd'  = distance between vehicle tracks.


               ********* <---------------- Outer Track
           ****    |    ****                     
        **         |<--------**----------- 'd' Distance between tracks
       *        *******<-------*---------- Inner Track
      *      ***   ^   ***      *  
     *      *      |<-----*------*-------- 'r' Radius of Turn
     *     *       |       *     * 
     *     *       O       *     * 
     *     *               *     * 
     *      *             *      * 
      *      ***       ***      *  
       *        *******        *   
        **                   **    
           ****         ****       
               *********           
2 голосов
/ 24 сентября 2008
Change in angle (in radians/sec) = (l-r)/(radius between treads)
Velocity = l+r

Представьте, что у вас есть деревянный столб между двумя руками, и вы хотите рассчитать, сколько он вращается, в зависимости от того, насколько сильно и как сильно нажимают ваши руки - вы хотите выяснить:

сколько поверхностного расстояния на полюсе вы покрываете в секунду -> сколько оборотов в секунду это -> сколько радиан в секунду (то есть умножение на 2pi)

1 голос
/ 24 сентября 2008

Вот как я могу атаковать проблему с танком.

Центр танка, вероятно, будет двигаться со средней скоростью правой и левой гусениц. В то же время танк будет вращаться по часовой стрелке вокруг своего центра на ([скорость левого пути] * - [скорость правого пути]) / [ширина].

Это должно дать вам скорость и вектор направления.

Отказ от ответственности: я не проверял это ...

1 голос
/ 24 сентября 2008

Хорошо, имейте в виду, что вы также говорите о продолжительности здесь. Вам необходимо выяснить, какие силы принимают во внимание скорость, с которой танк поворачивает со скоростью (1, -1).

Т.е., если танку потребуется одна секунда, чтобы вращаться на 360˚ в (1, -1), и вы хотите вращать 180˚ в одну секунду, (.5, -.5) сделают трюк. Если вы хотите вращать одинаковое количество за полсекунды, то (1, -1) сработает.

Все это еще более усложняется, если вы используете abs (lrate)! = Abs (rrate), и в этом случае вам, вероятно, понадобится вырвать карандаш!

0 голосов
/ 24 сентября 2008

Я думаю, что все должны также принять во внимание тот факт, что танки могут вращаться по кругу с нулевым радиусом: применяя одинаковую скорость на каждой дорожке, но в противоположных направлениях, танки могут включать десять центов.

0 голосов
/ 24 сентября 2008

Вы можете посмотреть на это, сказав: каждая дорожка описывает круг. В случае, когда одна дорожка поворачивается (скажем, налево), а другая - нет, то направление будет зависеть от того, как долго и как далеко повернуты левые дорожки.

Это расстояние будет скорость треков х время.

Теперь нарисуйте треугольник с этим расстоянием и колесной базой, а также некоторые уравнения и приближения sin и cos, и вы можете получить приближенное уравнение, например:

изменение облицовки = расстояние, пройденное гусеницами / колесной базой

Тогда вы можете добавить ускорение, чтобы быть более реалистичным: больше физики ...

Скорость не постоянна - она ​​ускоряется (и замедляется).

т. Е. В течение определенного периода времени скорость увеличивается от 0 до 0,1 ... 0,2 ... 0,3 до предела.

Конечно, с изменением скорости скорость изменения облицовки тоже меняется - немного более реалистично, чем скорость (и, следовательно, скорость изменения облицовки), которая полностью постоянна.

Другими словами, вместо управления скоростью игрок контролирует изменение скорости . Это приведет к изменению скорости от 0 ... 0,02 ... 0,06 ... 0,1 и т. Д., Когда игрок нажимает на контроллер. Аналогично для замедления, но, возможно, немного быстрее.

надеюсь, это поможет.

0 голосов
/ 24 сентября 2008

Я бы сказал, что вы думаете об этом неправильно.

Увеличение разницы в скорости между двумя ступенями не приводит к градусам поворота - они в сочетании со временем (расстояние при различной скорости) вызывают градусы поворота.

Чем больше разница в скорости протектора, тем меньше времени требуется для достижения X градусов поворота.

Итак, чтобы придумать формулу, вам нужно сделать несколько предположений. Либо поворачивайте с фиксированной скоростью, и используйте время в качестве переменной для поворота на X градусов, либо установите фиксированное количество времени для завершения поворота, а в качестве переменной используйте разницу скорости дорожки.

0 голосов
/ 24 сентября 2008

Это не вопрос силы - это зависит от разницы в скорости между двумя сторонами и от того, как долго эта разница сохраняется (также ширина резервуара, но это только постоянный параметр).

По сути, вы должны рассчитать его следующим образом:

  • Отношение скоростей между двумя сторонами такое же, как отношение радиусов.
  • Ширина резервуара - это фактическая разница между двумя расиусами (sp?).
  • Используя эти 2 числа, найдите фактические значения радиуса.
  • Умножьте скорость одной из сторон на время движения, чтобы получить пройденное расстояние.
  • Подсчитайте, какую часть полного круга он прошел, разделив его на периметр этого круга.
0 голосов
/ 24 сентября 2008

Прошло много времени с тех пор, как я начал заниматься какой-либо физикой, но я бы подумал, что приложение сил двух гусениц, движущихся в противоположных направлениях, приводит к вращающему моменту вокруг центра масс танка.

Именно этот крутящий момент приводит к угловому моменту резервуара, что является еще одним способом сказать, что резервуар начинает вращаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...