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

Жаропонижающие средства для детей назначаются педиатром. Но бывают ситуации неотложной помощи при лихорадке, когда ребенку нужно дать лекарство немедленно. Тогда родители берут на себя ответственность и применяют жаропонижающие препараты. Что разрешено давать детям грудного возраста? Чем можно сбить температуру у детей постарше? Какие лекарства самые безопасные?

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

Человек видит черную линию и ее четкую границу. Датчик освещенности работает несколько иначе.

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

Во-первых, введем понятие “Идеальная точка траектории”.

Показания датчика освещенности колеблются в диапазоне от 20 до 80, чаще всего на белом цвете показания равны примерно 65, на черном порядка 40.

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

Здесь принципиально расположение точки – между белым и черным. Задать ее точно на белом или черном не получится по математическим причинам, почему – будет ясно позднее.

Эмпирическим путем мы вычислили, что идеальную точку можно высчитать по следующей формуле:

Робот должен двигаться строго по идеальной точке. Если случается отклонение в какую-либо сторону, робот должен вернуться к этой точке.

Составим математическое описание задачи.

Исходные данные.

Идеальная точка.

Текущие показания датчика освещенности.

Результат.

Мощность вращения мотора В.

Мощность вращения мотора С.

Решение.

Рассмотрим две ситуации. Первая: робот отклонился от черной линии в сторону белого.

В этом случае робот должен увеличить мощность вращение мотора В и уменьшить мощность мотора С.

В ситуации, когда робот заезжает на черную линию, все наоборот.

Чем сильнее робот отклоняется от идеальной точки, тем быстрее ему надо к ней вернуться.

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

Поэтому мы решили ограничиться только П-регулятором, адекватно реагирующем на отклонение от черной линии.

На языке математики это будет записано так:

где Hb и Hc – итоговые мощности моторов B и C соответственно,

Hбазовая – некая базовая мощность моторов, определяющая скорость движения робота. Подбирается экспериментально, в зависимости от конструкции робота и резкости поворотов.

Iтек – текущие показания датчика освещенности.

I ид – рассчитанная идеальная точка.

k – коэффициент пропорциональности, подбирается экспериментально.

В третьей части рассмотрим, как это запрограммировать в среде NXT-G.

Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Конструктор Lego Mindstorms EV3

Подготовительный этап

Создание и калибровка программы

Заключение

Литература

1.Введение.

Робототехника является одним из важнейших направлений научно - технического прогресса, в котором проблемы механики и новых технологий соприкасаются с проблемами искусственного интеллекта.

За последние годы успехи в робототехнике и автоматизированных системах изменили личную и деловую сферы нашей жизни. Роботы широко используются в транспорте, в исследованиях Земли и космоса, в хирургии, в военной промышленности, при проведении лабораторных исследований, в сфере безопасности, в массовом производстве промышленных товаров и товаров народного потребления. Многие устройства, принимающие решения на основе полученных от сенсоров данных, тоже можно считать роботами — таковы, например, лифты, без которых уже немыслима наша жизнь.

Конструктор Mindstorms EV3 приглашает нас войти в увлекательный мир роботов, погрузиться в сложную среду информационных технологий.

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

    Познакомится с конструктором Mindstorms EV3 и его средой программирования.

    Написать программы движения робота по прямой на 30 см, 1 м 30 см и 2 м 17 см.

    Конструктор Mindstorms EV3.

Детали конструктора - 601 шт., серводвигатель - 3 шт., датчик цвета, сенсорный датчик движения, инфракрасный датчик и датчик касания. Микропроцессорный блок EV3, является мозгом конструктора LEGO Mindstorms.

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

Заставить робота выполнять действие можно с помощью компьютерной программы EV3. Программа состоит из различных блоков управления. Мы будем работать с блоком движения.

Блок движение управляет двигателями робота, включает, выключает, заставляет работать, соответствующее поставленным задачам. Можно запрограммировать движение на определенное количество оборотов, или градусов.

    Подготовительный этап.

    Создание технического поля.

На поле работы робота нанесем разметку, с помощью изоленты и линейки создадим три линии длиной 30 см - зелёная линия, 1 м 15 см - красная и 2 м 17 см - чёрная линии.

    Необходимые расчеты:

Диаметр колеса робота - 5 см 7 мм = 5,7 см.

Один оборот колеса робота равен длине окружности с диаметром 5,7 см. Длину окружности находим по формуле

Где r - радиус колеса, d - диаметр, π = 3,14

l = 5,7 * 3,14 = 17,898 = 17,9.

Т.е. за один оборот колеса робот проезжает 17,9 см.

Рассчитаем количество оборотов необходимых, что бы проехать:

N = 30: 17,9 = 1,68.

    1 м 30 см = 130 см

N = 130: 17,9 = 7,26.

    2 м 17 см = 217 см.

N = 217: 17,9 = 12,12.

    Создание и калибровка программы.

Создавать программу будем по следующему алгоритму:

Алгоритм:

    Выбрать блок движения в программе Mindstorms EV3.

    Включить оба мотора в заданном направлении.

    Ожидать изменение показания датчика поворота одного из моторов до заданного значения.

    Выключить моторы.

Готовую программу загружаем в блок управления робота. Ставим робота на поле и нажимаем кнопку пуска. EV3 едет по полю и останавливается в конце заданной линии. Но для того, что бы добиться точного финиша приходится производить калибровку, так как на движение влияют внешние факторы.

    Поле установлено на ученические парты, поэтому возможен небольшой прогиб поверхности.

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

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

5.Заключение.

Умение программировать движение робота по прямой линии пригодится для создания более сложных программ. Как правило, в технических заданиях соревнований по робототехнике указаны все размеры передвижения. Они необходимы, что бы программа не была перезагружена логическими условиями, циклами и другими сложными блоками управления.

На следующем этапе знакомства с роботом Lego Mindstorms EV3 предстоит научиться программировать повороты на определенный угол, движение по кругу, спирали.

Работать с конструктором очень интересно. Узнавая больше о его возможностях, можно решать любые технические задачи. А в будущем, возможно, создавать свои интересные модели робота Lego Mindstorms EV3.

Литература.

    Копосов Д. Г. «Первый шаг в робототехнику для 5-6 классов». - М.: Бином. Лаборатория знаний, 2012 - 286 с.

    Филиппов С. А. «Робототехника для детей и родителей» - «Наука» 2010г.

    Интернет - ресурсы

    http://lego. rkc-74.ru/

    http://www.9151394.ru/projects/lego/lego6/beliovskaya/

    http://www. lego. com/education/

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

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

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

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

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

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

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

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

Движение с двумя датчиками:

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


Алгоритм будет следующий:
Если оба датчика видят белый цвет – двигаемся вперед;
Если один из датчиков видит белый, а другой черный – поворачиваем в сторону черного;
Если оба датчика видят черный цвет – мы на перекрестке (например, остановимся).

Для реализации алгоритма нам потребуется отслеживать показания обоих датчиков, и только после этого задавать движение роботу. Для этого будем использовать переключатели, вложенные в другой переключатель. Таким образом, мы опросим сначала первый датчик, а потом, независимо от показаний первого, опросим второй датчик, после чего зададим действие.
Подключим левый датчик к порту №1, правый – к порту №4.

Программа с комментариями:

Не забывайте, что моторы запускаем в режиме «Включить», чтобы они работали столько, сколько необходимо исходя из показаний датчиков. Также, часто забывают о необходимости цикла - без него программа сразу завершится.

http://studrobots.ru/

Эта же программа для модели NXT:

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

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

Существует множество подходов для решения задачи следования по линии. Выбор одного из них зависит от конкретной конструкции робота, от количества сенсоров, их расположения относительно колёс и друг друга.

В нашем примере будет разобрано три примера робота на основе основной учебной модели Robot Educator.

Для начала, собираем базовую модель учебного робота Robot Educator, для этого можно использовать инструкцию в программном обеспечении MINDSTORMS EV3.

Так же, для примеров нам понадобятся, датчики света-цвета EV3. Эти датчики света, как никакие другие, наилучшим образом подходят для нашей задачи, при работе с ними, нам не придётся забоится о интенсивности окружающего света. Для этого датчика, в программах мы будем использовать режим отражённого света, при котором оценивается количество отражённого света красной подсветки датчика. Границы показаний датчика 0 - 100 единиц, для «отсутствия отражения» и «полного отражения» соответственно.

Для примера мы разберём 3 примера программ для движения по чёрной траектории изображённой на ровном, светлом фоне:

· Один датчик, с П регулятором.

· Один датчик, с ПK регулятором.

· Два датчика.

Пример 1. Один датчик, с П регулятором.

Конструкция

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


Алгоритм

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


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

В итоге, в программе, функция калькулятора является простым пропорциональным регулятором. Функция которого ((a-50)*1.5 ) в рабочем диапазоне датчика света формирует значения поворота в соответствии с графиком:

Пример работы алгоритма

Пример 2. Один датчик, с ПK регулятором.

Этот пример составлен на той же конструкции.

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

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

Так видит линию человек:

Так видит её робот:


Вот эту особенность мы и будем использовать при конструировании и программировании робота для категории соревнований «Траектория».

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

Я хочу рассказать о способе программирования, который освоят даже дети 2-3 классов. В этом возрасте им гораздо легче дается сборка конструкций по инструкциям, а программирование робота - для них сложная задача. Но этот способ позволит ребенку запрограммировать робота на любой маршрут трассы за 15-30 минут (с учетом поэтапной проверки и подгонки некоторых особенностей траектории).

Данный способ был проверен на муниципальных и региональных соревнованиях по робототехнике в Сургутском районе и ХМАО-Югре и принес нашей школе первые места. Там же я убедился, что эта тема весьма актуальна для многих команд.

Ну, приступим.

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

Рассмотрим вариант робота с двумя датчиками света, так как он более понятен ученикам младших классов.

Датчики освещенности подключены ко 2 и 3 портам. Моторы к портам В и С.
Датчики выставлены по краям линии (попробуйте поэкспериментировать, располагая датчики на разном расстоянии друг от друга и на разной высоте).
Важный момент. Для лучшей работы такой схемы пару датчиков желательно подобрать по параметрам. Иначе, необходимо будет вводить блок корректировки значений датчиков.
Установка датчиков на шасси по классической схеме (треугольник), примерно, как на рисунке.

Программа будет состоять из небольшого количества блоков:


1. Два блока датчика освещенности;
2. Четыре блока «Математики»;
3. Двух блоков моторов.

Для управления роботом используется два мотора. Мощность каждого 100 единиц. Для нашей схемы мы возьмем среднее значение мощности мотора равным 50. То есть, средняя скорость при движении по прямой, будет равна 50 единицам. При отклонении от прямолинейного движения мощность моторов будет пропорционально увеличиваться или уменьшаться, в зависимости от угла отклонения.

Теперь разберёмся, как соединить все блоки, настроить программу и что будет в ней происходить.
Выставим два датчика освещенности и назначим им порты 2 и 3.
Берем блок математики и выберем «Вычитание».
Подключим датчики освещенности с выходов «Интенсивность» шинами к блоку математики ко входам «А» и «В».
Если датчики робота установлены симметрично от центра линии трассы, то значения обоих датчиков будет равными. После вычитания мы получим значение – 0.
Следующий блок математики будет использован в качестве коэффициента и в нем нужно выставить «Умножение».
Для вычисления коэффициента вам необходимо измерить с помощью блока NXT уровень «белого» и «черного».
Предположим: белый -70, черный -50.
Далее считаем: 70-50=20 (разница между белым и черным), 50/20=2,5 (среднее значение мощности при движении по прямой в блоках математики мы выставили в 50. Это значение плюс добавленная мощность при корректировки движения должна быть равна 100)
Попробуйте выставить значение 2,5 по входу «А», а потом подберете более точно.
Ко входу «В» блока математики «Умножение» подключите выход «Результат» предыдущего блока математики «Вычитание».
Далее идет пара – блок математики (Сложение) и мотор В.
Настройка блока математики:
По входу «А» выставлено значение 50 (половина мощности мотора).
Выход блока «Результат» соединен шиной с входом «Мощность» мотора В.
Следом пара – блок математики (Вычитание) и мотор С.
Настройка блока математики:
По входу «А» выставлено значение 50.
Вход «В» соединен шиной с выходом «Результат» блока математики «Умножение».
Выход блока «Результат» соединен шиной с входом «Мощность» мотора С.

В результате всех этих действий вы получите такую программу:

Так как это все будет работать в цикле, то добавляем «Цикл», выделяем и переносим это все в «Цикл».

Теперь давайте попробуем разобраться, как будет работать программа и как ее настроить.


Пока робот едет по прямой линии значения датчиков совпадают, значит, на выходе блока «Вычитание» будет значение 0. Выход блока «Умножение» дает тоже значение 0. Это значение подается параллельно на пару управления моторами. Так как в этих блоках выставлено значение 50, то прибавление или вычитание 0 не влияет на мощность моторов. Оба мотора работают с одинаковой мощностью 50, и робот катит по прямой.

Предположим, что трасса делает поворот или робот отклоняется от прямой. Что будет происходить?

По рисунку видно, что освещенность датчика, подключенного к порту 2 (далее по тексту –датчики 2 и 3) увеличивается, так как он съезжает на белое поле, а освещенность датчика 3 уменьшается. Предположим, значения этих датчиков становятся: датчик 2 – 55 единиц, а датчик 3 – 45 единиц.
Блок «Вычитания» определит разницу между значениями двух датчиков (10) и подаст его в блок коррекции (умножение на коэффициент(10*2,5=25)) и далее в блоки управления
моторами.
В блоке математики (Сложение) управления мотором В к значению средней скорости 50
добавится 25 и значение мощности 75 будет подано на мотор В.
В блоке математики (Вычитание) управления мотором С от значения средней скорости 50 будет вычтено 25 и значение мощности 25 будет подано на мотор С.
Таким образом, будет скорректировано отклонение от прямой линии.

Если трасса резко поворачивает в сторону и датчик 2, оказывается на белом, а датчик 3 на черном. Значения освещенности этих датчиков становятся: датчик 2 – 70 единиц, а датчик 3 – 50 единиц.
Блок «Вычитания» определит разницу между значениями двух датчиков (20) и подаст ее в блок коррекции (20*2,5=50) и далее в блоки управления моторами.
Теперь в блоке математики (Сложение) управления мотором В значение мощности 50 +50 =100 будет подано на мотор В.
В блоке математики (Вычитание) управления мотором С значение мощности 50 – 50 = 0 будет подано на мотор С.
И робот выполнит крутой разворот.

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

Теперь создадим новый блок и будем его использовать для движения робота по любой трассе.
Выделим цикл, далее в меню «Правка» выберем команду «Создать мой блок».

В диалоговом окне «Конструктор блоков» дадим название нашему блоку, например, «Go», выберем иконку для блока и нажмем «ГОТОВО».

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



Поддержите проект — поделитесь ссылкой, спасибо!
Читайте также
Яблочный пудинг с манкой для детей Молочный пудинг для ребенка 1 5 Яблочный пудинг с манкой для детей Молочный пудинг для ребенка 1 5 вышивка – все толкования вышивка – все толкования Избранное для мирян Желание и намерение Избранное для мирян Желание и намерение