Дифференциальное программирование для автомобиля

8

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

Я проверил в интернете физику, но, похоже, она учитывает больше информации, чем я могу предоставить в своей игре (например, влияние гравитации на автомобиль). В настоящее время я использую следующую логику для определения дифференциальных скоростей колес. Я постараюсь объяснить как можно яснее и проще, поэтому я прошу прощения, если это сбивает с толку или слишком упрощает, это сбивает меня с толку!

Вот что я делаю: я делю свою текущую степень поворота на максимальную величину поворота, чтобы получить процент, затем беру этот процент и применяю его к проценту модификатора (всего лишь процент, который я составил и настраивал, чтобы уменьшить пройденное число). на дифференциал, не уверен, что это должно быть на самом деле. Частота вращения двигателя? Скорость?). Затем в моем дифференциале я проверяю, поворачивает ли автомобиль влево или вправо, снижает скорость на одной стороне на x% и увеличивает скорость на другой стороне на те же x%

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

У меня есть доступ к скорости двигателя, трансмиссии, скорости оси каждого колеса, крутящему моменту, скорости транспортного средства и т. Д., Но я не уверен, что из этого я должен учитывать при выполнении этой формулы.

Может быть, я слишком усложняю или, может быть, слишком упрощаю. Любая помощь в понимании этого было бы здорово!

Mungoid
источник
Какие у вас были проблемы с реальной физикой? Потому что гравитацию легко получить (это константа, которую нужно просто настроить, то же самое касается массы транспортного средства и т. Д.)
Рой Т.
Ну, на самом деле никаких серьезных проблем с реальной физикой нет, но поскольку я не очень много знаю о дифференциалах и (реальной) механике, физика пошла мне на ум.
Мунгоид

Ответы:

9

Я действительно думаю, что вы не должны делать это таким образом, и что вы должны больше смотреть на реальную физику (см. Мой комментарий). Однако я могу сказать вам, почему ваш текущий подход не работает. (Слишком долго для комментариев, поэтому я просто опубликую это как ответ)

Давайте сначала исследуем, что происходит (вы, вероятно, уже сделали это сами).

Поворотный момент

Расположение в основном как на картинке выше, но давайте немного упростим цифры:

Допустим, ширина машины С составляет 2 метра, а минимальный радиус поворота - 5 метров. Теперь я держусь полностью налево. Переднее левое колесо теперь следует по кругу диаметром 5 метров. Переднее правое колесо теперь следует по кругу диаметром 7 метров. Пройдя полный круг, вы пройдете левым колесом 10 * пи метров. Правое колесо проезжает 14 * пи метров. Теперь говорят , что колеса C имеют одинаковый размер, и что окружности колес составляет 0,5 * м пи (да те большие колеса, но никто не сказал , что мы не смогли смоделировать грузовик монстра!) Дифференциал будет убедитесь, что на каждые 20 оборотов левого колеса правое колесо вращается 28 раз, чтобы ни одно из колес не проскользнуло.

Итак, теперь вы можете сказать, что diff-% должен быть изменен, скажем, для полного левого он должен дифференцироваться + 40%, и давайте просто переместим это в полный вправо -40%, и тогда мы золотые?

К сожалению, как вы видели, это не работает. Давайте найдем общую формулу для дифференциала в этом автомобиле. Здесь х - желаемый поворотный круг.

left wheel distance: x*pi meters
right wheel distance: (x+2)*pi meters:
left wheel rotations: x*4
right wheel rotations: (x+2)*4  

Я бы сказал, что diff должен работать с дробью ((x + 2) * 4 / (x * 4)) [*]. (Умножить на 100%, если вы хотите это в процентах) .

Дифференциал

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

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

[*]: что мы можем упростить: (x + 2) * 4 / (x * 4) => (x + 2) / x

Рой Т.
источник
Я не за своим рабочим компьютером, чтобы попробовать это, но у меня сильное чувство, что вы правы во всех отношениях! И вы не слишком далеки от этой штуки с монстрами. Это кусок тяжелой техники для симулятора, поэтому колеса имеют диаметр около 2 метров. Первоначально я думал, что смогу «обмануть», так как мне просто нужно держать колеса на земле, но я думаю, что это сделает это намного более точным. Завтра я наберу номера и сообщу. Спасибо!
Мунгоид
Да, ваш пост указал мне в правильном направлении. Я попробовал свою собственную версию математики, которую вы дали, но, очевидно, я делал это немного неправильно. Спасибо за руководство!
Мунгоид