Лего движение по линии с 2 датчиками

Обновлено: 04.05.2024

Рассмотрим простейший алгоритм движения по черной линии на одном датчике цвета на EV3.

Данный алгоритм является самым медленным, но самым стабильным.

Робот будет двигаться не строго по черной линии, а по ее границе, подворачивая то влево, то вправо и постепенно перемещаясь вперед.

Алгоритм очень простой: если датчик видит черный цвет, то робот поворачивает в одну сторону, если белый — в другую.

Реализация в среде Lego Mindstorms EV3

В обоих блоках движения выбираем режим «включить». Переключатель настраиваем на датчик цвета — измерение — цвет. В нижней части не забудьте изменить «нет цвета» на белый.

Также, необходимо правильно указать все порты.

Не забудьте добавить цикл, без него робот никуда не поедет.

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

Алгоритм:

Действие алгоритма основано на том, что в зависимости от степени перекрытия, пучка подсветки датчика чёрной линией, возвращаемые датчиком показания градиентно варьируются. Робот сохраняет положение датчика света на границе чёрной линии. Преобразовывая входные данные от датчика света, система управления формирует значение скорости поворота робота.

Так как на реальной траектории датчик формирует значения во всём своём рабочем диапазоне (0-100), то значением к которому стремиться робот, выбрано 50. В этом случае значения передаваемые функции поворота формируются в диапазоне -50 - 50, но этих значений недостаточно для крутого поворота траектории. По этому следует расширить диапазон в полтора раза до -75 - 75

Более устойчиво алгоритм работает, если использовать моторы с управлением скоростью –100. 100.

В этом случае есть возможность отрегулировать плавность поворота в соответствии с кривизной линии

Так как на реальной траектории датчик формирует значения во всём своём рабочем диапазоне (0-100), то значением к которому стремиться робот, выбрано 50. В этом случае значения передаваемые функции поворота формируются в диапазоне -50 - 50, но этих значений недостаточно для крутого поворота траектории. По этому следует расширить диапазон в полтора раза до -75 - 75

На данном уроке мы разберем движение робота Ev3 вдоль черной линии.

Напишем программу для движения робота по черной линии для Lego Ev3. Познакомимся с логическими операциями Ev3.

Для того, чтобы робот Ev3 двигался постоянно вдоль черной линии в программе используется бесконечный цикл в нем происходит считывание данных с датчиков цвета, освещенности, анализ данных датчиков и соответсвующие маневры робота. В нашем роботе левый датчик цвета подключен к порту 3, правый датчик подсоединен к порту 1. Левый мотор подключен к порту В, правый мотор к порту А.

На рисунке показан блок считывания данных с датчика освещенности.


Если значение меньше 5 (знак сравнения 4) , то значит датчиком мы заехали на черную линию.

Если значение больше 5 (знак сравнения 2), то заехали на белое поле

Алгоритм движения по черной линии для робота с двумя датчиками следующий.

Если робот заехал левым датчиком на черную линию, то робот сворачивает (съезжает с линии) налево. Если робот заехал правым датчиком на черную линию, то поворачивает направо. Если обоими датчиками видит белое поле, то робот едет вперёд. Если обоими датчиками он видит чёрную линию, то это перекрёсток, он едет вперёд и съезжает с перекрестка.

Чтобы обрабатывать одновременно данные с нескольких датчиков, необходимо использовать логические операции. Для того чтобы выполнялись оба условия, используется логическая операция И.


Напишем программу для движения вдоль черной линии для робота Ev3.

У нашего робота левый датчик освещенности подключен к порту 3, правый датчик освещенности подключен к порту 1.

1 действие. Считываем данные с датчиков освещенности заходим в яркость, отраженного света Записываем их в логический блок И ( Красный блок)


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



3 действие. В условие ставим поворот налево. Смотри урок 1 Повороты Ev3

движение робота по черной линии налево

4 Действие. Повторяем считывание датчиков освещенности и логический блок

Значение датчика освещенности 1 становится меньше 5, а датчика с портом 3 больше 5. В этом случае чёрную линию видит правый датчик. Поворот делается направо, поэтому правый мотор (порт А) вращается назад , мощность со знаком минус, а левый мотор (порт B) вращается вперед. Осуществляется поворот направо. В цикле движения выставите не очень большое время порядка 0,1 секунды, чтобы робот реагировал быстрее на изменение траектории.


движение по черной линии

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

движение по черной линии

6 действие. . Если оба датчика освещенности фиксируют чёрную линию, то движемся вперёд. Считывание датчиков, для обоих датчиков ставим меньше 5, для обоих моторов выставляем движение вперед

движение по черной линии

Для изменения скорости движения по черной линии необходимо поменять мощность моторов при движении вперед. Если траектория будет слишком крута и робот будет слетать с черной линии, необходимо уменьшить мощность при движении вперед и увеличить мощность при поворотах.

Вернуться к содержанию Перейти к уроку Движение по линии до перекрестка

Инструкция для сборки робота ev3 для движения по черной линии

Достаточно простая и эффективная схема робота lego ev3 для движения по черной линии с двумя датчиками. В данной схеме лего представлен переднеприводный робот с большими колесами, это обеспечивает хорошую манёвренность, которая необходима при движении робота ev3 вдоль черной линии. Программа для движения робота ev3 по черной линии
Инструкция сборки робота Lego для движения по черной линии

детали для крепления мотора к роботу ev3

1

крепление мотора ev3

2

крепление мотора ev3

3

крепление датчика к роботу ev3

4

крепление мотора

5

крепление мотора к блоку ev3

6

Анологично собирается правая сторона робота ev3 для движения по черной линии

крепление к блоку ev3 моторов

7

Датчики цвета можно разместить и по другому прикрепив их внутри


8


9

крепление балки

10

Крепим большие колеса через втулку

крепление колес к блоку ev3

11

Детали для крпеления заднего колеса


12

крепление маленького колеса у ev3

13

крепление маленького колеса к ev3

14.

Датчик цвета можно опустить на одно деление для лучшей контрастности


15

Если есть в наборе шаровое колесо , то можно использовать его в качестве заднего колеса

детали для крепления шарового колеса

16


17


18

Крепим провода датчики к портам 1 и 3 мотора к портам A и B


19

Полезно почитать по теме движение по черной линии
Движение по черной линии Ev3
Циклические алгоритмы ev3

Алгоритм линейного пропорционального регулятора с двумя датчиками

Для более надежного движения по черной линии робота ev3 используется пропорциональный регулятор с двумя датчиками освещенности. Движение с двумя датчиками освещенности по черной линии с помощью линейного регулятора осуществляется по следующему алгоритму. В бесконечном цикле считываются показания левого и правого датчика освещенности, рассчитывается разность между показаниями правого и левого датчиков. Разность показаний датчиков освещенности умножается на коэффициент усиления. Чем больше эта разность, тем больше мы заехали левым датчиком на черную линию и соответственно нужно сильнее повернуть направо, чтобы съехать с черной линии. И наоборот если отклонение отрицательное то робот заехал правым датчиком на черную линию и соответственно нужно сильнее повернуть налево, чтобы съехать с черной линии
Формулы для определения мощности моторов ev3 линейного пропорционального регулятора с двумя датчиками
Мощность правого мотора = Мощность вперед – разность показаний правого и левого датчика*коэффициент усиления
Мощность левого мотора = Мощность вперед + разность показаний правого и левого датчика *коэффициент усиления
разность показаний правого и левого датчика = данные правого датчика цвета- данные левого датчика цвета
Коэффициент усиления линейного регулятора при движении по линии и скорость движения вперед задаются в программе для робота ev3 исходя из крутизны траектории. Чем круче повороты на траектории, тем больше должен быть коэффициент усиления линейного регулятора

Программа для робота ev3 для движения по черной линии линейный регулятор с двумя датчиками

Введем переменную коэффициент усиления k, переменную для движения вперед v и переменную. Вся программа пишется в бесконечном цикле.


Сначала вычисляется разность между показаниями датчиков, разность умножается на коэффициент усиления данное выражение записывается в переменную otkl. Математические вычисления осуществляются в программе ev3 с помощью блока Математика с помощью расширенного режима ADV .

Скорость левого мотора рассчитывается по формуле к скорости вперед прибавляется отклонение

Скорость правого мотора рассчитывается по формуле от скорости вперед отнимается отклонение


После расчета мощностей робот двигается вперед определенное количество времени в цикле

Изменяя параметры линейного регулятора можно добиться устойчивого движения робота вдоль черной линии

Доброго времени суток!
Я очень благодарен за вашу работу и за вклад развитие в сфере робототехники в стране.
Можете подсказать в этом примере как и в предыдущим все поместим в общий бесконечный цикл?
или на разделитель делим? Заранее спасибо за ответ!

Добрый день! В начале программы записываются значения в переменные k и vp, далее все остальные блоки записываются в бесконечный цикл

На данном уроке мы разберем движение робота Ev3 вдоль черной линии.

Напишем программу для движения робота по черной линии для Lego Ev3. Познакомимся с логическими операциями Ev3.

Для того, чтобы робот Ev3 двигался постоянно вдоль черной линии в программе используется бесконечный цикл в нем происходит считывание данных с датчиков цвета, освещенности, анализ данных датчиков и сооствесвующие маневры робота. В нашем роботе левый датчик цвета подключен к порту 3, правый датчик подсоединен к порту 1. Левый мотор подключен к порту В, правый мотор к порту А.

На рисунке показан блок считывания данных с датчика освещенности.


Если значение меньше 5 (знак сравнения 4) , то значит датчиком мы заехали на черную линию.

Если значение больше 5 (знак сравнения 2), то заехали на белое поле

Алгоритм движения по черной линии для робота с двумя датчиками следующий.

Если робот заехал левым датчиком на черную линию, то робот сворачивает (съезжает с линии) налево. Если робот заехал правым датчиком на черную линию, то поворачивает направо. Если обоими датчиками видит белое поле, то робот едет вперёд. Если обоими датчиками он видит чёрную линию, то это перекрёсток, он едет вперёд и съезжает с перекрестка.

Чтобы обрабатывать одновременно данные с нескольких датчиков, необходимо использовать логические операции. Для того чтобы выполнялись оба условия, используется логическая операция И.


Напишем программу для движения вдоль черной линии для робота Ev3.

У нашего робота левый датчик освещенности подключен к порту 3, правый датчик освещенности подключен к порту 1.

1 действие. Считываем данные с датчиков освещенности заходим в яркость, отраженного света Записываем их в логический блок И ( Красный блок)


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



3 действие. В условие ставим поворот налево. Смотри урок 1 Повороты Ev3

движение робота по черной линии налево

4 Действие. Повторяем считывание датчиков освещенности и логический блок

Значение датчика освещенности 1 становится меньше 5, а датчика с портом 3 больше 5. В этом случае чёрную линию видит правый датчик. Поворот делается направо, поэтому правый мотор (порт А) вращается назад , мощность со знаком минус , а левый мотор (порт B) вращается вперед. Осуществляется поврот направо. В цикле движения выставите не очень большое время порядка 0,1 секунды, чтобы робот реагировал быстрее на изменение траектории.


движение по черной линии

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

движение по черной линии

6 действие. Если оба датчика освещенности фиксируют чёрную линию, то движемся вперёд. Считывание датчиков, для обоих датчиков ставим меньше 5, для обоих моторов выставляем движение вперед

движение по черной линии

Для изменения скорости движения по черной линии необходимо поменять мощность моторов при дивжении вперед. Если траектория будет слишком крута и робот будет слетать с черной линии, необходимо уменьшить мощность при движении вперед и увеличить мощность при поворотах.

Читайте также: