Шаг 10. программирование роботов

AnyKode Marilou Robotics Studio

AnyKode Marilou Robotics Studio — среда разработки и симулирования мобильных роботов, гуманоидов и манипуляторов с учетом физических законов реального мира. Для объектов можно указать следующие физические параметры: массу, упругость, свойства материала, вращающие моменты, а также некоторые другие.

Marilou позволяет подключать к роботу различные виртуальные устройства: компас, акселерометры, двигатели и сервомоторы, бампер, сенсоры расстояния (ультразвуковой и инфракрасный), GPS и другие устройства.

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

В Marilou есть MODA (Marilou Open Devices Access) — SDK для работы с роботами и их компонентами в симуляторе. После синхронизации с часами симулятора алгоритмы управления роботом могут запускаться на другом компьютере сети. В зависимости от выбранного языка MODA предоставляет библиотеки (.lib или .a) или .NET-сборки (.dll) для доступа к симулятору по сети. Программирование алгоритмов управления роботов возможно с помощью языков C/C++, C++ CLI, C#, J#, VB#.

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

В ноябре 2013 года вышел новый движок симулятора для Marilou — Exec V5. Бета-версия движка может работать на Windows, Ubuntu и Mint. Новый движок многопоточный, кросс-платформенный и использует OpenGL 2.1.

Apex Legends

Apex Legends представляет собой приключенческий шутер в жанре королевской битвы. Игрокам «с порога» предложат выбрать одного из персонажей, ознакомившись предварительно с характеристиками каждого из них. Выберите Легенду, вступайте в отряды, прокачивайте персонажа и наслаждайтесь великолепным миром с красивыми локациями. Apex Legends предназначена для тех геймеров, что любят мыслить и наперёд продумывать свои действия. Королевская битва стала изюминкой боевой системы, здесь можно вдоволь насладиться игрой в мире без правил. Вы сами создаёте свой путь, осталось лишь подключить фантазию!

Полезные советы.

Создавайте управляемые куски функционального кода.

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

Документируйте все в коде, используя комментарии.

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

Сохраняйте разные версии кода.

Не всегда перезаписывайте один и тот же файл. Если вы обнаружите, что ваши 200+ строк кода не будут компилироваться, не стоит останавливаться только на этой версии кода.  Вместо этого вы можете вернуться к ранее сохраненной (и функциональной) версии и добавить или изменить ее по мере необходимости. Код не занимает много места на жестком диске. Поэтому вы можете спокойно сохранять несколько копий.

При отладке робота поднимите его.

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

Если код делает что-то, что кажется неработоспособным.

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

Автономное управление роботом

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

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

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

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

  • Преимущества – это ”настоящая» робототехника. Задачи могут быть очень простым, например, от мигания света, основанного на показаниях одного датчика. До посадки космического корабля на далекой планете.
  • Недостатки зависят только от программиста. Если робот делает что-то, чего вы не хотите чтобы он делал, то у вас есть единственный вариант. Это проверить свой код, изменить его и загрузить изменения в робота.

Программирование EV3 при помощи Scratch

Scratch является графической средой программирования. Программировать EV3 при помощи Scratch можно если установить нужное программное обеспечение и настроить его. Программное обеспечение можно установить на любые операционные системы. Для примера выберем операционную систему Windows.

Как и в случае с программированием на Python, потребуется карта памяти с такими же параметрами. Карту памяти нужно отформатировать в файловой системе FAT32. На компьютер надо установить виртуальную Java-машину под названием leJOS.

Затем устанавливаем виртуальную машину на компьютер со всеми компонентами.

После этого устанавливаем образ на карту памяти. В дальнейшем при включении микрокомпьютера EV3 с картой памяти будет загружаться leJOS EV3. Без карты памяти будет происходить загрузка стандартного программного обеспечения Lego EV3.

Также на компьютере должна быть установлена свежая версия Adobe AIR. Затем можно установить редактор Scratch.

Установка редактора не занимает много времени.

Следующим шагом является установка ev3-scratch-helper-app. Это приложение служит для связи редактора Scratch и микроконтроллера EV3. Также в редакторе можно в настойках установить русский язык и нужно добавить блоки EV3 в редактор Scratch. После добавления блоков можно приступать к написанию программ.

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

Программирование EV3 на Python

Одним из наиболее популярных языков программирования в мире является Python. Он имеет небольшое синтаксическое ядро и объемную стандартную библиотеку функций. В операционной системе Linuх язык программирования Python установлен. При желании можно установить нужный вам текстовый редактор.

На микрокомпьютере EV3 установлена операционная система Linux. Для того, чтобы программировать EV3 на Python нужно установить Linux ev3dev на модуль EV3.

Затем нужно установить образ на карту памяти microCD. Желательно, чтобы класс карты был не менее десяти. Объем карты памяти от двух до тридцати двух гигабайт. Можно также использовать карту памяти microSDHC.

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

Затем нужно настроить соединение с компьютером и можно приступать к работе. Настройки соединения с компьютером нужно описывать отдельно так как они достаточно сложные. Для написания программ нужен еще редактор кода.

В качестве одного из вариантов можно установить редактор кода PyCharm Edu. Есть бесплатная версия с наличием подсказок, проверкой кода и подсвечиванием синтаксиса. Созданный в программе файл можно передать в блок EV3 при помощи программы PuTTY. Эта программа помогает установить SSH соединение операционной системы Windows с микроконтроллером EV3.

Скачать программу PuTTY можнос официального сайта. Есть 32 битная и 64 битная версии программы.

В логике конструктора

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

— В сфере робототехники до сих пор не существует удобной операционной системы, которую можно было бы легко подстраивать под различные образцы с минимальными затратами, как это происходит, например, с компьютерами, для которых существуют Windows, Linux, Mac OS и другие программы, — рассказал руководитель лаборатории нейроробототехники Московского физико-технического института (МФТИ), гендиректор Neurobotics Владимир Конышев. — Поэтому создатели андроидов вынуждены пользоваться набором специализированных библиотек. Каждая из них содержит небольшие фрагменты программного кода, которые достаточно сложно собрать в работающую конфигурацию.

н2

Фото: агентство городских новостей «Москва»/Сергей Киселев

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

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

Роботы в России и в мире

Сначала разберемся в том, что считать роботами.

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

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

«Робот имеет широкий диапазон решений, и он может по-разному отреагировать на ту или иную ситуацию, — говорит Анастасия Сигинова, руководитель проектов компании „Аврора Роботикс“. — Например, в роботе-пылесосе заложена программа, он может объехать территорию и построить карту. Если у него будет стоять задача пылесосить в определенной комнате, то он найдет ее на своей карте и поедет именно туда».

Jelleke Vanooteghem / Unsplash

Анастасия Сигинова считает, что если механизмом управляют вручную, то это уже не робот, а управляемая машина. Хотя специалисты тоже спорят о том, что относить к роботам. В военной технике роботами называют любые механизмы с телеуправлением: например, если танком управляют из командного центра, то он уже считается роботом.Компания Sberbank Robotics ежегодно представляет анализ мирового рынка робототехники. В отчете за 2019 год говорится, что наибольшая роботизация промышленности сейчас в Южной Корее: там насчитывается 710 роботов на 10 тысяч человек на производстве. При этом среднемировой показатель — 85, в Китае — 97, а в России всего 4. С одной стороны, это говорит о том, что мы порядочно отстали в плане автоматизации, а с другой — в России есть большой потенциал для роста направления.

Алиса Конюховская и Валерия Цыпленкова в книге «Рынок робототехники: угрозы и возможности для России» пишут, что в области сервисной робототехники у российских производителей больше шансов занять лидирующие позиции на мировом рынке, так как российский и мировой рынки сейчас формируются. По данным Национальной ассоциации участников рынка робототехники (НАУРР), с 2015 по 2017 год продажи в российских компаниях росли на 50% в год. Лидирующие области сервисной робототехники в России — роботы для общественных мест, в образовании и медицине. Около 20% сервисных роботов экспортируется.

К тому же есть высокий интерес к робототехническим специальностям. За последние пять лет они регулярно попадают в различные списки наиболее востребованных инженерных профессий. По специальности «Мехатроника и робототехника» обучают в 30 вузах в 19 городах.

А программировать надо уметь?

Если умеете, создание первого робота окажется, возможно, даже слишком легким делом. Если не умеете — отличный повод научиться. Дело в том, что программирование робота — штука очень наглядная: вот вы написали код и сразу же загорелась лампочка. Вам нужно, чтобы ваш робот разворачивался, когда до стены осталось меньше 5 см, значит, в программе надо прописать такое условие, всё логично. Именно поэтому детей часто начинают учить программированию на примере робототехники: здесь вместо скучных абстракций сразу получается осязаемый результат в реальном мире. На этом принципе строится обучение по программе «Робототехника». Все участники сразу же могут применить полученные знания на практике.

Конструкция андроида

Человекоподобный робот состоит из нескольких основных частей:

(Наглядная конструкция робота)

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

(Классическая рука-манипулятор)

Захват/перемещение груза, выполнение других операций, включая действия с инструментом — задачи для верхних конечностей — манипуляторов. Кистевые окончания могут иметь форму и функцию кистей человека.

Роботы-андроиды передвигаются шагами на двух “ногах”. Шасси копирует антропологические особенности строения человеческого тела: ноги состоят из нескольких составных частей, соединенных суставами-шарнирами. Отдельные модели роботов способны бегать, т.е. перемещаться таким образом, что обе ноги в момент движения не касаются поверхности.

Какой язык выбрать?

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

  • Ассемблер
  • Basic
  • C / C ++
  • Java
  • C #
  • Python
  • Программное обеспечение Arduino

Ассемблер

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

Basic

Один из первых широко используемых языков программирования. Он по-прежнему используется некоторыми микроконтроллерами ( Basic Micro , BasicX , Parallax ) для программирования учебных роботов;

C / C ++

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

Java

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

Программирование для контроллеров Arduino

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

Python

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

На уроке 4 вы выбрали микроконтроллер на основе необходимых вам функций (количество операций ввода-вывода, специальные функции и т. д.). Часто микроконтроллер предназначен для программирования на определенном языке.

  • Микроконтроллеры Arduino используют программное обеспечение Arduino и перепрограммируются в процессе обработки.
  • Базовые микроконтроллеры Stamp используют PBasic.
  • Микроконтроллеры Basic Atom используют Basic Micro.
  • Javelin Stamp из Parallax запрограммирован на Java.

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

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

Создание робота[править | править код]

Интерфейс сборщика роботов.

Для настройки и создания нового робота используется Сборщик роботов. Он позволяет подобрать комплектующие в соответствии с будущей задачей робота.

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

Если вы собираетесь установить на робота какие-либо программы, не забудьте добавить в конструкцию жёсткий диск. Вы можете установить операционную систему на него, или добавить в конструкцию дискету с операционной системой. В таком случае, робот будет обладать дополнительной файловой системой, с которой будет загружаться.

Microsoft Robotics Developer Studio

Microsoft Robotics — это пакет программ, который может использоваться для управления различными роботами и включает в себя полноценный симулятор. В состав Robotics входят следующие компоненты:

  • библиотека Concurrent and Coordination Runtime (CCR) — предназначена для организации обработки данных с помощью параллельно и асинхронно выполняющихся методов. Взаимодействие между такими методами организуется на основе сообщений. Рассылка сообщений основана на использовании портов;
  • Decentralized Software Services (DSS) — среда, которая позволяет запускать алгоритмы обработки данных на разных ЭВМ, организовывать асинхронное взаимодействие процессов управления различными подсистемами робота;
  • Visual Simulation Environment (VSE) — среда визуализации, которая позволяет экспериментировать с моделями роботов, тестировать алгоритмы управления роботами;
  • Visual Programming Language (VPL) — язык, предназначенный для разработки программ управления роботами. Программа на таком языке представляется в виде последовательности блоков, которые выполняют обработку данных, и связей между ними.

За симулятор физики в Robotics отвечает Ageia Physx. Очень печально, но в симуляторе отсутствует трение между создаваемыми объектами, хотя моделируется трение между отдельным объектом и платформой, на которой он размещается.

Создать сцену в симуляторе и запрограммировать робота можно на VPL или C#. Естественно, что на C# сцену сделать сложнее, но зато и код получится более эффективный. Возможности Robotics позволяют смоделировать футбол роботов, железную дорогу, манипулятор, добавить на сцену нескольких роботов. Доступные из коробки сенсоры: GPS, лазерный дальномер, инфракрасный дальномер, компас, сенсор цвета, сенсор яркости, веб-камера.

Подробнее о работе с этой средой ты можешь прочитать в номерах 01’13 («Стань робототехником!») и 03’13 («Робот-шпион — это просто!»).

Где найти токен робота пылесоса Xiaomi

Токен – это индивидуальный идентификатор устройства, который изменяется после каждого сброса настроек Wi-Fi. Он необходим, чтобы в дальнейшем установить голосовые пакеты для робота-пылесоса Xiaomi.

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

Если у вас уже установлено родное китайское приложение MiHome, его следует удалить. Если ваш телефон рутирован – рекомендую сохранить резервную копию с помощью Titanium Backup. Кстати, для установки русской озвучки и прошивки Roborock S50 потребуются аналогичные действия. Голосовые пакеты полностью совместимы.

Существует альтернативный вариант – использовать эмулятор ОС Андроид, NoxPlayer. Скачать его можно с сайта производителя (https://www.bignox.com/). Это подойдет тем пользователям, у которых нет под рукой смартфона на Андроиде. Либо тем, кто по каким-то причинам не хочет ставить стороннее ПО на свой основной телефон, но желает установить русскую прошивку Xiaomi Mi Robot Vacuum Cleaner. На заметку: основное предназначение данного эмулятора – возможность играть в Андроид-игры на компьютере.

Устанавливаем MiHome_5.6.85_63025_vevs.apk через интерфейс Nox.

После установки модифицированного MiHome необходимо ввести свои данные для входа в программу. Далее необходимо перейти во вкладку «Профиль» -> «Поделиться» -> «Share the device», как указано на картинках. Да, как видите, интерфейс в основном на русском языке, хоть и встречаются вкрапления английского и китайского.

Напротив соответствующего устройства вы увидите токен, состоящий из 32 символов. Не пугайтесь, переписывать с экрана не придется – автор программы предусмотрел возможность скопировать эту информацию в буфер обмена. Данный способ подойдет, чтобы определить уникальный идентификатор для дальнейшей прошивки Xiaomi Robot 1 SDJQR01RR, STYTJ02YM, Roborock T6, Viomi V2 pro и других моделей Сяоми.

Дальше необходимо найти ip-адрес робота. Проще всего это сделать с помощью веб-интерфейса вашего роутера. В нем необходимо открыть таблицу DHCP Leases и найти там запись с адресом, соответствующим модели. Для устройств серии Xiaomi Roborock в графе “Host name” вы увидите “rockrobo”.

Имея на руках эти данные – ip-адрес и токен робота-пылесоса Xiaomi, вы можете переходить к следующему шагу.

Algodoo: специализированный симулятор физики

Algodoo — физический 2D-симулятор. Объекты, которые создаются в этом симуляторе, сразу начинают подчиняться законам физики. Конечно, полноценного робота в трехмерном пространстве ты в этой программе не сделаешь, зато сможешь проверить возможность работы любого механизма. В программе можно моделировать воду, пружины, оптические устройства, ракетные двигатели, оружие, автомобили.

Может показаться, что данный симулятор неполноценен в том смысле, что позволяет проектировать и исследовать только «плоских» роботов. Однако ты можешь сначала спроектировать 2D-робота, а потом создать в реале его трехмерную версию. Пример показан здесь (2:07): goo.gl/wzQ7q4. В Algodoo встроен скриптовый язык программирования Thyme, который добавляет большую свободу действий в симуляторе. В Thyme доступны переменные, условный оператор, массивы, обработка событий, происходящих в песочнице (среде моделирования).

История Algodoo началась с игры Phun, которую разработал швед Эмиль Эрнерфельдт (это была его магистерская работа). Поддерживаемые ОС: Windows, OS X, iOS. На сайте доступна библиотека AlgoBox, в которой есть куча обучающих материалов и примеров разработки. Также посмотри algophun.3dn.ru и vk.com/algodoo.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector