Конструкторы программируемых роботов. Программирование и управление промышленными роботами

Для iPad — образовательного приложения для кодирования. Приложение позволяет программировать роботов, дронов и музыкальных инструментов на Swift — языке от Apple.

“Несмотря на то, что Swift предназначен в первую очередь для разработчиков iOS и mac OS, приложение также позволит понять общие концепции программирования, зная которые, можно смелее начать изучение любого понравившегося языка программирования и углубляться в его тонкости”, — говорит Илья Вислоцкий, руководитель департамента разработки Stack Group.

“В прошлом, если человеку захотелось разобраться, как работают программы, или хотел попробовать себя в программировании, то у него не было выбора, кроме как сразу использовать профессиональные IDE”, — отмечает Илья Вислоцкий. Сейчас создано уже довольно много учебных программ, они позволяют привлечь детей в программирование и разобрать основные конструкции алгоритмизации (условие, цикл, подпрограммы). «Я сам часто играю в подобные игры, например Lightbot. На мой взгляд вдвойне полезно, если программа ограничивает алгоритм по количеству операций, так как задание можно выполнить множеством способов, стремясь к самому эффективному», — добавляет Максим Бекурин, тренер по робототехнике центр «Техноit».

А вот аналогов в формате приложения для планшета, даже немного схожих по функционалу и назначению, нет. В Swift Playgrounds пользователь может мгновенно увидеть созданный им код и напрямую управлять устройствами — уроки программирования станут еще увлекательнее и более наглядными. С помощью Bluetooth приложение легко подключается к разным роботам и дронам от нескольких компаний.

Универсальная платформа взаимодействует с пятью моделями:

  1. С помощью популярного набора LEGO MINDSTORMS EV3 миллионы детей по всему миру могут кодировать и управлять моторами и датчиками своих учебных роботов.
  2. Роботизированный шар Sphero SPRK + умеет вращаться, катиться, поворачиваться, ускоряться и менять цвет. С Swift Playgrounds станет возмножным контролировать шар с помощью датчиков, обеспечивающих обратную связь.
  3. Под управлением кода на Swift дроны Parrot Mambo, Airborne и Rolling Spider могут взлетать, приземляться, поворачиваться и выполнять различные трюки.
  4. Робота UBTECH Jimu Robot MeeBot Kit можно запрограммировать и научить его ходить, наклоняться и танцевать.
  5. Робот от Wonder Workshop иллюстрирует основные принципы написания кода. С Swift Playgrounds он поможет ученикам младших классов изучить программирование на практике.

“Возможность подключения к нескольким роботам является безусловным плюсом, создавая этим самым дополнительное направление изучения робототехники. К тому же, учитывая многолетнюю работу компании Apple, можно с уверенностью сказать, что они будут и дальше развивать это приложение, чтобы оно подходило и для крупных серьезных проектов”, — отмечает Александр Кормильцев, преподаватель отделения политехнического образования Дворца молодежи, Екатеринбург.

Swift Playgrounds совместим со всеми моделями iPad Air, iPad Pro и iPad mini 2, а также с iOS 10 или более поздними версиями.

14443

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


Программирование роботов сегодня - прерогатива узких специалистов, а всем остальным, кто интересуется робототехникой, остаётся либо молча завидовать, либо удовлетворяться работой с симуляторами, например, V-REP - робосимулятором, разработанным швейцарской компанией Coppelia Robotics. Впрочем, почему бы и нет? Система V-REP обладает на удивление широким функционалом, поддерживается несколькими операционными системами, включая Windows, а самое главное - бесплатна для домашнего использования. А ещё в ней имеются библиотеки для программирования роботов с помощью C/C++, Python, Java, Matlab и некоторых других языков.

V-REP поставляется с набором готовых моделей - стационарных и мобильных роботов, управлять которыми можно редактируя скрипты. Для управления некоторыми моделями имеются специальный набор ползунков. Все роботы уже имеют базовую программу и подчиняются реальным законам физического мира, той же гравитации. Распространяется платформа в трёх редакциях: EVAL , EDU и Player . Первая - полнофункциональная версия без ограничений, вторая - образовательная версия с лицензионными ограничениями, ориентированная на школьников старших классов, студентов и просто увлеченных пользователей. Плеер (Player) - это программа, предназначенная для запуска сцен, созданных в профессиональной версии. Возможность редактирования скриптов в ней отсутствует.

Для знакомства с платформой вполне подойдёт второй вариант - V-REP PRO EDU. Устанавливается робосимулятор как обычная программа. После запуска вы увидите окно, разделённое на три части.

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

Как работать с V-REP

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

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

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

Ваша задача - обучить их, но для этого потребуется знание базовых основ программирования, в идеале - языка Lua , ведь именно на нём написаны внутренние скрипты V-REP. Открыть исходный код управляющего скрипта очень просто - нужно лишь дважды кликнуть по иконке «файл» в колонке иерархии объектов.

Ради интереса можете поэкспериментировать, изменяя значения параметров, а затем наблюдая за поведением роботов. Имеется в V-REP также неплохой набор готовых примеров - сцен в формате ТТТ , получить доступ которым можно через главное меню File –> Open scenes .

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

А кроме самого материала также комментарии одного из наших робо-экспертов, куратора екатеринбургского , Олега Евсегнеева.

Инженеры-робототехники, как правило, попадают в две категории специалистов: думающих (теоретиков) и делающих (практиков). Это означает, что робототехники должны отличаться хорошим сочетанием двух противоположных стилей работы. «Склонные к исследованиям» люди вообще любят решать проблемы, думая, читая и изучая. С другой стороны, специалисты-практики любят решать проблемы лишь «испачкав руки», можно так сказать.

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

1. Системное мышление

Один из менеджеров проекта однажды заметил, что многие, связанные с робототехникой люди, оказываются впоследствии менеджерами проектов или системными инженерами. В этом есть особый смысл, так как роботы являются очень сложными системами. Занимающийся роботами специалист должен быть хорошим механиком, электронщиком, электриком, программистом и даже обладать познаниями в психологии и когнитивной деятельности.

Хороший робототехник в состоянии понять и теоретически обосновать, как совместно и слаженно взаимодействуют все эти разнообразные системы. Если инженер-механик может вполне обоснованно сказать: «это не моя работа, тут нужен программист или электрик», то робототехник должен хорошо разбираться во всех этих дисциплинах.

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

2. Мышление программиста

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

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

Комментарий Олега Евсегнеева: Я бы добавил, что для создания современных роботов требуется знание языков низкого, высокого и даже сверхвысокого уровня. Микроконтроллеры должны работать очень быстро и эффективно. Чтобы этого достичь, нужно углубляться в архитектуру вычислительного устройства, знать особенности работы с памятью и низкоуровневыми протоколами. Сердцем робота может быть тяжелая операционная система, например, ROS. Здесь уже может понадобиться знание ООП, умение пользоваться серьезными пакетами машинного зрения, навигации и машинного обучения. Наконец, чтобы написать интерфейс робота в веб и связать его с сетью интернет, неплохо будет научиться скриптовым языкам, тому же python.

3. Способность к самобучению

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

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

Комментарий Олега Евсегнеева: Это ключевой навык в любом творческом деле. С помощью него можно получить другие навыки

4. Математика

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

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

5. Физика и прикладная математика

Есть некоторые люди (чистые математики, например), которые стремятся оперировать математическими понятиями без привязки к реальному миру. Создатели роботов не относятся к такому типу людей. Познания в физике и прикладной математике важны в робототехнике, потому что реальный мир никогда не бывает таким точным, как математика. Возможность решить, когда результат расчета достаточно хорош, чтобы на самом деле работать – это ключевой навык для инженера-робототехника. Что плавно подводит нас к следующему пункту.

Комментарий Олега Евсегнеева: Есть хороший пример – автоматические станции для полета на другие планеты. Знание физики позволяет настолько точно рассчитать траекторию их полета, что спустя годы и миллионы километров аппарат попадает в точно заданную позицию.

6. Анализ и выбор решения

Быть хорошим робототехником означает постоянно принимать инженерные решения. Что выбрать для программирования - ROS или другую систему? Сколько пальцев должен иметь проектируемый робот? Какие датчики выбрать для использования? Робототехника использует множество решений и среди них почти нет единственно верного.

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

Многие робототехнические контроллеры реализованы с использованием языков программирования специального назначения. Например, многие программы для обобщающей архитектуры были реализованы на языке поведения , который был определен Бруксом. Этот язык представляет собой язык управления в реальном времени на основе правил, результатом компиляции которого становятся контроллеры AFSM . Отдельные правила этого языка, заданные с помощью синтаксиса, подобного Lisp , компилируются в автоматы AFSM, а группы автоматов AFSM объединяются с помощью совокупности механизмов передачи локальных и глобальных сообщений.

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

Одним из таких языков является универсальный робототехнический язык , или сокращенно GRL (Generic Robot Language ). GRL- это функциональный язык программирования для создания больших модульных систем управления. Как и в языке поведения, в GRL в качестве основных конструктивных блоков используются конечные автоматы. Но в качестве настройки над этими автоматами язык GRL предлагает гораздо более широкий перечень конструкций для определения коммуникационного потока и синхронизации ограничений между различными модулями, чем язык поведения. Программы на языке GRL компилируются в эффективные программы на таких языках команд, как С .

Еще одним важным языком программирования (и связанной с ним архитектурой) для параллельного робототехнического программного обеспечения является система планирования реактивных действий, или сокращенно RAPS (Reactive Action Plan System) . Система RAPS позволяет программистам задавать цели, планы, связанные с этими целями (или частично определять политику), а также задавать условия, при которых эти планы по всей вероятности будут выполнены успешно.

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

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

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

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

Основной привлекательной особенностью языка Golog является предусмотренная в нем безукоризненная интеграция средств реактивного управления и алгоритмического управления. Несмотря на то что при использовании языка Golog приходится соблюдать строгие требования (полная наблюдаемость, дискретные состояния, полная модель), с помощью этого языка были созданы высокоуровневые средства управления для целого ряда мобильных роботов, предназначенных для применения внутри помещений.

Язык «JSk CES (сокращение от C++ for embedded systems - C++ для встроенных систем) - это языковое расширение C++, в котором объединяются вероятностные средства и средства обучения. В число типов данных CES входят распределения вероятностей, что позволяет программисту проводить расчеты с использованием неопределенной информации, не затрачивая тех усилий, которые обычно связаны с реализацией вероятностных методов.

Еще более важно то, что язык CES обеспечивает настройку робототехнического программного обеспечения с помощью обучения на основании примеров, во многом аналогично тому, что осуществляется в алгоритмах обучения. Язык CES позволяет программистам оставлять в коде «промежутки», которые заполняются обучающими функциями; обычно такими промежутками являются дифференцируемые параметрические представления, такие как нейронные сети. В дальнейшем на отдельных этапах обучения, для которых учитель должен задать требуемое выходное поведение, происходит индуктивное обучение с помощью этих функций. Практика показала, что язык CES может успешно применяться в проблемных областях, характерных для частично наблюдаемой и непрерывной среды.

Язык ALisp представляет собой расширение языка Lisp . Язык ALisp позволяет программистам задавать недетерминированные точки выбора, аналогичные точкам выбора в языке Golog. Но в языке ALisp для принятия решений применяется не программа доказательства теорем, а средства определения правильного действия с помощью индуктивного обучения, в которых используется обучение с подкреплением. Поэтому язык ALisp может рассматриваться как удобный способ внедрения знаний о проблемной области в процедуру обучения с подкреплением, особенно знаний об иерархической структуре «процедур» желаемого поведения. До сих пор язык ALispприменялся для решения задач робототехники только в имитационных исследованиях, но может стать основой многообещающей методологии создания роботов, способных к обучению в результате взаимодействия со своей средой.