Прямо!

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем Егор, 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 нравится это.
  10. Arhat109

    Arhat109 Гик

    Чтобы контролировать "прямо" нужен критерий .. то есть "датчик" который будет показывать "не прямо" и насколько "в граммах". ПИД-регулятор решает проблему в большинстве простых применений. Можно даже реализовать "самообучение" этому регулятору.
    К сожалению, энкодер - ещё не панацея как датчик. Колеса могут проскальзывать и снова будет "криво" вместо прямо.
    Гироскоп - аналогично плохо видит "медленные" уклонения. Ему может помочь "компас", но в условиях сильных и/или нестационарных полей (по хатке) тоже не всё так кучеряво.

    Движение по линии на ИК-датчиках - можно реализовать "прямо" достаточно точно, с точностью отрисовки линии. Но, это же не ваш случай, верно? :)
    Как вариант ИК-датчик и следование по "маяку" (виртуальной линии)..
     
  11. Arkad_snz

    Arkad_snz Гик

    Регулировать "прямо" внешними направляющими!? - Может сразу уж рельсы проложить?
    Давайте определимся - что такое "прямо"?
    Обычно под этим понимается равенство расстояний до неких опорных линий (бордюры проезжей части) или поверхностей (стены коридора), или до опорной линии (классика движения по линии).
    Как определим состояние "прямо", так и будем его контролировать!
    Если определим как постоянство геомагнитного азимута - берем компас, равенство расстояний - далномеры, и т.д...

    Как вариант - проще всего "прямо" - у ракеты - куда направили при старте - туда и "прямо".
    Осталось только стабилизировать основные углы (крен/тангаж/рыскание - достаточно гироскопа) - если не было отклонений по этим углам, то и отклонений от "прямо" не будет - придет куда направили..
     
    Последнее редактирование: 24 июл 2018
  12. Mitrandir

    Mitrandir Гуру

    если посмотреть на пуски ПТУР, то их "прямо" - это что-то в виде сходящейся спирали
     
  13. parovoZZ

    parovoZZ Гуру

    ПИД здесь вообще ничего не решает. ПИД хорош там, где инерционность системы известна. Да и ПИД зачем? Обычный интегратор сгодится.
     
  14. Arkad_snz

    Arkad_snz Гик

    Видимо, ПТУР идет не прямо, а на указанную мишень: Мишень перемещается - ракета ее ищет, и рыскает, а спираль, наверное, от закрутки ракеты.
    Прямо движется, например, снаряд из пушки, и то - условно - силу тяжести никто не отменял - так, что траектория снаряда не прямая, а баллистическая кривая, но прямой наводкой - можно считать, что прямая.
     
  15. Arduino_man

    Arduino_man Гик

    Лучше прямолинейную езду делать на энкодерах. Проще всего получится.
     
  16. Arkad_snz

    Arkad_snz Гик

    Господа офицеры, прошу вас учесть - кто сберег свои нервы - не спас свою честь.
    Проще - не всегда - лучше.
    Повторюсь: Предложения "делать прямо на..." без определения понятия/состояния "прямо" - не имеют смысла.
    В данном случае - "на энкодерах" решает не задачу "прямо", а задачу "проще"! - Мною освоено - хоть сейчас с закрытыми глазами не напрягаясь соберу прямоездящую тележку.
    И, плевать, что никто не знает, что такое "прямо", и доказать, что задача решена - невозможно!
     
    Arduino_man нравится это.
  17. Arduino_man

    Arduino_man Гик

    Мысли глубокие. Нравится.