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 установщик встановлює необхідні компоненти:

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

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




Як Ви бачите, установка досить проста.
Тепер давайте створимо нашу першу програму за допомогою VPL.
Отже, запускаємо "Microsoft Robotics Dev Studio 2008 R3\bin\vpl.exe". Головне вікно виглядає так:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Як бачите, коли я штовхав роботом предмет, сенсор спрацював кілька разів, і стільки ж разів нам на екран вивелося віконце з написом «Ой!»
А тепер, давайте додамо елемент "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 Developer Studio:
1.Що таке Microsoft Robotics Developer Studio і з яких компонентів він складається.
2.Встановлення Microsoft Robotics Developer Studio.
3.Створення найпростішої програми для робота «IRobot.Create»
4.Запуск програми у віртуальному середовищі.