Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017) — различия между версиями

Материал из 0x1.tv

 
(не показано 39 промежуточных версий этого же участника)
== Тезисы ==
<latex>
\section{
=== Задачи образовательной робототехники} ===
Ответ на вопрос: «Что такое робот?», — с  точки зрения содержания и методики преподавания, можно свести к двум
 вариантам:

\begin{itemize}
\item* Робот — это автономное, программируемое, программно-аппа\-рат\-ноеаппаратное решение с набором датчиков и исполнительных
 механизмов;
\item* Робот — это управляемый набор программно-аппаратных компонент, осуществляющий различные производственные и иные
 операции.
\end{itemize}

В первом случае, основной упор делается на разработку и программирование автономной робототехнической модели, например,
 для решения олимпиадных задач, во втором — на подробное изучение функциональных возможностей отдельных
 программно-аппаратных компонент, представленное в иностранных образовательных заведениях, как  STEM-направление
\cite{<ref name="sin-8}.

\section{">U.S. Department of Education, ''Science, Technology, Engineering and Math}: Education for Global Leadership'', 2015, \url{[https://www.ed.gov/stem ed.gov]</ref>.

=== Программно-аппаратные средства} ===
Данный доклад посвящён разбору возможностей и ограничений средств разработки для программирования роботов в рамках
 первого подхода. При этом, одну из важнейших функций играет поддержка средой разработки возможности программирования
 той или иной робототехнической платформы через различные проводные и беспроводные интерфейсы.  
Стандартом де-факто, в
 качестве такой платформы в задачах олимпиадного, робототехнического программирования, на текущий момент, является
 конструктор Lego Mindstorms EV3 \cite{<ref name="sin-1}. ">''Л.\, Ю.\, Овсяницкая, Д.\, Н.\, Овсяницкий, А.\, Д.\,Овсяницкий},  Овсяницкий'', ''Курс программирования робота EV3 в среде Lego Mindstorms EV3'' / М.: Издательство <<«Перо», 2016.</ref>.  
В качестве свободной, недорогой альтернативы ему представлены
 различные решения на базе платформы Arduino \cite{<ref name="sin-3}">Arduino, ''Getting Started with Arduino and Genuino products'', 2016, \url{[https://www.arduino.cc/en/Guide/HomePage arduino.cc]</ref>, которая включает в себя открытую аппаратную платформу для
 различных типов микроконтроллеров и среду разработки, позволяющую выполнять прошивку этих микроконтроллеров через
 стандартный USB-интерфейс.

В силу открытости платформы Arduino крупные компании самостоятельно реализуют для неё поддержку своих отладочных плат —
 Edisson \cite{<ref name="sin-6}">''Stephanie Moyerman}Moyerman'', ''Getting Started with Intel Edison Sensors, Actuators, Bluetooth, and Wi-Fi on the Tiny Atom-Powered Linux Module'' / Maker Media, Inc, 2015.</ref> от Intel, LaunchPad \cite{<ref name="sin-7} ">Texas Instruments}, ''Getting Started with Energia'', 2016, \url{[http://energia.nu/guide/ energia.nu]</ref> от Texas Instruments, ESP8266 \cite{<ref name="sin-4}">''Neil Kolban}Kolban'', ''Kolban's Book on the ESP32 \& ESP8266'' / Leanpub, 2016.</ref> от Espressif и
 др.  
Кроме того, для большинства недорогих датчиков и исполнительных механизмов, как правило, доступно множество
 примеров исходного кода. 

Таким образом, одной из основныйх свободных альтернатив, в качестве аппаратной базы для образовательной робототехники,
 является именно платформа Arduino.  
Тем не менее, реальное применение Arduino, в качестве замены для весьма
 дорогостоящих Lego Mindstorms, в задачах образовательной и олимпиадной робототехники до сих пор не осуществленао, в силу
 следующих причин:

\begin{itemize}
\item* основной язык программирования для Arduino --- С C++;
\item* целостная сборка готового решения на базе доступных примеров, зачастую, требует реализации элементов операционной
 системы реального времени;
\item* различные аппаратные средства требуют подключения и монтажа электронных компонент через различные аппаратные
 интерфейсы (I2C, UART, SPI), а также реализацию протоколов для проводных и беспроводных интерфейсов (Ethernet, Wifi,
 Bluetooth и др.);
\item Отсутствуют* отсутствуют и требуют дополнительного программирования кнопки управления, модуль визуального отображения и вывода
 звука;
\item Требуется* требуется отдельное подключение исполнительных механизмов через специальные силовые драйверы с повышенным
 напряжением, а также подключение и программирование энкодеров.
\end{itemize}

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

\section{=== Средства разработки} ===
Тем не менее, в качестве базовой, свободной среды разработки для доступных по стоимости робототехнических решений
 являются средства платформы Arduino.

При этом, например, в Mindstorm, где все аппаратные модули заранее реализованы, за программную часть управления
 аппаратными средствами отвечает операционная система на базе Linux, базовая прошивка, включающая специализированную
 виртуальную машину и генератор байткода для этой виртуальной машины, реализованный в рамках проприетарной графической
 среды разработки, работающей под MacOS и Windows (есть вариант запустить с помощью wWine).

%\begin{figure}[h!]
%\centering
%\ncludegraphics[width=0.6\textwidth]{robots_arch1}
%\caption{}
%\label{img1}
%\end{figure}

В качестве альтернативы для программирования Mindstorm существует ряд дополнительных свободных проектов, загружаемых с
 внешней SD-карты…

%\begin{figure}[h!]
%\centering
%\ncludegraphics[width=0.6\textwidth]{robots_arch2}
%\caption{}
%\label{img1}
%\end{figure}

\begin{itemize}
\item* EV3Dev\cite{<ref name="sin-5} ">''Ralph Hempel and David Lechner}Lechner'', ''Getting Started with ev3dev, 2016, \url{ ev3dev'', 2016, [http://www.ev3dev.org/docs/getting-started/ ev3dev.org]</ref>  сборка на базе Debian (не имеет среды разработки, позволяет использовать любые языки
 программирования, доступные в прошивке, при подключении через SSH — shell, python, C/C++, NodeJS и др.);
\item* LejOS  на базе Java (имеет плагин для среды Eclipse);
\item* MonoBrick  на базе .Net/Mono (имеет плагин для среды Xamarin Studio);
\end{itemize}

Кроме несовместимых с базовой прошивкой свободных альтернатив существует проприетарный набор продуктов RobotC, который
 самостоятельно генерирует байтокод для виртуальной машины из базовой прошивки, поддерживает дополнительные платформы, в
 частности Arduino, а также предоставляет трёхмерную среду-эмулятор для отладки программ.

Подобное решение представлено в свободной, кроссплатформенной, графической среде разработки TrikStudio (первичное
 название qreal).  
Данная среда поддерживает, как собственную платформу TRIK, так и платформу Mindstorm.  
При этом
 поддержка платформы Arduino отсутствует, но имеется встроенная, двухмерная среда{}-эмулятор для отладки программ.

Одним из перспективных вариантов реализации универсальной, графической среды разработки является следующее поколение
 программной платформы ScratchX (или Scratch 2.0), выполненное на базе web-технологий (также доступная в offline -режиме
 через технологию Adobe Air).  
В этой программной платформе поддержка различных аппаратных платформ реализована в виде
 плагинов для браузера Chrome.  
К сожалению, на текущий момент, поддержка Linux в этом решении отсутствует.

При этом, для платформы Arduino имеется имеется брошенный, не развивающийся, но пока работоспособный, проект
 графического расширения Ardublock, выполненный в виде jJava-плагина, реализованныйого на базе OpenBlocks в виде таких же
 блоков, как в проекте Scratch.  
На текущий момент, это наиболее простое, доступное средство графического
 программирования для Arduino.

Кроме десктопных решений, для платформы Arduino реализован ряд web-эмуляторов с поддержкой различного оборудования.  
Наиболее популярным среди них является набор 123D/circuits.io от Autodesk.  
С недавнего времени, в рамках проекта
 Arduino, реализовано собственное web-решение Arduino Create \cite{<ref name="sin-2} ">''Alice Pintus}Pintus'', ''Sneak peek on the new, web-based Arduino Create'', 2015, \url{[https://blog.arduino.cc/2015/05/05/sneak-peak-arduino-create/ blog.arduino.cc]</ref> с возможностью прошивки контроллеров через
 плагин для браузера.

\section[Возможности и ограничения в олимпиадных задачах]{Возможности и ограничения в олимпиадных задачах}=== Возможности и ограничения в олимпиадных задачах ===
Практика подготовки к решению олимпиадных задач по робототехнике даёт ряд противоречивых ограничений — сложность
 освоения среды разработки (включая язык программирования) и необходимость реализации не тривиальных алгоритмов (включая
 работу со структурами данных).  
В первом случае графическая среда разработки помогает снизить порог вхождения, во втором
 — существенно замедляет или, вообще, вовсе не позволяет достаточно выразительно реализовывать алгоритмы.

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

В связи с этим возможности платформы Arduino выглядят достаточно перспективно в случае генерации настроек и базового
 кода на основе шаблонов.  
Особенно для средств разработки и симуляции, доступных в виде web-решений.  
Тем не менее,
 актуальность генерации кода на основе визуальных шаблонов, диаграмм и блок-схем сохраняется для олимпиадных и
 образовательных задач по робототехнике.  
Отсутствие же таких средств, резко снижает возможности платформы Arduino по
 сравнению с платформой Mindstorm.

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

\begin{thebibliography}{}
\bibitem{sin-1} \emph{>>, 2016
\bibitem{sin-2} \emph{}
\bibitem{sin-3}  Arduino, }
\bibitem{sin-4} \emph{
\bibitem{sin-5}  \emph{}
\bibitem{sin-6} \emph{
\bibitem{sin-7}  \emph{}
\bibitem{sin-8}  \emph{}
\end{thebibliography}
</latex>

{{----}}

== Примечания и отзывы ==
<!-- <blockquote>[©]</blockquote> -->

{{fblink|1850546901864989}}                                          
{{vklink|432}}                                          
<references/>





[[File:{{#setmainimage:Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017)!.jpg}}|center|640px]]
<!-- topub -->




{{stats|disqus_comments=0|refresh_time=2017-07-07T03:36:53.3450002021-08-31T16:48:06.302411|vimeo_comments=0|vimeo_plays=2535|youtube_comments=0|youtube_plays=9}}

[[Категория:OSEDUCONF-2017]]
[[Категория:СПО в образовании]]
[[Категория:Робототехника]]
[[Категория:Arduino]]

Текущая версия на 06:21, 20 октября 2025

Аннотация

Докладчик
Евгений Синельников.jpg
Евгений Синельников

Современные робототехнические конструкторы требуют специальные средства разработки.

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

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

Видео

on youtube

Слайды

Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017).pdf

Тезисы

Задачи образовательной робототехники

Ответ на вопрос: «Что такое робот?» — с точки зрения содержания и методики преподавания, можно свести к двум вариантам:

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

В первом случае основной упор делается на разработку и программирование автономной робототехнической модели, например, для решения олимпиадных задач, во втором — на подробное изучение функциональных возможностей отдельных программно-аппаратных компонент, представленное в иностранных образовательных заведениях, как STEM-направление[1].

Программно-аппаратные средства

Данный доклад посвящён разбору возможностей и ограничений средств разработки для программирования роботов в рамках первого подхода. При этом одну из важнейших функций играет поддержка средой разработки возможности программирования той или иной робототехнической платформы через различные проводные и беспроводные интерфейсы. Стандартом де-факто, в качестве такой платформы в задачах олимпиадного робототехнического программирования, на текущий момент является конструктор Lego Mindstorms EV3[2]. В качестве свободной, недорогой альтернативы ему представлены различные решения на базе платформы Arduino[3], которая включает в себя открытую аппаратную платформу для различных типов микроконтроллеров и среду разработки, позволяющую выполнять прошивку этих микроконтроллеров через стандартный USB-интерфейс.

В силу открытости платформы Arduino крупные компании самостоятельно реализуют для неё поддержку своих отладочных плат — Edisson[4] от Intel, LaunchPad[5] от Texas Instruments, ESP8266[6] от Espressif и др. Кроме того, для большинства недорогих датчиков и исполнительных механизмов, как правило, доступно множество примеров исходного кода.

Таким образом, одной из основных свободных альтернатив, в качестве аппаратной базы для образовательной робототехники, является именно платформа Arduino. Тем не менее, реальное применение Arduino, в качестве замены для весьма дорогостоящих Lego Mindstorms, в задачах образовательной и олимпиадной робототехники до сих пор не осуществлено, в силу следующих причин:

  • основной язык программирования для Arduino — C++;
  • целостная сборка готового решения на базе доступных примеров зачастую требует реализации элементов операционной системы реального времени;
  • различные аппаратные средства требуют подключения и монтажа электронных компонент через различные аппаратные интерфейсы (I2C, UART, SPI), а также реализацию протоколов для проводных и беспроводных интерфейсов (Ethernet, Wifi, Bluetooth и др.);
  • отсутствуют и требуют дополнительного программирования кнопки управления, модуль визуального отображения и вывода звука;
  • требуется отдельное подключение исполнительных механизмов через специальные силовые драйверы с повышенным напряжением, а также подключение и программирование энкодеров.

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

Средства разработки

Тем не менее, в качестве базовой свободной среды разработки для доступных по стоимости робототехнических решений являются средства платформы Arduino.

При этом, например, в Mindstorm, где все аппаратные модули заранее реализованы, за программную часть управления аппаратными средствами отвечает операционная система на базе Linux, базовая прошивка, включающая специализированную виртуальную машину и генератор байткода для этой виртуальной машины, реализованный в рамках проприетарной графической среды разработки, работающей под MacOS и Windows (есть вариант запустить с помощью Wine).

В качестве альтернативы для программирования Mindstorm существует ряд дополнительных свободных проектов, загружаемых с внешней SD-карты…

  • EV3Dev[7] — сборка на базе Debian (не имеет среды разработки, позволяет использовать любые языки программирования, доступные в прошивке, при подключении через SSH — shell, python, C/C++, NodeJS и др.);
  • LejOS — на базе Java (имеет плагин для среды Eclipse);
  • MonoBrick — на базе .Net/Mono (имеет плагин для среды Xamarin Studio);

Кроме несовместимых с базовой прошивкой свободных альтернатив существует проприетарный набор продуктов RobotC, который самостоятельно генерирует байткод для виртуальной машины из базовой прошивки, поддерживает дополнительные платформы, в частности Arduino, а также предоставляет трёхмерную среду-эмулятор для отладки программ.

Подобное решение представлено в свободной, кроссплатформенной, графической среде разработки TrikStudio (первичное название qreal). Данная среда поддерживает как собственную платформу TRIK, так и платформу Mindstorm. При этом поддержка платформы Arduino отсутствует, но имеется встроенная двухмерная среда-эмулятор для отладки программ.

Одним из перспективных вариантов реализации универсальной графической среды разработки является следующее поколение программной платформы ScratchX (или Scratch 2.0), выполненное на базе web-технологий (также доступная в offline-режиме через технологию Adobe Air). В этой программной платформе поддержка различных аппаратных платформ реализована в виде плагинов для браузера Chrome. К сожалению, на текущий момент поддержка Linux в этом решении отсутствует.

При этом для платформы Arduino имеется брошенный, не развивающийся, но пока работоспособный проект графического расширения Ardublock, выполненный в виде Java-плагина, реализованного на базе OpenBlocks в виде таких же блоков, как в проекте Scratch. На текущий момент это наиболее простое доступное средство графического программирования для Arduino.

Кроме десктопных решений для платформы Arduino реализован ряд web-эмуляторов с поддержкой различного оборудования. Наиболее популярным среди них является набор 123D/circuits.io от Autodesk. С недавнего времени в рамках проекта Arduino реализовано собственное web-решение Arduino Create[8] с возможностью прошивки контроллеров через плагин для браузера.

Возможности и ограничения в олимпиадных задачах

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

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

В связи с этим возможности платформы Arduino выглядят достаточно перспективно в случае генерации настроек и базового кода на основе шаблонов. Особенно для средств разработки и симуляции, доступных в виде web-решений. Тем не менее, актуальность генерации кода на основе визуальных шаблонов, диаграмм и блок-схем сохраняется для олимпиадных и образовательных задач по робототехнике. Отсутствие же таких средств резко снижает возможности платформы Arduino по сравнению с платформой Mindstorm.

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

Примечания и отзывы

  1. U.S. Department of Education, Science, Technology, Engineering and Math: Education for Global Leadership, 2015, ed.gov
  2. Л. Ю. Овсяницкая, Д. Н. Овсяницкий, А. Д. Овсяницкий, Курс программирования робота EV3 в среде Lego Mindstorms EV3 / М.: Издательство «Перо», 2016.
  3. Arduino, Getting Started with Arduino and Genuino products, 2016, arduino.cc
  4. Stephanie Moyerman, Getting Started with Intel Edison Sensors, Actuators, Bluetooth, and Wi-Fi on the Tiny Atom-Powered Linux Module / Maker Media, Inc, 2015.
  5. Texas Instruments, Getting Started with Energia, 2016, energia.nu
  6. Neil Kolban, Kolban's Book on the ESP32 & ESP8266 / Leanpub, 2016.
  7. Ralph Hempel and David Lechner, Getting Started with ev3dev, 2016, ev3dev.org
  8. Alice Pintus, Sneak peek on the new, web-based Arduino Create, 2015, blog.arduino.cc
Анализ свободных средств разработки для образовательной робототехники (Евгений Синельников, OSEDUCONF-2017)!.jpg

Plays:44   Comments:0