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 ProgrammingLanguage – це мова візуального програмування, розроблена корпорацією 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 можна звідси:

Розмір інсталяційного файлу складає - 444 Мб.

Під час встановлення проблем виникнути не повинно. Сам процес виглядає так:

Перед початком встановлення RDS установщик встановлює необхідні компоненти:

робота

Після чого слідує безпосередньо сама установка:

робота

Приймаємо умови Ліцензійної угоди:

developer

microsoft

microsoft

studio

Як Ви бачите, установка досить проста.

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

Отже, запускаємо "Microsoft Robotics Dev Studio 2008 R3\bin\vpl.exe". Головне вікно виглядає так:

studio

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

Давайте для першого разу зробимо програму, яка виводитиме наекран діалогове віконце під час спрацювання контактного сенсора робота.

Для цього перетягніть зі списку «Services» до робочої області елемент «Generic Contact Sensors»

developer

Цей блок має вхід «Incoming Request», виходи «Outgoing Response» і «Notification». У нашому випадку ми будемо використовувати вихід "Notification", повідомлення.

Після цього перетягніть зі списку «Basic Activities» у робочу область елемент «Data». У списку, що випадає, виберіть тип «String» і введіть у поле значення «Ой!».

робота

Тепер з'єднаємо ці два блоки: вихід "Notification" блоку "Generic Contact Sensors" та вхід блоку "Data". У вікні «Connections», що з'явилося, зліва вибираємо подію, яка буде оброблятися, – «ContactSensorUpdate», а справа наслідок, – «Create».

developer

В результаті у нас має вийти таке:

robotics

Тепер додамо зі списку "Services" в робочу область елемент "Simple Dialog", з'єднаємо вихід блоку "Data" і вхід блоку "Simple Dialog". У вікні «Connections», що з'явилося, зліва вибираємо подію, яка буде оброблятися, а справа слідство. В даному випадку DataValue передається в AlertDialog.

частина

Після цього у нас з'явиться вікно Data Connections, в якому вказуємо що наше Value (а це у нас слово Ой!) передаємо в AlertText, який буде виводитися в AlertDialog.

studio

В результаті, у нас має бути така діаграма:

частина

В результаті у нас вийшла програма, яка при натисканні на контактний сенсор робота виводить нам на екран діалогове вікно з написом «Ой!»

Тепер запустимо нашу програму на виконання.

Спочатку нам потрібно вибрати маніфест для елемента "GenericContactSensors".

Маніфести – цесвоєрідні драйвери низького рівня, чи, з іншого боку – конфігурації тієї чи іншої програми VPL. Ідея полягає в тому, що та сама програма, в принципі, може виконуватися на різних роботах, незважаючи на те, що на низькому рівні управління реалізується неоднаково. Завдяки маніфестам, щоб перенести програму VPL з одного заліза робота на інше – потрібно всього вибрати маніфести відповідного робота для основних модулів діаграми. Так само – за допомогою спеціальних «Simulation»-маніфестів – реалізується перенесення програми в середу симуляції.

У контекстному меню "GenericContactSensors" вибираємо "Set Configuration":

studio

Після цього вибираємо в розділі "Set Configuration" - "Use a manifest". В результаті в нижній частині з'явиться список «Use existing or create a new manifest» і кнопка «Import manifest». За допомогою кнопки імпортуємо маніфест "IRobot.Create.Simulation.Manifest" (можна вибрати маніфест іншого робота, але в даному прикладі ми протестуємо саме IRobot.Create), і вибираємо його.

Зауважте, справжнього робота у нас немає, тому працюватимемо з віртуальним. Саме тому ми вибираємо «IRobot.Create.Simulation.Manifest ».

У результаті все має виглядати так:

developer

Так як у віртуальному емульованому середовищі "доторкнуться" до сенсора робота рукою не вийде, ми додамо в робочу область елемент "Simple Dashboard" зі списку "Services", за допомогою якого ми зможемо "їздити" по віртуальному середовищу. І «доторкнувшись» сенсором до якогось об'єкта, побачити результат роботи нашої програми.

studio

Тепер переступимо до запуску. Натискаємо F5 або в меню "Run" - пункт "Start". В результаті бачимо вікно Run, в якому відображаються повідомлення про стан виконання (Стартуватичи сервіс, чи завантажився маніфест та ін.):

developer

Після завантаження маніфесту та запуску всіх необхідних сервісів з'являється вікно, в якому ми бачимо наше віртуальне середовище та нашого робота:

robotics

Також з'являється вікно "Dashboard" (якби ми не додали елемент "Simple Dashboard" - воно не з'явилося б), за допомогою якого керуватимемо роботом.

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

developer

Після чого, робимо подвійний клік по "IRobot Create Motor Base" та клік по кнопці "Drive".

developer

Так як у нас немає джойстика, у списку «Device», що випадає, ділянки «Direct Input Device» – порожньо. У такому разі ми можемо використовувати «трекбол»:

studio

Клікаючи по ньому ведмедиком ми можемо керувати рухом робота. Ну що ж! Тепер давайте під'їдемо роботом до будь-якого предмета та подивимося, як спрацює наша програма при контакті робота з предметом.

microsoft

robotics

Як бачите, коли я штовхав роботом предмет, сенсор спрацював кілька разів, і стільки ж разів нам на екран вивелося віконце з написом «Ой!»

А тепер, давайте додамо елемент "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".

частина

При з'єднанні блоку "Data" з "Simulated Generic Differential Drive", у вікні "Connections", вибираємо "Set Drive Power", тобто задаємо потужність:

робота

І у вікні "Data Conections", зліва вибираємо "value" замість "null" для обох коліс:

частина

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

microsoft

І тепер, якщо під'їхати до предмета і торкнуться сенсором, то робот починає штовхати предмет і багато вікон «Ой!» буде з'являється у нас на екрані.

robotics

Отже, у цій статті ми розглянули такі аспекти Microsoft Robotics Developer Studio:

1.Що таке Microsoft Robotics Developer Studio і з яких компонентів він складається.

2.Встановлення Microsoft Robotics Developer Studio.

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

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