Как написать программу для робота

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

Бесплатно скачать КуМир для Windows можно на официальном сайте разработчика данного ПО, для этого пройдите по ссылке https://www.niisi.ru/kumir/dl.htm .

У любого исполнителя должна быть система команд ( СКИ — система команд исполнителя ). Система команд исполнителя — совокупность всех команд, которые может выполнить исполнитель. В качестве примера рассмотрим дрессированную собаку. Она умеет выполнять некоторые команды — «Сидеть», «Лежать», «Рядом» и т. п. Это и есть ее система команд.

Простые команды Робота

У нашего Робота тоже есть система команд. Сегодня мы рассмотрим простые команды Робота . Всего их 5:

Результат выполнения этих команд понятен из их названия:

  1. вверх — переместить Робота на одну клетку вверх
  2. вниз — переместить Робота на одну клетку вниз
  3. влево — переместить Робота на одну клетку влево
  4. вправо — переместить Робота на одну клетку вправо
  5. закрасить — закрасить текущую клетку (клетку в которой находится Робот).

Эти команды можно писать с клавиатуры, а можно использовать горячие клавиши (нажав их команды будут вставляться автоматически):

Программируем своего робота на плате Iskra JS

  • вверх — Escape, Up (стрелка вверх)
  • вниз — Escape, Down (стрелка вниз)
  • влево — Escape, Left (стрелка влево)
  • вправо — Escape, Right (стрелка вправо)
  • закрасить — Escape, Space (пробел)

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

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

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

Т. е мы повторили команду сделай приседание 7 раз. А есть ли смысл писать 7 одинаковых команд? Может проще дать команду сделай 7 приседаний ? Конечно проще и правильнее. Это и есть цикл . Вы можете сами вспомнить примеры циклов из жизни — их довольно много.

Таким образом линейный алгоритм , где повторяются одни и те же команды мы можем оформить в виде циклического алгоритма — примерно так:

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

Цикл — это многократное исполнение последовательности команд
Виды циклов
Цикл со счетчиком

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

Для того, чтобы написать цикл со счетчиком для исполнителя необходимо знать его синтаксис. А он такой:

Здесь мы должны указать количество повторений (число) и команды, которые будут повторяться. Команды, которые повторяются в цикле называют телом цикла .

В системе КуМир цикл » n раз » записывается при помощи следующей конструкции:

нц n раз

кц

n — число повторений цикла.

Пример алгоритма для исполнителя Робот в системе КуМир:

использовать Робот

алг задание

нач

нц 5 раз

кц

кон

В результате работы программы исполнитель Робот пройдёт вправо на 1 клетку и закрасит её. За т ем повторит те же действия ещё 4 раза. Таким образом, Робот переместится вправо на 5 клеток и закрасит их.

Цикл с параметром

Вернемся к физкультуре и изменим задачу. Ведь кто-то может и не сделать 7 приседаний, а другой способен сделать 27. Можно ли учесть это при создании цикла? Конечно. Только теперь мы будем использовать не счетчик (количество повторений), а условие. К примеру, пока не устал, делай приседания.

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

пока не устал

Слова не устал в нашем случае — это условие. Когда оно истинно, цикл выполняется. Если же оно ложно (устал) тело цикла не будет выполнено. У исполнителя Робот есть несколько условий

Т еперь давайте решим следующую задачу для Робота — нарисовать вертикальную линию от левой до правой границы поля использую цикл с условием. Изначально Робот находится в левом верхнем углу.

Давайте сначала сформулируем словесный алгоритм — т. е. опишем словами что нужно делать Роботу. Этот алгоритм будет звучать примерно так:

«Пока справа свободно делай шаг вправо и закрашивай клетку»

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

Исходный код нашей программы для Робота будет примерно такой:

использовать Робот

алг

нач

нц пока справа свободно

кц

кон


Исполнитель Робот

Задача : Составьте программу, по которой Робот напишет число 2021 . При составление программы использовать цикл с счетчиком.

нц n раз

кц

использовать Робот

алг

нач

нц 2 раз

кц

нц 2 раз

кц

нц 2 раз

кц

нц 2 раз

Читайте также:
Программа для автоматической настройки локальной сети

кц

нц 2 раз

кц

кон

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

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

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

Детализация плана действий Робота.

  1. Закрасить все клетки слева до прохода в горизонтальной стене .
  2. Перейти через проход до горизонтальной стены .
  3. Двигаться влево до вертикальной стены и закрашивать все клетки, расположенные непосредственно выше горизонтальной стены .
  4. Закрасить все клетки справа от вертикальной стены до прохода .
  5. Перейти через проход до вертикальной стены .
  6. Закрасить все клетки справа от вертикальной стены .

Исходный код нашей программы для Робота будет примерно такой:

использовать Робот

алг

нач

нц пока снизу стена

кц

нц пока снизу не стена

кц

нц пока слева не стена

кц

нц пока слева стена

кц

нц пока слева не стена

кц

нц пока слева стена

Источник: sites.google.com

Начать заниматься роботами должно быть просто

Это руководство в первую очередь предназначено для тех, кто хочет начать заниматься программированием и созданием роботов, но не знает куда идти дальше после мигания светодиодами на Arduino.

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

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

Интересно? Тогда начнём.

Возраст

Изначальная предполагаемая целевая аудитория — дети примерно 7-10 лет, но уверен, что это может быть интересно и детям в возрасте до 99 лет и старше.

От себя лично могу добавить, что при определённой помощи данный процесс удалось успешно донести и повторить в классе из десяти детей в возрасте примерно 5-6 лет, пусть и с некоторыми упрощениями и абстракциями. Детям понравилось и это главное.

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

Полностью с нуля со всеми деталями можно собрать это примерно за 2-3 часа. Или чуть дольше если торопиться и что-то пойдёт не так.

Идея

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

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

Пайка нужна только один раз для припаивания проводов к моторам (два мотора по два провода на каждый = четыре точки для пайки).

Для простоты повторения и дальнейших экспериментов была выбрана платформа Arduino. Она хорошо подходит для простых прототипов и общего понимания.

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

Теория

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

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

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

Мозг получает эти сигналы, решает что надо делать и отдаёт команды ногам, которые ведут нас к чему-то интересному.

Устройство робота можно свести к трём основным узлам:

Сенсоры (Sense) — это сенсоры, которыми робот «видит» окружающий мир. В нашем случае — это глаза робота, которые смотрят на дорогу.

Мозг (Plan) — это та часть робота, которая получает информацию от сенсоров, обрабатывает и передаёт команды на исполняемые части.

Исполнители (Act) — эти части робота непосредственно выполняют действия по командам, которые были получены от мозга.

Sense-Plan-Act

Sense-Plan-Act является уже устаревшей формулировкой, но в данном упрощённом варианте она вполне неплохо объясняет эти простые принципы.

Если это перевести на нашего робота, то получится такое:

Глаза робота — это сенсоры, которые «видят» происходящее перед роботом. В нашем случае глаза смотрят на дорогу.

Мозг робота — это маленький компьютер, которые получает информацию от глаз, решает как на неё реагировать и отдаёт команды мышцам.

Как написать программу для робота

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда не активна

Введение:

На втором занятии мы детальнее познакомимся со средой программирования и подробно изучим команды, задающие движение нашему роботу-тележке, собранному на первом занятии. Итак, давайте запустим среду программирования Lego mindstorms EV3, загрузим наш проект lessons.ev3, созданный ранее и добавим в проект новую программу — lesson-2-1. Программу можно добавить двумя способами:

  • Выбрать команду «Файл»-«Добавить программу» (Ctrl+N).
  • Нажать «+» на вкладке программ.

Добавить программу в проект

Рис. 1

2.1. Палитры программирования и программные блоки

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

Читайте также:
Коды администратора бюджетных программ

Зеленая палитра называется: «Действие»:

Палитра Действие

Рис. 2

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

2.2. Зеленая палитра – блоки действия

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

Программный блок - Большой мотор

Рис. 3

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

  1. Выбрать порт, к которому подключен мотор (A, B, C или D) (Рис. 3 поз. 1)
  2. Выбрать режим работы мотора (Рис. 3 поз. 2)
  3. Настроить параметры выбранного режима (Рис. 3 поз. 3)

Чем же отличаются режимы? Режим: «Включить» включает мотор с заданным параметром «Мощность» и после этого управление передается следующему программному блоку программы. Мотор будет продолжать вращаться, пока не будет остановлен следующим блоком «Большой мотор» с режимом «Выключить» или следующий блок «Большой мотор» не будет содержать другие параметры выполнения. Режим «Включить на количество секунд» включает большой мотор с установленной мощностью на указанное количество секунд, и только по завершению времени мотор остановится, а управление в программе перейдет к следующему программному блоку. Аналогично поведет мотор себя в режимах «Включить на количество градусов» и «Включить на количество оборотов»: только после выполнения установленного вращения мотора, он остановится и управление в программе перейдет к следующему блоку.

Параметр мощность (на Рис. 3 мощность установлена в 75) может принимать значения от -100 до 100. Положительные значения мощности задают вращение мотора по часовой стрелке, отрицательные — против часовой. При значении мощности равном 0 мотор вращаться не будет, чем «выше» значение мощности, тем быстрее вращается мотор.

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

Отдельно следует сказать о параметре «Тормозить в конце». Данный параметр, если установлен в значение «Тормозить» заставляет мотор тормозить после выполнения команды, а если установлен в значение «Двигаться накатом», то мотор будет вращаться по инерции, пока сам не остановится.

Следующие два программных блока «Рулевое управление» и «Независимое управление моторами» реализуют управление парой больших моторов. По умолчанию левый большой мотор подключается к порту «В», а правый — к порту «С». Но вы можете в настройках блока поменять порты подключения в соответствии с требованиями вашей конструкции (Рис. 4 поз. 1).

Программный блок - Рулевое управление

Рис. 4

Параметр «Рулевое управление» (Рис. 4 поз. 2) может принимать значения от -100 до 100. Отрицательные значения параметра заставляют робота поворачивать налево, при значении равном 0 робот движется прямо, а положительные значения заставляют робота поворачивать направо.

Стрелка над числовым параметром меняет свою ориентацию в зависимости от значения, подсказывая тем самым направление движения робота (Рис. 5).

Параметры блока - Рулевое управление

Рис. 5

Программный блок «Независимое управление моторами» похож на программный блок «Рулевое управление». Он также управляет двумя большими моторами, только вместо параметра «Рулевое управление» появляется возможность независимого управления мощностью каждого мотора. При равном значении параметра «Мощность» для левого и правого мотора робот будет двигаться прямолинейно. Если на один мотор подать отрицательное значение мощности (например -50), а на второй — положительное значение (например 50), то робот будет разворачиваться на месте (Рис. 6).

Программный блок - Независимое управление моторами

Рис. 6

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

2.3. Прямолинейное движение, повороты, разворот на месте остановка

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

Задача 1: Проехать прямолинейно вперед на 4 оборота двигателя. Развернуться. Проехать на 720 градусов.

Решение (Рис. 7):

  1. Используя программный блок «Рулевое управление» проехать вперед на 4 оборота.
  2. Используя программный блок «Независимое управление моторами» развернуться на месте (значение градусов придется подобрать экспериментально).
  3. Используя программный блок «Рулевое управление» проехать вперед на 720 градусов.

Примечание: Почему при развороте пришлось подбирать значение градусов в блоке 2?. Разве не 360 градусов — искомая величина? Нет, если мы зададим значение параметра «Градусы» равным 360, то тем самым заставим на искомую величину провернуться валы левого и правого моторов нашего робота.

На какой угол провернется робот вокруг своей оси — зависит от размера (диаметра) колес и расстояния между ними. На Рис. 7 значение параметра «Градусы» равно 385. Данное значение позволяет роботу, собранному по инструкции small-robot 45544 развернуться вокруг своей оси. Если у вас другой робот, то вам придется подобрать другое значение.

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

Решение задачи 1

Рис. 7

Задача 2: Установите на ровной поверхности какое-либо препятствие (банку, кубик, небольшую коробку), отметьте место старта вашего робота. Создайте в проекте новую программу: lesson-2-2, позволяющую роботу объехать вокруг препятствия и вернуться к месту старта.

Сколько программных блоков вы использовали? Поделитесь своим успехом в комментарии к уроку.

2.4. Экран, звук, индикатор состояния модуля

Программный блок «Экран» позволяет выводить текстовую или графическую информацию на жидкокристаллический экран блока EV3. Какое это может иметь практическое применение? Во-первых, на этапе программирования и отладки программы можно выводить на экран текущие показания датчиков во время работы робота. Во-вторых, можно выводить на экран название промежуточных этапов выполнения программы. Ну а в-третьих, с помощью графических изображений можно «оживить» экран робота, например с помощью мультипликации.

Читайте также:
Как сделать видео в программе movavi

Программный блок - Экран

Рис. 8

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

Программный блок Экран. Предварительный просмотр.

Рис. 9

Рассмотрим параметры программного блока «Экран» в режиме «Текст» (Рис. 9 поз.1). Строка, предназначенная для вывода на экран, вводится в специальное поле (Рис. 9 поз. 2).

К сожалению, в поле ввода текста можно вводить только буквы латинского алфавита, цифры и знаки препинания. Если режим «Очистить экран» установлен в значение «Истина», то экран перед выводом информации будет очищен. Поэтому, если вам требуется объединить текущий вывод с информацией уже находящейся на экране, то установите этот режим в значение «Ложь».

Режимы «X» и «Y» определяют точку на экране, с которой начинается вывод информации. Экран блока EV3 имеет 178 пикселей (точек) в ширину и 128 пикселей в высоту. Режим «X» может принимать значения от 0 до 177, режим «Y» может принимать значения от 0 до 127. Верхняя левая точка имеет координаты (0, 0), правая нижняя (177, 127)

Координаты экрана блока EV3

Рис. 10

Во время настройки программного блока «Экран» можно включить режим предварительного просмотра (Рис. 9 поз. 3) и визуально оценить результат настроек вывода информации.

В режиме «Фигуры» (Рис. 11 поз. 1) настройки программного блока меняются в зависимости от типа фигуры. Так при отображении круга необходимо будет задать координаты «X» и «Y» центра окружности, а также значение «Радиуса». Параметр «Заполнить» (Рис.

11 поз. 2) отвечает за то, что будет отображен либо контур фигуры, либо внутренняя область фигуры будет заполнена цветом, заданным в параметре «Цвет» (Рис. 11 поз. 3).

Вывод на экран. Режим

Рис. 11

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

Программный блок Экран. Отображение прямой.

Рис. 12

Чтобы отобразить прямоугольник следует задать координаты «X» и «Y» левого верхнего угла прямоугольника, а также его «Ширину» и «Высоту».

Программный блок Экран. Отображение прямоугольника

Рис. 13

Отобразить точку проще всего! Укажите лишь её координаты «X» и «Y».

Режим «Изображение», наверное, самый интересный и самый используемый режим. Он позволяет выводить на экран изображения. Среда программирования содержит огромную библиотеку изображений, отсортированную по категориям. В дополнение к имеющимся изображениям вы всегда можете создать свой рисунок и, вставив его в проект, вывести на экран.

(«Главное меню среды программирования» — «Инструменты» — «Редактор изображения»). Создавая своё изображение, вы можете также вывести на экран символы русского алфавита.

Программный блок Экран. Изображение.

Рис. 14

Как вы видите — отображению информации на экране главного модуля EV3 среда программирования придает огромное значение. Давайте рассмотрим следующий важный программный блок «Звук». С помощью этого блока мы можем выводить на встроенный динамик блока EV3 звуковые файлы, тона произвольной длительности и частоты, а также музыкальные ноты.

Давайте рассмотрим настройки программного блока в режиме «Воспроизвести тон» (Рис. 15). В этом режиме необходимо задать «Частоту» тона (Рис. 15 поз. 1), «Продолжительность» звучания в секундах (Рис.

15 поз. 2), а также громкость звучания (Рис. 15 поз. 3).

Программный блок Звук.

Рис. 15

В режиме «Воспроизвести ноту» вам вместо частоты тона необходимо выбрать ноту на виртуальной клавиатуре, а также установить длительность звучания и громкость (Рис. 16).

Программный блок Звук. Воспроизвести ноту.

Рис. 16

В режиме «Воспроизвести файл» вы можете выбрать один из звуковых файлов из библиотеки (Рис. 17 поз. 1), либо, подключив к компьютеру микрофон, с помощью Редактора звука («Главное меню среды программирования» — «Инструменты» — «Редактор звука») записать собственный звуковой файл и включить его в проект.

Программный блок Звук. Воспроизвести файл.

Рис. 17

Давайте отдельно рассмотрим параметр «Тип воспроизведения» (Рис. 17 поз. 2), общий для всех режимов программного блока «Звук». Если данный параметр установлен в значение «Ожидать завершения», то управление следующему программному блоку будет передано только после полного воспроизведения звука или звукового файла. В случае установки одного из двух следующих значений начнется воспроизведение звука и управление в программе перейдет к следующему программному блоку, только звук или звуковой файл будет воспроизведен один раз или будет повторяться, пока не его не остановит другой программный блок «Звук».

Нам осталось познакомиться с последним программным блоком зеленой палитры — блоком «Индикатор состояния модуля». Вокруг кнопок управления модулем EV3 смонтирована цветовая индикация, которая может светиться одним из трех цветов: зеленым, оранжевым или красным.

За включение — выключение цветовой индикации отвечает соответствующий режим (Рис. 18 поз. 1). Параметр «Цвет» задает цветовое оформление индикации (Рис. 18 поз. 2).

Параметр «Импульсный» отвечает за включение — отключение режима мерцания цветовой индикации (Рис. 18 поз. 3). Как можно использовать цветовую индикацию? Например, можно во время различных режимов работы робота использовать различные цветовые сигналы.

Это поможет понять: так ли выполняется программа, как мы запланировали.

Индикатор состояния модуля

Рис. 18

Давайте используем полученные знания на практике и немного «раскрасим» нашу программу из Задачи 1.

Задача 3:

  1. Воспроизвести сигнал «Start»
  2. Включить зеленую немигающую цветовую индикацию
  3. Отобразить на экране изображение «Forward»
  4. Проехать прямолинейно вперед на 4 оборота двигателя.
  5. Включить оранжевую мигающую цветовую индикацию
  6. Развернуться
  7. Включить зеленую мигающую цветовую индикацию
  8. Отобразить на экране изображение «Backward»
  9. Проехать на 720 градусов
  10. Воспроизвести сигнал «Stop»

Попробуйте решить задачу 3 самостоятельно, не подглядывая в решение! Удачи!

Источник: robot-help.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru