Понятие и роль образовательной робототехники на современном этапе развития образования


Программирование в образовательной робототехнике



бет9/18
Дата08.10.2022
өлшемі5,97 Mb.
#41966
түріГлава
1   ...   5   6   7   8   9   10   11   12   ...   18
Байланысты:
obrazovatelnaya-robototehnika-uc

2.4 Программирование в образовательной робототехнике


Робототехника - это отрасль, где применяются знания из других областей знаний. Одной из областей, находящейся в центре создания роботов, является программирование. Поэтому необходимо расширять знания и постоянно практиковаться в разработке программ для укрепления навыков и знаний.
Создание программы - это то, что определяет поведение программируемых технологических устройств. В данном разделе рассматриваются основные сведения дающие представления о создании алгоритмов, лежащих в основе программирования.
Программирование представляет собой разработку и определение шагов и решений, которым будет следовать технологическое устройство для выполнения определенной задачи, используя специальные инструменты для прямого общения с командами. Таким образом, программирование - это действие по созданию и воплощению этих шагов на устройстве. На современном технологическом оборудовании, в цифровой электронике программирование выполняется путем написания последовательности инструкций (шагов и решений) в так называемом программном коде.
Все технологические устройства имеют свой способ получения последовательности шагов, которые необходимо выполнить. Общение с ними не может осуществляться на обычных языках, таких как английский, русский, язык жестов и т.д., поскольку их основная электронная структура не позволяет им понять эти средства коммуникаций. Вот почему существуют специальные языки программирования, которые, в свою очередь, могут отличаться от устройства к устройству. С их помощью технологические устройства получают инструкции или шаги, поступающие с компьютеров, микроконтроллеров, сотовых телефонов и т.д., для выполнения соответствующих действий. Существует несколько подобных языков: некоторые из них настолько сложны и специфичны, что применяются только для соответствующих устройств; в других, с целью обеспечения лучшего восприятия, используются переводчики для облегчения связи между программистом (разработчиком программного кода) и машиной.
В настоящее время деятельность по разработке последовательности шагов для устройств не ограничивается конкретным сектором человеческих профессий или профессиональной деятельности. Тем не менее, из числа тех, кто занимается компьютерной областью, к их числу больше относятся те, кто занимается программированием.
Этой деятельностью заняты те, кто обеспечивает работу электронных устройств, особенно распространенных в сфере инженерии. Тем не менее, физики, математики, биологи, химики и специалисты в области точных наук также часто разрабатывают программы для удовлетворения потребностей в своих областях. В настоящее время, благодаря прогрессу в доступе к современным технологическим ресурсам, как преподаватели, так и обучающиеся имеют возможность занимаются данной деятельностью.
В будущем, возможно, Программирование будет частью повседневной деятельности людей, которые найдут в ней еще один инструмент, еще один язык, с помощью которого они смогут общаться и решать проблемы с эффективными решениями.
В повседневной деятельности часто приходится сталкиваться с делами, требующими когнитивных, математических и логических навыков. Иногда эти действия становятся повторяющимися, меняющимися в мелких деталях. Они выполняются с определенной последовательностью простых, упорядоченных шагов, которые в совокупности выглядят достаточно сложными, но позволяют получить удовлетворяющий результат деятельности. Эти действия могут быть связаны с программированием, что позволяет определять эти последовательности шагов в алгоритмах, которые выполняют необходимые задачи и которые выполняются компьютером или программируемым технологическим оборудованием.
Возвращаясь к приведенному выше определению, программирование - это разработка и определение шагов и решений, которые необходимо выполнить для выполнения задачи. Данная концепция может быть перенесена в различные контексты, например:

  1. Чтобы поджарить хлеб в тостере, его нужно нагревать около 5 минут при температуре 150 °C. Процесс перемещения ручки тостера, которая устанавливает время для отсчета - 5 минут, и перемещение ручки температуры до 150 °C, можно назвать программированием, а задача, которая будет решена, - поджарить хлеб.

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

Как уже упоминалось, программирование - это способ общения с компьютерами. Каждый язык программирования имеет свои правила, определенные для общения, создания инструкций и их интерпретации. Существует порядок построения инструкций и правил их создания, все в соответствии с вычислительной логикой. Важно помнить, что компьютер не ищет смысла в том, что передается с помощью языка - он просто выполняет инструкции, не интерпретируя их.
Простой набор упорядоченных шагов называют алгоритмом. С точки зрения программирования, это разработка программы, которую необходимо выполнить. Чтобы алгоритм имел смысл, он должен иметь цель, задачу, которую нужно решить.
Алгоритмы используются ежедневно, но никто их так не называет. Например, рецепт для приготовления какого-либо блюда или действия, которые необходимо совершить, чтобы купить батон хлеба. В других контекстах, как и в математике, чаще всего слышат слово: алгоритм деления, сложения и т. д.
Для разработки алгоритмов сначала необходимо знать основные правила их создания. Они могут быть графическими или текстовыми. Первые построены с помощью графических элементов, которые легче читать и интерпретировать; они называются потоками или блоксхемами и имеют три основных правила:

  1. Нарисуйте фигуру для каждого действия и одно действие для каждой фигуры.

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

  3. Каждая диаграмма имеет начало и конец.

Текстовые алгоритмы представляют собой обозначение последовательности шагов с помощью языка.
Чтобы выполнить одно действие, необходимо решить несколько небольших задач для завершения одной большой, поэтому необходимо следовать простым инструкциям последовательно. В этом случае для разработки графического алгоритма необходимо создать последовательность шагов по фигурам. Но в любом случае в алгоритме всегда должно быть видно начало и конец, чтобы можно было определить, где начинается шаг и где заканчивается. Несмотря на то, что может возникнуть ситуация, когда два небольших действия могут выполняться одно за другим, независимо от того, какое из них будет первым, после написания алгоритма необходимо соблюдать порядок, в котором они были размещены изначально.
После получения определенного алгоритма можно переходить к созданию программы, которая его запускает, другими словами, реализовать алгоритм. Для этого необходим инструмент (программное обеспечение), позволяющий писать код на подходящем языке программирования.
То какой инструмент будет использован для создания программы будет зависеть от цели, поскольку существует множество инструментов, которые служат для различных операционных систем. Это означает, что необходимо принять во внимание среду программирования и цель программы. Общее предложение состоит в том, чтобы использовать бесплатное программное обеспечение или бесплатную лицензию, поскольку они не возлагают никаких экономических или юридических обязательств или каких-либо других ограничений на его использование.
Одним из таких инструментов, распространенных в сфере образовательной робототехники является визуальный язык программирования Scratch.
Scratch - это язык программирования, в котором можно создавать анимации, игры, музыку. Он был разработан для обучения и образования аудитории от 8 до 16 лет, хотя ограничение по возрасту условное. Например, младшие дети могут создавать проекты со своими родителями или старшими братьями и сестрами; студенты колледжей могут использовать его в некоторых вводных курсах программирования. Эта среда использует преимущества разработки интерфейсов, чтобы сделать программирование более привлекательным и доступным для всех, кто сталкивается впервые с задачей научиться программировать.
В Scratch разные действия заданы разноцветными блокамикомандами: «Движение»; «Внешний вид»; «Звук»; «События»; «Управление»; «Сенсоры»; «Операторы»; «Переменные» и «Другие блоки».
Блок-схему начинают строить с овального прямоугольника, который имеет имя алгоритма внутри, к которому присоединяется следующий блок с конкретной инструкцией. Например, на рисунке 18 изображен желтый прямоугольник с зеленым флажком (когда «флажок» нажат) из раздела «События», который будет запускать программу при нажатии на него – в результате объект должен пройти 10 шагов.
Команда, которая расположена выше, будет выполняться раньше, чем команда, которая расположена ниже. Часто конфигурация самих блоков подсказывает, как их надо соединять. Например, мы никогда не сможем сделать команду "когда флажок нажат" второй, третьей или какой угодно, кроме как первой. У этого блока нет выемки сверху, куда можно было бы вставить другой блок. То есть программа всегда начинается с команды "когда флажок нажат".

Рисунок 18. Фрагмент алгоритма в Scratch
Также есть возможности создавать циклы и задавать ветвления, (оранжевый раздел «Управление»), условия, изменять параметры и направление движения и т.д. (рис. 19)

Рисунок 19. Фрагмент алгоритма в Scratch
Алгоритм может запрашивать или выдавать данные, таким образом, чтобы общаться с внешним миром. Возможны случаи, когда ни одна из этих ситуаций не требуется, или когда используется только для вывода (отображения) данных, либо для их запроса.
Различают три типа данных, которые может потребоваться отобразить в алгоритме:
Цифровые данные. Те, которые представляют собой реальное или целое число. Например: 9, -7.5, 3.141519.
Текстовые данные. Те, где представлены цифры, буквы и символы, которые должны быть заключены в кавычки, чтобы распознать их тип. Например: «текст», «различные фразы».
Логические данные. Несмотря на то, что они более широко распространены, очень мало используются для отображения. К ним относятся те, которые представляют собой «правду» или «ложь», поэтому они выглядят как результат сравнения. Например, если мы сравним 5 > 3, то результат будет правдой, а сравнение "Вася" = "Петя", будет ложным.
Многие опасаются, что программирование включает в себя выполнение многих математических вычислений, что отчасти верно. Но также нужно учитывать, что компьютер регулярно совершает множество математических вычислений и пользователь может поручить ему выполнение необходимых вычислений.
Для этого алгоритму предлагается выполнить действие, математическую операцию (в рамках многих других возможных действий, определенных уже на компьютере или созданных пользователями). Символ, используемый для обозначения операции на блок-схеме, представляет собой прямоугольник, содержащий название операции, и объект для временного сохранения данных во время выполнения алгоритма. Поэтому сначала нужно обозначить место, где будут храниться временные результаты или данные.
Чтобы сохранить данные и результаты, которые постоянно задействованы в программе, лучше хранить их в памяти компьютера, позволяя ему обращаться к ним, когда это необходимо. Это пространство называется переменной, и чтобы идентифицировать его от других, ему присваивается имя. Примерами имен могут быть: "сумма", “переменная” или "Х".
При создании алгоритма вручную в выборе имен для обозначения переменных нет ограничений. Но когда алгоритм реализуется на языке программирования, должны быть соблюдены определенные правила и ограничения. Для этого лучше обратиться к документации по программному обеспечению, которое используется для программирования.
В процессе программирования можно столкнуться с ситуациями, когда нужно выполнить одну или другую последовательность шагов, в зависимости от конкретного параметра. Например, когда необходимо, чтобы мобильный робот не сталкивался с препятствиями или объезжал их. Он будет продолжать движение (например, прямолинейное) пока не «увидит» препятствие и не остановится или не совершит объезд препятствия. Это называется ветвлением программы. То есть робот на основе результата сравнения с заданным параметром (в приведенном выше примере будет постоянно измеряться и сравниваться расстояние до препятствия) «решает» какие действия он будет совершать.
Сравнение данных основано на простых математических операциях и операциях логической алгебры. Результаты сравнения представляют собой простые ответы "правда" или "ложь". Для сравнения данных выполняются операции "больше", "меньше", "равно" или их комбинации "меньше или равно" и "больше или равно". Например:
Начальные назначения a = 5; b = 6; c = 7 и d =" Привет" (правильно заменить значение переменных в вопросах, чтобы определить, верны они или нет):
◦ Вопрос: Является ли переменная a больше 3?
Ответ: Правда
◦ Вопрос: Является ли переменная b меньше 3?
Ответ: Ложь
◦ Вопрос: переменная c равна 7?
Ответ: Правда
◦ Вопрос: переменная b не равна a?
Ответ: Правда
◦ Вопрос: Является ли переменная d такой же, как текст “привет”?
Ответ: Ложь
Потому что переменная d содержит “Привет” с заглавной буквы “П”, что делает ее другой.
Способ запроса может быть более сложным, с помощью операций, выполняемых в вопросе.
◦ Вопрос: Является ли переменная a, умноженная на -1, больше 3?
Ответ: Ложь
◦ Вопрос: Является ли переменная b разделенной на переменную c меньше 3?
Ответ: Правда
◦ Вопрос: переменная b, умноженная на переменную a, отличается от переменной a, умноженной на переменную b?
Ответ: Ложь
◦ Вопрос: Является ли переменная d, прикрепленная к тексту "_папа", такой же, как текст "Привет_папа"?
Ответ: Правда
С помощью таких вопросов можно задавать ветвления в алгоритме. По своей роли они называются "решение" или "условие".
В Scratch вопрос задается специальными блоками секции операторов, которые имеют удлиненную форму и значение результата которых интерпретируется как истинное или ложное (если …, то …; иначе …). Или это может быть зеленый блок секции шестиугольной формы с уже вписанным вопросом как на рисунке 19. То есть условия позволяют алгоритму выбирать направление в очень конкретной ситуации.
Конечный блок программы также из желтого раздела с той разницей, что к нему может приходить только один блок (выемка сверху блока прямоугольника, указывающая на конец алгоритма), и имеющий название «остановить скрипт» или «остановить все». Возможно, в обширном и сложном алгоритме существует несколько способов завершения (например, «зацикливание»), но это не значит, что необходимо указывать несколько окончаний программы. Для алгоритма должен существовать только один выход (завершение программы).
Графические алгоритмы могут быть довольно масштабными изза большого количества необходимых блоков в сложных алгоритмах. Тем не менее, их легче интерпретировать, поскольку они не вызывают сомнений в том, какой следующий шаг должен быть сделан, в то время как текстовые алгоритмы могут зависеть от интерпретации каждого читателя. Создавая проекты путем графического блочного программирования обучающиеся одновременно развивают важные академические навыки в математике, вычислениях, системном мышлении, совместной работе, решении проблем и т.д.
Другой популярной визуальной средой программирования в образовательной робототехнике является Lego Mindstorms EV3 разработанная компанией National Instruments. В ее основе лежит среда инженерного программирования LabVIEW на графическом языке «G».
Данная среда программирования включает следующие основные компоненты: панель инструментов программирования, в которой размещены инструменты для работы с программой; палитры программирования, в которой размещены блоки программирования; область программирования, где и располагается программа; а также редактор контента и страница аппаратных средств. Несмотря на свои внешние различия по сравнению со Scratch, основные принципы графического программирования остаются неизменными, как и многие инструменты и функции.
Блоки в Lego Mindstorms EV3 также разделены по функциям, которым соответствуют определенные цвета: зеленый – блоки действий (моторы, изображения и звуки); оранжевый – блоки выполнения программ (блок запуска программы, задержка времени, цикл, ветвление); желтый – блоки датчиков; красный – блоки операций над данными (числовыми, логическими или текстовыми); синий – блоки модернизации (работа с файлами, связь по Bluetooth и др.) (рис. 20).
Для построения программы управления роботом нужно также соединять блоки с командами, начиная с блока запуска программы, одновременно внося определенные их параметры. Схема представляет собой последовательность блоков, которые располагаются сверху вниз или слева направо в порядке их выполнения.
Более простые программы имеют линейную структуру. В более сложных, использующих блоки циклов и ветвлений, структура становится громоздкой, что доставляет некоторые неудобства (рис. 21).

Рисунок 20. Блоки программирования в Lego Mindstorms EV3
Уменьшению площади записи программы, повышению ее читабельности и простоте восприятия способствует использование блоков подпрограмм. Они представляют собой поименованные или иным образом идентифицированные части компьютерной программы, содержащие описание определённогонабора действий.
Для того чтобы программист и роботпонимали друг друга, роботу необходимо уметь подавать некоторые сигналы. Они служат сообщением о том, что робот выполнил или не выполнил то или иное действие. В EV3 такими сигналами служат звуковые сообщения, которые может воспроизводить встроенный динамик микроконтроллера. Сообщение также может быть выведено в виде текста или изображения на дисплее микроконтроллера.

Рисунок 21. Пример записи линейной и разветвленной программы в Lego Mindstorms EV3
Среда Lego Mindstorms EV3 удобна и легка в освоении. Но для создания серьезных и сложных проектов она не подойдет из-за своих недочетов и ограничений, самые значимые из которых это использование только глобальных переменных, медленная работа и сбои среды программирования при большом объеме программы.
Чтобы обойти эти ограничения и расширить функционал потребуется ev3dev - операционная система на основе Debian Linux, которая работает на нескольких Lego Mindstorms-совместимых платформах, включая Lego Mindstorms EV3 и BrickPi на базе Raspberry Pi. Для работы можно использовать большое количество языков программирования: Python, JavaScript, Java, Go, C, C++, Ruby и т.д.
В данный момент ev3dev набирает свою популярность, ведь использование этой системы позволяет создавать сложные проекты на любом языке программирования, при этом отпадает необходимость в поиске альтернативных робототехнических наборов. Использование операционной системы ev3dev эффективно способствует профессиональному развитию учащихся в области робототехники и программирования.
Рассмотрим возможности использования языка Python для программирования EV3. Python - это язык, который подходит для программирования, поскольку он имеет простой синтаксис и позволяет использовать расширенные функции.
Программирование робота EV3 на языке Python осуществляется при помощи ev3dev с новой средой исполнения Pybricks MicroPython и библиотекой, которая включает в себя нужные для управления роботом и датчиками функции.
Например, управление цветом. Для того, чтобы изменить цвет индикатора состояния модуля используется функция: brick.light(Color)
В скобках указывается параметр Color: BLACK, BLUE, GREEN, YELLOW, RED, WHITE, BROWN, ORANGE, PURPLE. Чтобы выключить свет у индикатора состояния модуля выбирается параметр Color.BLACK или None. В таблице 2 приведено сравнение управления индикатором состояния, который загорается оранжевым цветом в Python и EV3-G.
Управление звуком в Python осуществляется с помощью трех функций. Первая отвечает за сигнал: brick.sound.beep(frequency, duration, volume)
В параметрах указываются:

  • frequency – частота сигнала в Герцах (по умолчанию 500);

  • duration – продолжительность сигнала в миллисекундах (по умолчанию 100);

  • volume – громкость сигнала в процентах (по умолчанию 30).

Таблица 2. Сравнение управления индикатором состояния в Python и EV3-G

Вторая функция воспроизводит звуковой сигнал несколько раз с короткой паузой между ними: brick.sound.beeps(numbers)
Параметр numbers должен быть целым числом и указывает количество сигналов.
Третья функция воспроизводит звуковой файл: brick.sound.file(file_name, volume)
Параметр file_name отвечает за путь к файлу, включая расширение. Звуковой файл должен находится в каталоге с проектом. Для воспроизведения стандартных звуковых файлов LEGO, в параметрах функции указывается название этого файла (табл. 3).
Таблица 3. Сравнение управления звуком в Python и EV3-G

Аналогично осуществляется управление выводом информации на экран, управление датчиками и двигателями.
Таким образом можно сформулировать несколько основных шагов, которые необходимо предпринять для создания любой программы. Данный перечень шагов может быть рассмотрен более детально для получения лучшего результата.
Первым шагом является наблюдение, чтобы иметь возможность описать ситуацию словами. Это описание будет затем переведено в алгоритм.
Следует отметить все элементы, которые участвуют в решении проблем. Желательно составить список всех переменных, которые будут использоваться, и всех альтернатив, с которыми придется столкнуться алгоритму. Анализ всех вариантов позволит сделать программу более защищенной от ошибок.
В качестве второго шага необходимо создать алгоритм наблюдаемой ситуации. Для сложных ситуаций может быть удобно сначала написать алгоритм, а затем передать его графическому представлению, чтобы избежать возможных ошибок, присущих процессу мышления во время рисования.
В результате этого этапа необходимо будет рассмотреть все альтернативы, предусмотренные в наблюдении, и использовать все указанные переменные. Необходимость включения новых элементов, не предусмотренных в процессе наблюдения, может возникнуть при разработке графического алгоритма, что свидетельствует о том, что процесс наблюдения был неполным. Однако это не представляет реальной проблемы для программирования, если исправлены и добавлены отсутствующие элементы.
На третьем этапе создания кода необходимо определиться с языком программирования на котором будет развиваться программа. Алгоритм предыдущего этапа упрощает этот процесс, поскольку речь идет о переводе графического алгоритма на конкретные инструкции определенного языка.
Как уже упоминалось выше, существует множество вариантов выбора языка программирования, каждый из которых имеет свои преимущества и недостатки. Можно применить такие языки как C, C++, java, Pyton, Arduino, Scratch и т.д.


Достарыңызбен бөлісу:
1   ...   5   6   7   8   9   10   11   12   ...   18




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет