Контролируем движение робота с помощью энкодера

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем underW, 4 июн 2015.

  1. underW

    underW Нуб

    Вот по этой ссылке: http://amperka.ru/product/miniq-chassis, к описанию товара "Двухколёсная платформа miniQ" есть вот такой абзац текста:

    Как я понимаю этот абзац:

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

    Дальше привожу ссылку номер 2: Wiki страничка с описанием сборки этого же miniQ. Изучив инструкции, я так и не увидел упоминания об энкодерах, в сборке их попросту не использовали. И тут у меня возникает вопрос:

    а почему?

    1. С точки зрения практики: насколько действительно могут отличаться параметры 2х моторов? возможно, отличия насколько минимальны, что ими можно спокойно пренебречь (например, по прохождении дистанции в 100 м, робот сдвитется с прямой линии на 0.5 см или как то так);

    2. Давайте смотреть дальше, очень интересное название товара нашел на все том же aliexpress:


    но, пожалуйста, объясните мне, где же там в наборе энкодеры??
    я там вижу просто в наборе две круглые пластинки с прорезями, но это же явно не энкодеры :)

    да и в других аналогичных наборах, никаких энкодеров я не вижу.

    Вообщем, прошу прояснить ситуацию.
     
  2. geher

    geher Гуру

    Абсолютно верно. Кроме того, может наблюдаться более сильная неравномерность при старте и остановке, в результате чего робот при проведении этих процедур будет немного поворачиваться.

    Все весьма логично. По данной ссылке описан робот, ездящий по линии. Ему энкодеры не нужны. Роль энкодера выполняет датчик линии вкупе с самой линией. Благодаря этому робот постоянно поправляет свой курс, если немного собьется.
    Собственно говоря, энкодер нужен для обратной связи, чтобы робот понял, что он едет не туда, когда "некому подсказать".
    Если робот находится под внешним управлением или имеет другую обратную связь (датчик линии, какой-либо оптический или радиоориентир), то энкодеры ему без надобности.
    Если робот исключительно автономный и полагается при движении на счисление (вычисляет свое положение по времени движения, оборотам колес и т.п.), то энкодеры ему необходимы.
    Еще энкодеры могут быть полезны при начальной настройке робота, чтобы в результате тестов максимально скомпенсировать постоянную разницу в работе моторов, что позволит минимизировать нагрузку на управляющую электронику потом (на моторы будет выдаваться разный уровень, в результате чего робот не будет постоянно "рваться" в одну сторону, вынуждая постоянно компенсировать это сползание).
    Конечно, эту подстройку можно получить и экспериментально, методом подбора.

    Это как повезет. Могут почти не отличаться, могут сильно отличаться. На 100 м в зависимости исключительно от этого самого везения покупателя робот может сместиться на несколько миллиметров или развернуться на 180 градусов.

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

    В качестве примера готовой платформы с энкодерами можно привести
    MiniQ 2WD, которая штатно комплектуется двумя энкодерами.
    http://www.electronshik.ru/card/robot-konstruktor-2wd-miniq-arduino-114993
    В магазине Амперка представлена по частям:
    http://amperka.ru/product/miniq-chassis
    http://amperka.ru/product/miniq-wheel-encoder
     
    Последнее редактирование: 4 июн 2015
    underW нравится это.
  3. underW

    underW Нуб

    спасибо Вам большое за столь детальный и действительно исчерпывающий ответ!
     
  4. andriano

    andriano Нерд

    Посмотрите видео:


    Даже невооруженным глазом видно, что на "прямолинейных" участках левое колесо робота крутится быстрее правого. Радиус, естественно, точно оценить нельзя, но можно предположить, что он составляет где-то 3-10м.
    Другими словами, и 0.5 см и 180 градусов являются слишком оптимистичными оценками. Вероятнее всего, на 100 м пути робот успеет нарезать несколько кругов.
     
  5. geher

    geher Гуру

    Мне относительно повезло. У меня на 100 м "прямолинейного" (в смысле одинаковая заданная на драйвере скорость моторов) пути на максимальной скорости отклонение составляет не больше 20 см. Больше раздражает поворот при старте.
     
  6. andriano

    andriano Нерд

    Поразительно!
    Дождусь посылку из Китая (как раз с тем роботом, что на видео), отпишусь, как он работает.
    Но вообще, по моему разумению, 20 см / 100 м - это хороший результат даже для робота с обратной связью (энкодерами).
    Даже если мы добьемся в точности одинакового количества оборота колес, у нас остается погрешность за счет:
    - различающегося размера колес,
    - проскальзывания колес,
    - разной нагрузки на колеса (мы ведь не озаботились идеальной балансировкой робота),
    - небольших смещений вправо/влево за счет гистерезиса управления,
    ...

    В принципе, есть еще гироскопы, компасы, акселерометры, которые также можно использовать для уточнения своего местоположения. Правда, и они не лишены недостатков: Механические датчики чувствительны к тряске, которая неизбежна при движении, особенно, при сравнительно жестких (не надувных) шинах и отсутствии упругих элементов подвески. Магнитный компас чувствителен к электромагнитным помехам (как бытовая техника, так и собственные электродвигатели) и к наличию поблизости значительных масс металла.
     
  7. geher

    geher Гуру

    Робот сбалансирован на весах, поверхность с хорошим сцеплением и равномерная.
    Но 20 см - это только движение, уже разогнанные двигатели.
    А вот поворот на старте добавляет к этим сантиметрам несколько метров. Переходные процессы при разгоне двигателей у меня не столь равномерны, да еще и случайны в достаточной мере, угол поворота меняется от запуска к запуску.
     
  8. Vad33

    Vad33 Капитан-оригинал

    20/(100*100) = 0.002 прямо лабораторная точность.
    т.е. 100 м идеальной лабораторной поверхности?
     
  9. geher

    geher Гуру

    С апроксимацией, естественно. Лабораторная поверхность имеет гораздо меньшие размеры.
    Просто имеем стабильное отклонение 2 мм на 1 м пути. Чистое везение. На другом комплекте двигателей результаты значительно хуже. Несколько см на метр пути.
     
  10. Vad33

    Vad33 Капитан-оригинал

    А вы уверены что будет стабильная линейная апроксимация?
    Кроме этого 2 миллиметра отклонения вы должны измерять с точностью не хуже 0.002
    Так что не все так просто. :)

    Попробуйте хотя бы на 10 метрах замерить, по идее должно быть 2 см отклонение.
    Думаю будете удивлены.
     
  11. geher

    geher Гуру

    И где я 10 м такой идеальной поверхности найду? Нереальная проверка.
    А насчет линейности апроксимации... В этом мире, конечно, ни в чем нельзя быть уверенным, но стабильность результата, по крайней мере на заряженных не менее чем на 50 % емкости аккумуляторах вроде как дает некоторую надежду на дальнейшую стабильность поведения.
    Точность... Пусть имеем точность измерения отклонения 1 мм на метре пути (в реальности лапоть заведомо в разы меньше).
    Это значит, что в худшем случае отклонение 3 мм на метр или 30 см на 100 м, что уже весьма неплохо, хотя и в целых полтора раза больше, чем заявленные мной 20.
    Короче, на 90 градусов не поворачивается - уже весьма повезло.
     
  12. andriano

    andriano Нерд

    А как проводилось измерение?
    В частности, как устанавливался угол направления движения?
    И измерялся ли реальный угол после преодоления дистанции 1 м?
    И как избавлялись от переходных процессов?
     
  13. geher

    geher Гуру

    Это был не вполне научный эксперимент, а потому на особую точность (десятый знак после запятой) не претендует.
    Фиксировалось смещение пятна лазерной указки, закрепленной на тележке на стене и положение тележки в момент фиксации пятна (благо, тележка оставляла на поверхности заметный след, видимый под определенным углом освещения, что позволяло достаточно точно фиксировать ее положение).
    Первая фиксация проводилась через несколько секунд после старта (когда переходные процессы, представлявшие из себя практически поворот на месте, заведомо завершались), когда тележка проходила с ходу отметку старта, вторая спустя некоторое время, когда тележка преодолевала отметку финиша.
    Также учитывался возможный дрейф пятна за счет отклонения оси указки от направления движения тележки (измерялось расстояние от линии между точкой пересечения старта и пятном на стене в тот момент) до параллельной ей линии, проходящей через точку пересечения финиша.
    А дальше простые геометрические вычисления.
    Могу, естественно, заблуждаться, но вроде как с учетом всех учтенных возможных погрешностей измерения (пройденное расстояние, смещение пятна на стене, расстояние от тележки до стены, погрешности вычислений) получалось, что расстояние между точкой, куда должна была прийти тележка при движении по прямой и реальной точкой пересечения финиша было около 2 мм +/- четверть мм. И так в нескольких экспериментах подряд.
     
  14. andriano

    andriano Нерд

    А как фиксировалось положение пятна в момент прохождения тележкой определенных вех?
    И при помощи датчиков: энкодера, акселерометра, гироскопа... исследования переходных процессов не проводились?
     
  15. geher

    geher Гуру

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

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

    Кстати, на качество движения влияет не только балансировка моторов, но и точность изготовления тележки. Та тележка, на которой проводились эксперименты, была очень точно сделана (не мной и, к сожалению, не моя).
    На нынешней, на которой сейчас установлены моторы, явно будет случайный уход вправо-влево, превышающий достигнутую в эксперименте точность движения, за счет того, что колеса заметно болтаются на осях. но тут уже явно не разница в моторах виновата.
     
  16. Vad33

    Vad33 Капитан-оригинал

    Получается, что проведены исследования сферического коня в вакууме на дистанции в полкорпуса.
    Очень занимательно, но к реальности очень далекое отношение. :)
     
  17. andriano

    andriano Нерд

    Насколько я понимаю, эксперименты проведены не для отчетности, а для себя. Полученные результаты устроили. Чего же еще?
    А обмен опытом полезен всегда, даже в случае явно провалившегося эксперимента. Здесь же эксперимент, хотя его результаты и вряд ли в чем-то помогут читателю (в силу фантастического везения с выбранным экземпляром), интересен методикой проведения. Например, мне показалась интересной мысль использовать лазерную указку.
    2geher: Кстати, как располагалась камера, что по снимку оказалось возможным зафиксировать и координаты тележки, и координаты пятна?
     
  18. geher

    geher Гуру

    Допустим, не сферического, а кубического. Хотя, с другой стороны, объект попроще коня будет. :)
    Целью эксперимента было проверить именно то, с чем могут справиться энкодеры - разные моторы.
    Если проводить проверку в "боевых" условиях, то на движение будет влиять огромное количество факторов, которые энкодерами никак не поправить. Например, постоянно действующий фактор - разный диаметр колес будет приводить к постоянному повороту робота, который на основе данных с энкодеров никак не скомпенсировать. Случайно действующий фактор - неровности и неравномерно скользкие места.
     
  19. geher

    geher Гуру

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