Microsoft Robotics Developer Studio – Часть 1. Начало

Здравствуйте, уважаемые коллеги!

Так как в наше время актуальность робототехники все растет и растет, я решил уделить внимание именно этому направлению. Потому, сегодня я Вам расскажу про продукт под названием Microsoft Robotics Developer Studio.

Что такое Microsoft Robotics Developer Studio ?

Microsoft Robotics Developer Studio (MRDS) – это Windows-ориентированная среда для разработки программного обеспечения для роботов, управления роботами и их симуляции.

MRDS можно разделить на 4 основных компонента:

  • CCR (Concurrency and Coordination Runtime)
  • DSS (Decentralized Software Services)
  • VPL (Visual Programming Language)
  • VSE (Visual Simulation Environment)

Concurrency and Coordination Runtime – это библиотека для работы с параллельными и асинхронными потоками данных, которая базируется на .NET Framework. Кроме робототехники, может применяться для улучшения асинхронности в любых приложениях.

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

Decentralized Software Services – это облегченная базирующаяся на CCR среда для создания распределенных приложений на основе сервисов, которая предусматривает управление множеством сервисов для корректировки поведения в целом.

Visual Programming Language – это язык визуального программирования, разработанный корпорацией Microsoft специально для Microsoft Robotics Developer Studio. VPL предназначена для начинающих программистов, которые знают основные принципы, такие как алгоритмы и переменные.

Visual Simulation Environment – это среда симуляции. Так как не у всех есть роботы, она помогает симулировать поведение роботов в виртуальной среде. Для обеспечения реалистичности в виртуальном мире используется технология NVIDIA PhysX.

Microsoft Robotics Developer Studio поддерживает следующие модели роботов:

Boe-Bot, CoroBot, iRobot, Mindstorms NXT, Pioneer 3Dx, KUKA LBR3 и другие.

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

Скачать Microsoft Robotics Developer Studio 2008 R3 можно отсюда:

http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=c185a802-5bbe-4f28-b448-aefe63a7eff7

Размер установочного файла составляет – 444 мб.

Во время установки проблем возникнуть не должно. Сам процесс выглядит вот так:

Перед началом установки RDS, установщик инсталлирует необходимые компоненты:

1

После чего следует непосредственно сама установка:

2

Принимаем условия Лицензионного соглашения:

3

4

5

6

Как Вы видите, установка довольно проста.

Теперь давайте создадим нашу первую программу с помощью VPL .

Итак, запускаем «Microsoft Robotics Dev Studio 2008 R3\bin\vpl.exe». Главное окно выглядит вот так:

7

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

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

Для этого перетащите из списка «Services» в рабочую область элемент «Generic Contact Sensors»

8

У данного блока есть вход «Incoming Request», выходы «Outgoing Response» и «Notification». В нашем случае мы будем использовать выход «Notification», уведомление.

После этого, перетащите из списка «Basic Activities» в рабочую область элемент «Data». В выпадающем списке элемента выберите тип «String» и введите в поле значение «Ой!».

9

Теперь соединим эти два блока: выход «Notification» блока «Generic Contact Sensors» и вход блока «Data». В появившемся окне «Connections» слева выбираем событие, которое будет обрабатываться, – «ContactSensorUpdate», а справа следствие, – «Create».

10

В результате у нас должно получиться следующее:

11

Теперь добавим из списка «Services» в рабочую область элемент «Simple Dialog», соединим выход блока «Data» и вход блока «Simple Dialog». В появившемся окне «Connections» слева выбираем событие, которое будет обрабатываться, а справа следствие. В данном случае «DataValue» передается в «AlertDialog».

12

После этого у нас появится окно «Data Connections», в котором указываем что наше «Value» (а это у нас слово «Ой!») передаем в «AlertText», который будет выводиться в «AlertDialog».

13

В результате, у нас должна быть такая диаграмма:

14

В результате, у нас получилась программа, которая при нажатии на контактный сенсор робота выводит нам на экран диалоговое окно с надписью «Ой!»

Теперь давайте запустим нашу программу на выполнение.

Сначала нам нужно выбрать манифест для элемента «GenericContactSensors».

Манифесты – это своеобразные драйверы низкого уровня, или, с другой стороны – конфигурации той или иной программы VPL. Идея состоит в том, что одна и та же программа, в принципе, может выполняться на различных роботах, несмотря на то, что на низком уровне управление реализуется неодинаково. Благодаря манифестам, чтобы перенести программу VPL с одного железа робота на другое – нужно всего-то выбрать манифесты соответствующего робота для основных модулей диаграммы. Тем же самым образом – с помощью специальных «Simulation»-манифестов – реализуется перенос программы в среду симуляции.

В контекстном меню «GenericContactSensors» выбираем «Set Configuration»:

15

После этого, выбираем в разделе «Set Configuration» – «Use a manifest». В результате в нижней части появится выпадающий список «Use existing or create a new manifest» и кнопка «Import manifest». С помощью кнопки импортируем манифест «IRobot.Create.Simulation.Manifest» (можно выбрать манифест другого робота, но в данном примере мы протестируем именно IRobot.Create), и выбираем его.

Заметьте, настоящего робота у нас нету, поэтому будем работать с виртуальным. Именно поэтому мы выбираем «IRobot.Create.Simulation.Manifest».

В результате все должно выглядеть вот так:

16

Так как в виртуальной эмулированной среде «дотронутся» к сенсору робота рукой не получится, мы добавим в рабочую область элемент «Simple Dashboard» из списка «Services», с помощью которого мы сможем «ездить» по виртуальной среде. И «дотронувшись» сенсором до какого-нибудь объекта, увидеть результат роботы нашей программы.

17

Теперь преступим к запуску. Нажимаем F5 или в меню «Run» – пункт «Start». В результате видим окно Run, в котором отображаются сообщения о состоянии выполнения (Стартовал ли сервис, загрузился ли манифест и др.):

18

После загрузки манифеста и запуска всех необходимых сервисов появляется окно, в котором мы видим нашу виртуальную среду и нашего робота:

19

Также появляется окно «Dashboard» (если бы мы не добавили элемент «Simple Dashboard» – оно не появилось бы), с помощью которого будем управлять роботом.

Для начала подключаемся к роботу – нажимаем «Connect» в окне:

20

После чего, делаем двойной клик по «IRobot Create Motor Base» и клик по кнопке «Drive».

21

Так как у нас нет джойстика, в выпадающем списке «Device» участка «Direct Input Device» – пусто. В таком случае мы можем использовать «трэкбол»:

22

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

23

24

Как видите, когда я толкал роботом предмет, сенсор сработал некоторое количество раз, и столько же раз нам на экран вывелось окошко с надписью «Ой!»

А теперь, давайте добавим элемент «Simulated Generic Differential Drive»

из списка «Services» и сделаем так, чтобы при срабатывании сенсора не только выскакивало диалоговое окошко, но и привод робота включался в режим «полный вперед»!

Также нам понадобится еще один элемент «Data», в котором указываем тип «Double» и записываем значение «1.0» (при передачи значения «1.0» блоку двигателя это будет означать, что мы включаем двигатель на полную мощность, если передать «0.0» – то двигатель остановится, а значение «-1.0» будет означать движение назад на полную мощность).

После этого соединяем: выход «Notification» блока «Generic Contact Sensors» и вход блока «Data», и выход «Data» с входом «Simulated Generic Differential Drive».

Опять появляется окно «Connections», в котором слева выбираем событие, которое будет обрабатываться, – «ContactSensorUpdate», а справа следствие, – «Create».

25

При соединении блока «Data» с «Simulated Generic Differential Drive», в окошке «Connections», выбираем «Set Drive Power», то есть задаем мощность:

26

И в окне «Data Conections», слева выбираем «value» вместо «null» для обоих колес:

27

Теперь, еще нужно выбрать манифест для «Simulated Generic Differential Drive». Из выпадающего списка выберем прежде уже импортированный манифест под названием «IRobot.Create.Simulation.Manifest»:

28

И теперь, если подъехать к предмету и коснутся сенсором, то робот начинает толкать предмет и большое количество окон «Ой!» будет появляется у нас на экране.

29

Итак, в данной статье мы рассмотрели следующие аспекты Microsoft Robotics Developer Studio:

1. Что такое Microsoft Robotics Developer Studio, и с каких компонентов он состоит.

2. Установка Microsoft Robotics Developer Studio.

3. Создание простейшей программы для робота «IRobot.Create»

4. Запуск программы в виртуальной среде.

Думаю, для первого раза будет достаточно. В следующей части, мы рассмотрим инициализацию и использование переменных, а также логику «If Then Else». Если у Вас возникли вопросы, задавайте их в комментариях.

6 thoughts on “Microsoft Robotics Developer Studio – Часть 1. Начало”

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

  2. А у меня в окне виртуальной среды просто ничего нет (сиреневый цвет) подскажите что не так, что делать

  3. Ждём продолжения! Статья супер, всё очень грамотно написано 🙂
    Где можно найти дополнительную информацию (статьи, книги) по Robotics Developer Studio?

  4. Лучше не связываться с этим программным продуктом, он несет ложное представление о роботах и является игрушкой для программистов в случае VPL, а в случае написания своих сервисов принесет вам разочарование и потратит кучу ваших нервов. Я непосредственно работал и с тем и с другим в силу необходимости. В добавок ко всему проблемы с работой в 64 разрядных системах.

Залишити коментар