Radist » 11 янв 2012, 07:45
Из предложенных типов аккумуляторов рекомендую металлгидридные. Пишу на асемблере. Теории обычных ПИД регуляторов в сети полно, а вот именно для гоночной машинки - сам ничего не смог найти. Но форумчане помогли разобраться, там все просто. Рассказываю алгоритм ПД регулятора для лайнтрейса. Есть система координат (линейная), трасса всегда проходит через ноль. А робот (его центр) может находиться как на трассе (отклонение ноль), так и справа или слева от трассы. Для мнемонической простоты отклонения влево будем считать отрицательными, а вправо положительными. С каким-то периодом мы от датчиков получаем информацию: отклонение и знак. Нам нужно знать текущее отклонение Е1 и предыдущее отклонение Е2 (числа знаковые). Формула ПД регулятора получается такой: А = П*Е1 + Д*(Е1-Е2), где П - пропорциональный коэффициент, Д - дифференциальный коэффициент, А - разность скоростей колес (по знаку определяете какое должно крутиться на всю катушку, а какое должно крутиться медленнее). Казалось бы что это все, однако нет. Мы получили разность скоростей (причем затормаживающее колесо может в пределе на всю катушку крутиться в обратную сторону, если ваш лайнтрейсер это позволяет (а если хотите побеждать на нем, то должен позволять)), но нам надо на моторы выдать разный шим, а он со скоростью связан не линейно. То есть у вас должна быть таблица перевода скорости в параметр шим. Вот теперь все. Что делает коэффициент П? Он делает разность скоростей тем больше, чем дальше мы от линии. А что делает коэффициент Д? Он стремится увеличить разность скоростей, когда происходит уход с трассы, и уменьшаем разность скоростей когда происходит возврат на трассу. Из двух коэффициентов главный конечно П, сперва надо найти его. При малых П робот не успевает возвращаться на трассу при ее уходе, при больших дергается как сумашедший. Сперва ищем приемлимое значение П, при котором робот не теряет трассу, затем улучшаем динамику коэффициентом Д (при этом нужно уменьшать и П, поскольку работа несколько перераспределяется между коэффициентами). И еще одно пояснение, которое я сам долго не мог понять. Как так, аргумент у нас в единицах длины (мм, дискреты, попугаи), а функция выдает даже не скорость, а разность скоростей двух моторов. Мне это объясняли, но сейчас я нужных слов не найду, просто поверьте в это (или докопайтесь до истины и всем расскажите в этой ветке). Когда едем по прямой и прямо по трассе, то Е1 и Е2 равны нулю, А равно нулю, оба движка включены на всю катушку. И последний нюанс - когда происходит потеря линии (для робота это максимально возможное отклонение) - тогда разность скоростей максимальна (одно колесо полный вперед, второе полный назад). То есть разность скоростей, выдаваемых функцией, должна быть ограничена. Ну вроде основное рассказал, если что забыл или не ясно - спрашивайте.