Прямо!

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем Егор, 9 мар 2014.

  1. Егор

    Егор Нерд

    Как заставить miniQ ехать ПРЯМО! Уже весь измучился, кружится как юла, постоянно на правую сторону
     
  2. Трю

    Трю Нерд

    Прямолинейная езда - это камень преткновения для всех робототехников :)

    Факторов влияющих на неравномерность несколько:
    1) разные двигатели (то есть теоретически они одинаковы, но жизнь показывает, что это не так)
    2) разные редукторы(здесь имеет смысл врубить на полную мощность и дать "притереться" минут 10)
    3) разные транзисторы Н-моста (и тут может быть веселая ситуация, когда один из двигателей едет вперед быстрее чем другой, а назад - наоборот)
    4) разная зависимость работы транзисторов Н-моста от напряжения питания (напряжение питания меняет всё кардинально!)
    5) моторы по-разному стартуют и тормозят (если нет активного торможения) (старт вероятно связан с тем положением в котором остановился мотор)

    В простейшем случае можно подобрать соотношение значения PWM которое подается на один двигатель и на другой.

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

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

    Егор Нерд

    Спасибо, содержательно) С ШИМ я играться уже пробовал, проблема в том что он каждый раз по разному левое колесо тормозит. Не угадаешь. Похоже энкодеры это единственный выход
     
  4. Zazila

    Zazila Нерд

    я думаю вам поможет акселерометр в центре тяжести робота (либо между ведущими колесами если не полный привод) Боковой канал будет чуять центростремительное ускорение так же как это используется в системах курсовой устойчивости авто. Так что если поиграться с алгоритмом управления колесами по данным акселерометра - все будет ок
     
    Егор нравится это.
  5. Егор

    Егор Нерд

    Может и так получится, о таком варианте не думал если честно
     
  6. Трю

    Трю Нерд

    Как услышу офффигенную идею - так сразу хочется воскликнуть "проект в студию!". Лучше реализованный в железе.
     
  7. Zazila

    Zazila Нерд

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

    Robot Нерд

    Существует простейший способ:
    Уменьшать скорость более быстрого двигателя пока робот не поедет по прямой, запомнить разницу и везде подстовлять её
     
  9. b707

    b707 Гуру

    простейший не значит "хороший". Я даже не уверен, что этот способ рабочий. Разница в тяге зависит не только от мотора, но и напряжения батарей, сопротивления качению, уклона и тд. Простейшая поправка - крайне ненадежный метод.
    ИМХО, нужно контролировать отклонение от прямой прямо в движении и подстраивать разнмицу программно каждые N миллисекунд. Например, как выше написали - акселерометром.
     
    Mitrandir нравится это.