Программирование робототехнических устройств

Материал из Поле цифровой дидактики

Snap robots1.jpg

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

  • Целью освоения дисциплины является формирование у студентов понимания поля взаимодействия людей, роботов и языков программирования

В результате освоения дисциплины слушатель должен:

Знать (представлять)

  1. разнообразие робототехнических систем
  2. разнообразие языков программирования, которые используются для управления роботами
  3. многообразие имитационных сред для управления виртуальными роботами
  4. принципы проектирования программ управления робототехническими системами
  5. разнообразие данных, которые используются для обучения роботами и разнообразие данных, которые порождают роботы

Уметь

  1. использовать понятия, связанные с робототехникой и программированием робототехнических устройств
  2. использовать, обсуждать и видоизменять материалы, связанные с образовательными роботами, языками программирования, видеоиграми и паттернами поведения программируемых агентов
  3. использовать диаграммы UML при планировании проектов программирования роботов
  4. использовать текстовые и визуальные блоки управления роботами при создании методических материалов
  5. использовать готовые датасеты для обучения роботов и собирать данные, порождаемые роботами и симуляторами роботов

Владеть

  • приёмами коллективного создания, редактирования и использования методических материалов, связанных с программированием роботов
  • методами сбора и анализа данных на поле программирования робототехнических систем

Содержание разделов дисциплины:

Ключевые понятия программирования роботов

Статьи, которые есть в категории понятия, могут быть дополнены и расширены за счёт возможностей расширений (EmbedScratch, ScratchBlocks4, SyntaxHighlight, Snap! Project Embed) добавляем код, встраивать проекты, добавляем новые понятия в область знаний Робототехника

 Description
EM-алгоритмEM-алгоритм (англ. Expectation-maximization (EM) algorithm) — алгоритм, используемый в математической статистике для нахождения оценок максимального правдоподобия параметров вероятностных моделей, в случае, когда модель зависит от некоторых скрытых переменных. Каждая итерация алгоритма состоит из двух шагов. На E-шаге (expectation) вычисляется ожидаемое значение функции правдоподобия, при этом скрытые переменные рассматриваются как наблюдаемые. На M-шаге (maximization) вычисляется оценка максимального правдоподобия, таким образом увеличивается ожидаемое правдоподобие, вычисляемое на E-шаге. Затем это значение используется для E-шага на следующей итерации. Алгоритм выполняется до сходимости.
HTTPHTTP является основой обмена данными для Всемирной паутины. Это независимый от языка программирования протокол, предназначенный для обмена документами (также называемыми ресурсами) между приложениями через интернет. Протокол HTTP используется широким спектром приложений, наиболее известными из которых являются веб-браузеры.
Human-AI teamsИскусственные товарищи по команде
Inquiry based learningИсследовательское обучение или обучение через открытия — педагогический подход, разработанный в 1960-х годах как ответ на традиционные формы обучения, в которых требовалось запоминания информации из учебных материалов. Философия «обучения через открытие» происходит из конструктивистских теорий обучения, таких, как работы Пиаже, Дьюи, Выготского и Паулу Фрейре
SLAMSLAM (англ. simultaneous localization and mapping — одновременная локализация и построение карты) — метод, используемый в мобильных автономных средствах для построения карты в неизвестном пространстве или для обновления карты в заранее известном пространстве с одновременным контролем текущего местоположения и пройденного пути. Популярные методы приближённого решения данной задачи — фильтр частиц и расширенный фильтр Кальмана. Некоторые реализации метода используются в беспилотных автомобилях, летательных аппаратах, автономных подводных аппаратах, планетоходах, и даже внутри человеческого тела.
АгентАгенты - это автономные объекты, которые могут самостоятельно реагировать на внешние события и выбирать соответствующие действия. Это - некто или нечто, выполняющий инструкции. В информатике - сущность, которая расположена в некоторой среде и способна в этой среде к автономным целенаправленным действиям.
АдаптацияАдапта́ция (лат. adapto «приспособляю») — приспособление строения и функций организма, его органов и клеток к условиям внешней среды. Процессы адаптации направлены на сохранение гомеостаза.
  • Адаптация в кибернетике — процесс накопления и использования информации в системе, направленный на достижение определённого, обычно оптимального в некотором смысле, состояния или динамики (поведения) системы при начальной неопределённости и изменяющихся внешних условий, изменений окружающей среды. При адаптации могут изменяться параметры и структура системы, алгоритм её функционирования, управляющие воздействия и т. п.
АлгоритмАлгоритм — конечная совокупность точно заданных правил решения некоторого класса задач или набор инструкций, описывающих порядок действий исполнителя для решения определённой задачи. В старой трактовке вместо слова «порядок» использовалось слово «последовательность», но по мере развития параллельности в работе компьютеров слово «последовательность» стали заменять более общим словом «порядок». Независимые инструкции могут выполняться в произвольном порядке, параллельно, если это позволяют используемые исполнители. Aлгоритм (algorithm) — это любая корректно определенная вычислительная процедура, на вход (input) которой подается некоторая величина или набор величин, и результатом выполнения которой является выходная (output) величина или набор значений. Таким образом, алгоритм представляет собой последовательность вычислительных шагов, преобразующих входные величины в выходные.
Diagrams_bed5db8cee4f071de30328edd77489b1.png
База данныхБазы данных — это набор информации, которая хранится упорядоченно в электронном виде. В базе могут храниться данные о людях, товарах, заказах и о многом другом. Многие базы данных изначально представляют собой небольшой список в текстовом редакторе или электронной таблице. По мере увеличения объема данных в списке постепенно появляются несоответствия и излишняя информация. Информация, отображенная в виде списка, становится непонятной. Кроме того, ограничены способы, с помощью которых можно искать и отображать подмножества данных. Как только начинают появляться эти проблемы, мы рекомендуем перенести всю информацию в базу данных, созданную в системе управления базами данных (СУБД), такой как Access.
ВремяВре́мя — форма протекания физических и психических процессов, условие возможности изменения. Одно из основных понятий философии и физики, мера длительности существования всех объектов, характеристика последовательной смены их состояний в процессах и самих процессов, изменения и развития, а также одна из координат единого пространства-времени, представления о котором развиваются в теории относительности.

В философии — это необратимое течение (протекающее лишь в одном направлении — из прошлого, через настоящее в будущее).

В метрологии — физическая величина, одна из семи основных величин Международной системы величин (англ. International System of Quantities, фр. Système International de grandeurs, ISQ), а единица измерения времени «секунда» — одна из семи основных единиц в Международной системе единиц (СИ) (фр. Le Système International d’Unités, SI, англ. International System of Units, SI).
Двигательмашина, устройство, преобразующее какой-либо вид энергии в механическую работу. Термин мотор заимствован в первой половине XIX века из немецкого языка(нем. Motor — «двигатель», от лат. mōtor — «приводящий в движение») и преимущественно им называют электрические двигатели и двигатели внутреннего сгорания.

Двигатели подразделяют на первичные и вторичные. К первичным относят непосредственно преобразующие природные энергетические ресурсы в механическую работу, а ко вторичным — преобразующие энергию, выработанную или накопленную другими источниками.

К первичным двигателям (ПД) относятся ветряное колесо, использующее силу ветра, водяное колесо и гиревой механизм — их приводит в действие сила гравитации (падающая вода и сила притяжения), тепловые двигатели — в них химическая энергия топлива или ядерная энергия преобразуются в другие виды энергии. Ко вторичным двигателям (ВД) относятся электрические, пневматические и гидравлические двигатели.
Образовательная робототехникаРобот обычно используется как инструмент, платформа, которую можно использовать для практических исследований, решения проблем, исследовательского обучения, проб и ошибок. Учащиеся могут сотрудничать в группе в рамках проекта или конкретного запроса, используя робота для обоснования абстрактных концепций. Например, концепцию вращения можно изучить через движение робота. В других случаях робот может использоваться больше как коллега, например, в форме знающего коллеги, который помогает студенту, сокурсника или компаньона или даже коллеги, нуждающегося в помощи. В последнем случае учащийся становится учителем для робота-сверстника, а в первом робот-сверстник косвенно принимает на себя роль учителя.
Озеро данныхData lake — это огромное хранилище, которое принимает любые файлы всех форматов. Источник данных тоже не имеет никакого значения. Озеро данных может принимать данные из продуктовых каталогов, банковских программ, датчиков или умных устройств.
ПоискПо́иск — в широком смысле — стремление добиться чего-либо, найти что-либо и/или кого-либо; действия субъекта, направленные на получение нового или утерянного (забытого): новой информации (поиск информации), данных, сведений, знаний, разведку, открытие закономерностей; действия по раскрытию (осознанию) скрытых содержаний, недостающих для целостного состояния (в этом смысле поиск есть действие по восстановлению целостности).
ПрепятствиеПрепятствие можно определить как объект, сравнимый по величине с животным, чреватый возможностью столкновения и даже травмы.
ПроцедураПроцедура - (функция) часть программы, которую после однократного описания можно многократно вызвать по имени из последующих частей программы для выполнения определенных действий. Создание процедуры - пример того, как используется абстракция - новые блоки могут в дальнейшем объединяться между собой
РоботРобот (robot) — приводной механизм, программируемый по двум и более осям, имеющий некоторую степень автономности, движущийся внутри своей рабочей среды и выполняющий задачи по предназначению.
РобототехникаРобототе́хника (от робот и техника; англ. robotics) — прикладная наука, занимающаяся разработкой автоматизированных технических систем
Сервоприводэто электромеханический привод, который через внутреннюю обратную связь, устанавливает точное положение вала механизма в зависимости от внешних управляющих сигналов.
Теорема БайесаТеорема Байеса (или формула Байеса) — одна из основных теорем элементарной теории вероятностей, которая позволяет определить вероятность события при условии, что произошло другое статистически взаимозависимое с ним событие. Другими словами, по формуле Байеса можно уточнить вероятность какого-либо события, взяв в расчёт как ранее известную информацию, так и данные новых наблюдений. Формула Байеса может быть выведена из основных аксиом теории вероятностей, в частности из условной вероятности. Особенность теоремы Байеса заключается в том, что для её практического применения требуется большое количество расчётов, вычислений, поэтому байесовские оценки стали активно использовать только после революции в компьютерных и сетевых технологиях. На сегодняшний день активно применяется в машинном обучении и технологиях искусственного интеллекта.
ФункцияФункция в программировании, или подпрограмма — фрагмент программного кода, к которому можно обратиться из другого места программы. В большинстве случаев с функцией связывается идентификатор, но многие языки допускают и безымянные функции. С именем функции неразрывно связан адрес первой инструкции (оператора), входящей в функцию, которой передаётся управление при обращении к функции. После выполнения функции управление возвращается обратно в адрес возврата — точку программы, где данная функция была вызвана.
Шаговый двигательШаговый двигатель представляет собой электрическую машину, предназначенную для преобразования электрической энергии сети в механическую энергию. Конструктивно состоит из обмоток статора и магнитомягкого или магнитотвердого ротора. Отличительной особенностью шагового двигателя является дискретное вращение, при котором заданному числу импульсов соответствует определенное число совершаемых шагов. Наибольшее применение такие устройства получили в станках с ЧПУ, робототехнике, устройствах хранения и считывания информации.

Роботы, языки, игры и паттерны поведения агентов

Роботы

Arduino, Codey Rocky, Ergo Jr, Finch Robot, Hummingbird, LEGO Boost, LEGO Mindstorms EV3, LEGO WeDo, Lego Mindstorms, Lego Spike Prime, Robbo, Tinkercad, Trinket рисуем дом, VEX Robotics, Роббо Отто

Видеоигры

Видеоигры

Языки программирования

Category:Язык программирования

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

 Environment
ArduinoScratch
Snap!
XOD
C++
Codey RockyScratch
Python
Ergo JrSnap!
Finch RobotScratch
Snap!
HummingbirdSnap!
Java
Python
MakeCode
LEGO BoostScratch
LEGO Mindstorms EV3Scratch
Python
Виртуальная среда TRIK Studio
LEGO WeDoScratch
Lego MindstormsScratch
Python
Lego Spike PrimeScratch
Python
RobboScratch
Python
TinkercadJavaScript
Web
VEX RoboticsScratch
Python
Robot Mesh Studio
PROS
RobotC
VexCode
Роббо ОттоScratch

Паттерны поведения исполнителей

Не всякое поведение исполнителей можно пока имитировать в мире роботов, но для многих паттернов можно решение. Например - тащить,

 Description of problem
Генерировать новых агентов120px-Create_netlogo.png
Агент порождает поток других агентов - например, в экологических моделях рождение используется для создания потомков, в играх из пистолета вылетают пули, которые он порождает, в историях Scratch капли дождя клонируются и падают из тучи на землю.
Накапливать энергиюАгент живёт в среде, перемещается, выполняет задания и накапливает энергию или собирает очки
Перевозить другого агента на себеТранспортировка представляет собой ситуацию, когда один агент перевозит на себе другого агента. Например, черепаха в Frogger несёт лягушку, пересекая реку. В экологических симуляциях процесс транспортировки можно использовать, например, для перевозки пыльцы пчёлами.
Перемещаться случайным образомАгент или агенты перемещаются по экрану случайным образом - стандартная для многих игр и симуляций ситуация, которую надо уметь воспроизводить - термиты, птицы и рыбы при формировании стай изначально перемещаются случайным образом.
Поглощать агентов120px-Delete_starlogo.png
  • Поглощение: обратный генерации процесс, когда агент не порождает, а поглощает других агентов. Например, земля поглощает падающие с неба капли воды, хищник съедает жертву, с которой он встречается.
Подчиняться клавишам клавиатурыРеагировать на клавиши клавиатуры Движение клавиатуры: нажатия кнопок клавиатуры управляют движением агента. И здесь могут быть паттерны типа Прыгать - как писал Пейперт в этой статье писал про Марио и как воспроизвести поведение Марио
Поиск восхождением к вершинеПоиск восхождением к вершине - алгоритм поиска в компьютерных науках, когда агент просматривает значения переменных на ближайших полях и на поле с максимальным значением переменной. Использование алгоритма поиск восхождением к вершине можно наблюдать в таких играх как Sims или Pac-Man, когда призраки преследуют Pacman, следуя наивысшему значению запаха Pac-man, который распространяется по всему полю см. http://ccl.northwestern.edu/netlogo/models/Pac-Man
Превращаться в другого агентаПревращение - один агент превращается в другого агента. Возможный вариант - агент одной породы превращается в агента другой породы.
Преследовать другого агентаОдин агент преследует другого агента - поворачивается в его сторону или поворачивается в том же направлении, куда движется другой агент
РаспространятьсяДиффузия: паттерн распространения, когда вы можете распространять определённое количество агента на других агентов, расположенных по близости за счёт процесса диффузии. Например, в модели муравьёв в NetLogo муравьи выделяют вещества феромоны, которые диффундируют на ближайшие поля игрового поля.
Сталкиваться120px-Collision_starlogo.png
  • Паттерн определяет поведение агентов в случае их физического столкновения с другими агентами. Например, столкновение пули с мишенью. В игре Frogger, если грузовик сталкивается с лягушкой, лягушку нужно «раздавить»
  • ТащитьТащить - паттерн "тащить" противоположен по значению паттерну толкать - агент может тащить за собой другого агента или агентов. Например, поезд тащит за собой вагоны, лошадь тащит за собой сани, буксир тащит за собой баржи или плот.
    ТолкатьПаттерн "толкать" — это паттерн, который мы видим во многих играх. Агент должен толкать ящики или мешки с золотом. Когда игрок толкает коробку или мешок, эти объекты движутся в том направлении (вверх, вниз, вправо или влево), в котором их толкнули.

    Проектирование управления при помощи UML диаграмм

    Роботы и данные

    Литература

    Educational Robotics and Tangible Devices for Promoting Computational Thinking - Файл:Frobt-08-713416.pdf

    Видеоматериалы

    Ссылки на сообщества

    Критерии оценки по дисциплине

    Образовательный результат Тема Задание Пример
    Представлять разнообразие робототехнических систем, уметь использовать понятия, связанные с робототехникой и программированием робототехнических устройств Ключевые понятия программирования роботов Принять участие в обсуждении понятий, связанных с темой Робототехника, предложить и добавить понятия в эту область знаний - Category:Понятие EM-алгоритм, HTTP, Human-AI teams, Inquiry based learning, SLAM, Агент, Адаптация, Алгоритм, База данных, Время, Двигатель, Образовательная робототехника, Озеро данных, Поиск, Препятствие, Процедура, Робот, Робототехника, Сервопривод, Теорема Байеса, Функция, Шаговый двигатель
    использовать, обсуждать и видоизменять материалы, связанные с образовательными роботами, языками программирования, видеоиграми и паттернами поведения программируемых агентов Роботы, языки, игры и паттерны поведения агентов Дополнить и поправить существующие статьи (изображения, ссылки на YouTube, схемы, тексты, код) роботы - Arduino, Codey Rocky, Ergo Jr, Finch Robot, Hummingbird, LEGO Boost, LEGO Mindstorms EV3, LEGO WeDo, Lego Mindstorms, Lego Spike Prime, Robbo, Tinkercad, Trinket рисуем дом, VEX Robotics, Роббо Отто ; видеоигры - Видеоигры; языки программирования Category:Язык программирования, паттерны поведения исполнителей - Генерировать новых агентов, Накапливать энергию, Перевозить другого агента на себе, Перемещаться случайным образом, Поглощать агентов, Подчиняться клавишам клавиатуры, Поиск восхождением к вершине, Превращаться в другого агента, Преследовать другого агента, Распространяться, Сталкиваться, Тащить, Толкать
    Использовать диаграммы UML при планировании проектов программирования роботов Проектирование управления при помощи UML диаграмм Подготовить собственные диаграммы, представляющие процесс управления роботами Пример - Категория:Diagrams
    Использовать текстовые и визуальные блоки управления роботами при создании методических материалов Использование расширений, позволяющих использовать код и встраивать проекты EmbedScratch, ScratchBlocks4, SyntaxHighlight, Snap! Project Embed Подготовить статью с использованием текстового или визуального кода программ, управляющих роботами Пример статьи
    Использовать готовые датасеты для обучения роботов и собирать данные, порождаемые роботами и симуляторами роботов Роботы и данные Использовать готовые и собирать данные с искусственного поля Роботы и данные - Category:Dataset