Как сделать так чтобы робот ev3 ехал по черной линии

Обновлено: 03.07.2024


Фрагмент программы, в котором задержка счёта реализована командой звукового сигнала, который ещё и сигнализирует о выполнении счёта.


Для элементарной задачи простого проезда вперед через поперечные чёрные линии и остановки на заданной существует более простое решение:



немного об особенностях программирования в графической среде EV3

Блок ожидания является одним из простейших блоков в программном обеспечении EV 3 и предоставляет одну из простейших структур управления потоком. Его основная функция заключается, чтобы приостановить выполнение программы до определенного условия, а затем продолжить работу с программой. Например, "дождитесь нажатия сенсорного датчика" или ”подождите три секунды".

Но что делать, если вы хотите, чтобы программа ждала, пока произойдет одно из двух (или более) возможных условий? Например, "подождите, пока датчик цвета не обнаружит черный цвет или датчик касания не будет нажат".

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

Благодаря этому обучающему занятию вы получите более глубокое понимание:

• как реализован и работает блок ожидания в программном обеспечении EV 3,

• как использовать цикл в качестве структуры управления потоком,

• как программировать выполнение нескольких условий.

Упражнение 1: Дождитесь нажатия сенсорного датчика

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


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

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

Команда ожидания на самом деле просто цикл, который повторяется, пока не будет выполнено определенное условие. Это скрыто от пользователя, но если бы вы могли видеть, как блок ожидания касания реализован в программном обеспечении EV 3, это было бы эквивалентно команде цикла в этом примере…


Реализация сенсорного блока ожидания с использованием пустого цикла

Обратите внимание, что цикл может быть пустым.

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

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


Запустить мотор навсегда и дождаться нажатия сенсорного датчика

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


Запустите двигатель до нажатия сенсорного датчика,

затем затормозите двигатель

Как мы можем достичь той же функции с помощью цикла?


Запустите двигатель до нажатия сенсорного датчика


Запустите двигатель навсегда,

используя пустой неограниченный цикл

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

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


Запустите двигатель навсегда, используя неограниченный цикл

Обе программы эквивалентны в действии, так каковы различия?

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

Упражнение 2: ждать больше, чем одно условие

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

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


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

Эта программа может отлично работать в некоторых ситуациях, но у нее есть некоторые проблемы…

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

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

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

Итак, как мы можем написать лучшую программу?

Нам нужно использовать цикл.


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


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

ПО TRIK Studio для EV3: движение робота вперед-назад, энкодеры

1

Задание для совместного решения: проехать вперед 4 секунды.

Реализация данной задачи:
1. Выносим из палитры на наше рабочее поле блок Моторы вперёд, блок Таймер, блок Конец.
2. Соединяем наши блоки. У блока Моторы вперёд есть свойства:

a. Режим (Тормозить, скользить). Если выставлено свойство тормозить, то моторы остановятся сразу после выполнения действия, если стоит свойство скользить, то моторы будут вращается по инерции, пока не остановятся;

b. Порты (выбор портов куда подключены моторы);

c. Мощность (%) задает скорость, с которой поедет робот.

3. Переходим в режим отладки и запускаем нашу программу.

2

Примечание: после любого элементарного действия выставляется всегда какой-либо блок ожидания: таймер, ожидание энкодера и т.д.

Задание для самостоятельного решения: реализовать движение назад в течение 3 секунд.

1) резкий поворот (мощность подается только на один мотор);

3

2) плавный поворот (Мощность подается на два мотора, но на один она больше);

4

3) поворот на месте (моторы работают в разные стороны).

5

Примечание: на самом деле диапазон подаваемой мощности -100 до 100 процентов.

Представленные выше виды поворотов можно назвать Алгоритмом поведения робота.

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

Исполнитель: робот или любое другое устройство.

Инструкции: примером может служить включить мотор, ждать 3 секунды, повернуть серводвигатель на 80 градусов, включить диод и т.д.

Все алгоритмы описываются Блок-схемой.

Блок-схема – распространённый тип схем (графических моделей), описывающих алгоритмы или процессы, в которых отдельные шаги изображаются в виде блоков различной формы, соединенных между собой линиями, указывающими направление последовательности.

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

Энкодер (датчик угла поворота) – это устройство, предназначенное для преобразования угла поворота вращающегося объекта (вала) в электрические сигналы, позволяющие определить угол его поворота.

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

7

Задания для самостоятельного решения:

  1. Реализовать все виды поворотов, используя энкодерную модель.
  2. В приложенном файле объехать препятствие и вернуться в начало.
  3. Проехать по заданному маршруту в приложенном файле, используя энкодерную модель.

Ответственный за информацию: методист ГМЦ ДОгМ Солуянов Евгений Александрович.

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

lesson-header-1-4

План урока

1. Подготовка

  • Ознакомьтесь с материалами для учащихся в приложении Education EV3 Classroom.
  • Соберите информацию о принципе работы Датчика цвета, о режимах определения цвета и измерения яркости отражённого света.
  • Вам понадобится чёрная изолента для разметки широкой чёрной линии.
  • К концу урока ученики должны собрать модель Приводной платформы. Это займёт около 30 минут.
  • Используйте идеи, приведенные в разделе Начало обсуждения, чтобы вовлечь учеников в дискуссию по теме урока.
  • Разделите класс на пары.

3. Исследование (20 мин.)

4. Объяснение (10 мин.)

  • Попросите учеников откалибровать Датчик цвета с помощью подпрограмм и пронаблюдать за результатом.
  • Проведите дискуссию о том, почему важно откалибровать Датчик цвета.

5. Дополнение (10 мин.)

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

6. Оценка

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

Начало обсуждения

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

engage-1-4

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

Советы по сборке

build-1-4

Инструкции по сборке

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

Использование Датчика цвета
Для решения этой задачи Датчик цвета можно использовать в двух различных режимах (определения цвета или яркости отражённого света).

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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



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



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


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



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

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