Создание языка программирования роботов в терминах потоков данных с применением DSM-подхода
|
Введение 4
1. Среды и языки программирования роботов 7
1.1. Промышленные инструменты 7
1.2. Учебные инструменты 11
1.3. Академические инструменты 14
1.4. Выводы 15
2. Архитектуры построения систем управления роботами 17
3. Реализация 20
3.1. Спецификация языка 20
3.1.1. Блоки управления 21
3.1.2. Блоки рисования на экране 26
3.1.3. Блоки управления потоками 27
3.1.4. Блоки взаимодействия 28
3.2. Реализация инструментария 30
3.2.1. Визуальный редактор 30
3.2.2. Интерпретатор 31
4. Апробация 36
4.1. ПД-регулятор для движения вдоль стены 36
4.2. Трехуровневая система управления 37
Заключение 40
Список литературы 42
1. Среды и языки программирования роботов 7
1.1. Промышленные инструменты 7
1.2. Учебные инструменты 11
1.3. Академические инструменты 14
1.4. Выводы 15
2. Архитектуры построения систем управления роботами 17
3. Реализация 20
3.1. Спецификация языка 20
3.1.1. Блоки управления 21
3.1.2. Блоки рисования на экране 26
3.1.3. Блоки управления потоками 27
3.1.4. Блоки взаимодействия 28
3.2. Реализация инструментария 30
3.2.1. Визуальный редактор 30
3.2.2. Интерпретатор 31
4. Апробация 36
4.1. ПД-регулятор для движения вдоль стены 36
4.2. Трехуровневая система управления 37
Заключение 40
Список литературы 42
В настоящее время интерес к конструированию роботов и управлению ими растет. В этой области проводится множество исследований: на крупнейших робототехнических конференциях, таких как IROS , ICRA , исследовательские группы со всего мира обсуждают новые подходы к решению раз¬личных проблем в робототехнике. На протяжении последних трех десятилетий проводится исследование возможностей применения визуальных языков программирования (visual programming languages, VPLs), результаты исследований публикуются на крупнейших конференциях, таких как симпозиум VL/HCC . Пересечение этих областей образует отдельную активно развивающуюся область с множеством публикуемых работ, таких как [1, 2, 3, 4, 5]. Визуальные языки программирования в робототехнике позволяют сокращать время создания систем управления роботами, а также нагляднее их отображать. Это, в частности, используется для обучения школьников или новичков программированию роботов: есть множество сред, таких как ROBOLAB , NXT-G , TRIK Studio , которые позволяют программировать поведение ро-бота с помощью модельно-ориентированного подхода (model driven architecture, MDAy. для описания программы используется набор моделей, в данном случае визуальных, имитирующих высокоуровневые паттерны поведения ро¬бота.
Система управления роботом представляет собой взаимодействие трех составляющих: датчики и сенсоры, логика системы управления, приводы. Датчики и сенсоры генерируют данные, логика системы управления собирает значения, обрабатывает их и генерирует импульсы для приводов. Получается, что по своей природе программы управления роботами реактивны: они обрабатывают сигналы, непрерывно приходящие с датчиков и сенсоров, и генерируют управляющую информацию для приводов, то есть они решают задачу трансформации данных. Для программирования таких систем хорошо подходят потоковые или реактивные языки программирования, они же — языки программирования потоков данных (data flow languages, DFLs). Данные языки, в свою очередь, тоже активно эволюционировали от текстовых языков к визуальным языкам потоков данных, которые сейчас широко распространены [6,7]. Визуальные потоковые языки превосходят текстовые хотя бы тем, что при программировании потоков данных они явно отображают по¬токи данных на диаграмме. В индустрии программирования роботов существует несколько широко распространенных, крупных и довольно-таки сложных сред программирования, которые позволяют программировать на потоковых языках, к примеру, Simulink , LabVIEW , Microsoft Robotics Developer Studio . Эти среды предоставляют пользователю большой и даже порой громоздкий набор средств и библиотек для программирования различных роботов.
Для обучения кибернетике и робототехнике существует большое количество различных кибернетических конструкторов, к примеру, конструктор TRIK , конструкторы LEGO MINDSTORMS . Подавляющее большинство распространенных и общеизвестных языков программирования, которые используются для обучения программированию на таких конструкторах, основаны на модели исполнения программы в модели потока управления, в то время как индустриальные среды используют языки, которые основаны на модели потока данных. В то же время, при освоении учебных языков зачастую возникает ощущение неудобства их использования для решения раз¬личных типовых задач создания систем управления роботом.
Несмотря на это, проводятся попытки адаптации парадигмы языков по-токов данных к образованию, например, в работах [3, 5, 8]. Однако, учебных сред программирования роботов, позволяющих создавать системы управления на потоковых языках, и в то же время доступных для бесплатного академического использования либо нет, либо они находятся на стадии разработок.
Система управления роботом представляет собой взаимодействие трех составляющих: датчики и сенсоры, логика системы управления, приводы. Датчики и сенсоры генерируют данные, логика системы управления собирает значения, обрабатывает их и генерирует импульсы для приводов. Получается, что по своей природе программы управления роботами реактивны: они обрабатывают сигналы, непрерывно приходящие с датчиков и сенсоров, и генерируют управляющую информацию для приводов, то есть они решают задачу трансформации данных. Для программирования таких систем хорошо подходят потоковые или реактивные языки программирования, они же — языки программирования потоков данных (data flow languages, DFLs). Данные языки, в свою очередь, тоже активно эволюционировали от текстовых языков к визуальным языкам потоков данных, которые сейчас широко распространены [6,7]. Визуальные потоковые языки превосходят текстовые хотя бы тем, что при программировании потоков данных они явно отображают по¬токи данных на диаграмме. В индустрии программирования роботов существует несколько широко распространенных, крупных и довольно-таки сложных сред программирования, которые позволяют программировать на потоковых языках, к примеру, Simulink , LabVIEW , Microsoft Robotics Developer Studio . Эти среды предоставляют пользователю большой и даже порой громоздкий набор средств и библиотек для программирования различных роботов.
Для обучения кибернетике и робототехнике существует большое количество различных кибернетических конструкторов, к примеру, конструктор TRIK , конструкторы LEGO MINDSTORMS . Подавляющее большинство распространенных и общеизвестных языков программирования, которые используются для обучения программированию на таких конструкторах, основаны на модели исполнения программы в модели потока управления, в то время как индустриальные среды используют языки, которые основаны на модели потока данных. В то же время, при освоении учебных языков зачастую возникает ощущение неудобства их использования для решения раз¬личных типовых задач создания систем управления роботом.
Несмотря на это, проводятся попытки адаптации парадигмы языков по-токов данных к образованию, например, в работах [3, 5, 8]. Однако, учебных сред программирования роботов, позволяющих создавать системы управления на потоковых языках, и в то же время доступных для бесплатного академического использования либо нет, либо они находятся на стадии разработок.
В рамках данной выпускной квалификационной работы был создан новый язык программирования роботов в терминах потоков данных для учебных робототехнических конструкторов TRIK, LEGO NXT, LEGO EV3. Для использования языка был создан редактор визуального языка с применением модельно-ориентированного подхода на базе DSM-платформы QReal, создан-ной на кафедре Системного программирования СПбГУ Им была расширена среда программирования роботов TRIK Studio. Для исполнения созданных с помощью визуального редактора программ была разработана компонента, позволяющая их интерпретировать. Данная компонента тоже является рас-ширением для TRIK Studio. Интерпретация программ, созданных на новом языке может быть осуществлена на двумерной симуляционной модели ро¬бота, а также непосредственно на реальных роботах. Язык оказался достаточно простым в освоении, и в то же время обладает достаточными функциональными возможностями, чтобы создавать сложные системы управления, управляющие различными аспектами поведения робота. Это доказывает про-веденная апробация языка и инструментария его поддержки для программирования типичных учебных задач в робототехнике, а также для более сложных систем управления роботом.
Результаты работы, а именно программный код и видеоролики апробации находятся в открытом доступе.
Дальнейшие перспективы
В качестве дальнейшего развитие нового инструмента планируется реализовать генераторы нового визуального языка в текстовые языки программирования, уже поддерживаемые средой TRIK Studio, к примеру, NXT OSEK C для LEGO NXT, байткод для LEGO EV3, JavaScript, F# [25] и Kotlin для TRIK, чтобы позволить программам выполняться на роботах автономно.
Созданную систему можно рассматривать в качестве платформы для по-следующих академических исследований. Во-первых, требуется формализация семантики языка для того, чтобы иметь возможность применения раз¬личных формальных методов анализа программ, выраженных в новом языке. Другая ветвь развития — это применение предметно-ориентированного моделирования для автоматической генерации метамодели языка по спецификациям модулей промежуточного программного обеспечения (middleware) ROS [26] или Player [27].
Результаты работы, а именно программный код и видеоролики апробации находятся в открытом доступе.
Дальнейшие перспективы
В качестве дальнейшего развитие нового инструмента планируется реализовать генераторы нового визуального языка в текстовые языки программирования, уже поддерживаемые средой TRIK Studio, к примеру, NXT OSEK C для LEGO NXT, байткод для LEGO EV3, JavaScript, F# [25] и Kotlin для TRIK, чтобы позволить программам выполняться на роботах автономно.
Созданную систему можно рассматривать в качестве платформы для по-следующих академических исследований. Во-первых, требуется формализация семантики языка для того, чтобы иметь возможность применения раз¬личных формальных методов анализа программ, выраженных в новом языке. Другая ветвь развития — это применение предметно-ориентированного моделирования для автоматической генерации метамодели языка по спецификациям модулей промежуточного программного обеспечения (middleware) ROS [26] или Player [27].



