- PVSM.RU - https://www.pvsm.ru -
Здравствуйте, глубокоуважаемые хабрачане! В своих постах я хочу вас познакомить с продуктом корпорации Microsoft — Robotics Developer Studio 4 (далее MRDS 4), расскажу как запрограммировать робота реального и виртуального. Двигаться мы будем от простого к сложному. В качестве испытуемых роботов будем использовать набор LEGO Mindstorms NXT 2.0 (наиболее удачный, на мой взгляд, вариант) и микроконтроллер Basic Stamp (наименее удачный вариант). И так, приступим!
В 2006 году Microsoft объявила о создании платформы Microsoft Robotics Developer Studio (MRDS). MRDS – это Windows – ориентированная среда разработки приложений для робототехники и симуляции. В настоящее время актуальной является версия Microsoft Robotics Developer Studio 4.
Среди особенностей: язык визуального программирования VPL, Web – и Windows – ориентированные интерфейсы, среда симуляции VSE, упрощенный доступ к датчикам, микроконтроллеру и исполнительным механизмам робота, поддержка языка программирования C#, библиотеки для многопоточного программирования и распределенного выполнения приложений CCR и DSS, поддержка многих робототехнических платформ (Eddie, Boe — Bot, CoroBot, iRobot, LEGO NXT и т.д.).
Комплект NXT состоит из управляющего блока, четырех датчиков и трех сервоприводов.
Управляющий блок содержит в себе:
Датчики:
Микрокомпьютер NXT с подключенными датчиками и приводами
И конечно же в наборе находятся разнообразные детали (блоки, кубики) из которых будут собраны исполнительные механизмы и несущая конструкция. В наших начинаниях мы будем использовать модель робота TriBot, т.к. его виртуальная копия имеется в симуляторе MRDS. Инструкцию по сборке данного робота можно найти на сайте фирмы Lego mindstorms.lego.com [1]. Так же нам понадобиться Bluetooth-модуль на компьютере для подключения NXT.
Модель TriBot
Напишем простое приложение для движения по прямой определенной длинны, проверим работоспособность приложения на виртуальной модели робота, а затем на реальной. Запускаем визуальный язык программирования VPL. Слева из окна Basic Activities добавим три блока Data и блок Join. Ниже Basic Activities находится окно Services из него добавим сервисы Simple Dialog (сервис который выводит окно с кнопками) и Generic Differential Drive (сервис привода). Далее необходимо соединить блоки в диаграмму. В одном блоке данных Data введем Start и выберем тип данных (стрелочка на иконке блока) string, соединим блок данных с сервисом Simple Dialog (мышью протягиваем от стрелки Outgoing Response блока данных к стрелке Incoming Request сервиса). После соединения появиться окно в котором надо указать какой тип окна нам нужен, а нужен нам Alert Dialog (небольшое окно с одной кнопкой) жмем OK, в следующем окне необходимо определить специфику данных которые будут передаваться в сервис, выбираем из выпадающего списка Value. У нас осталось еще два блока данных, в одном пишем 0.7 (разделитель именно точка, а не запятая), этот блок будет отвечать за мощность приводов (можно указать число от 0 до 1.0, эти значения будут указывать мощность привода в процентах т.е. 0% и 100% соответственно), выберем тип данных Double. В другом блоке указываем любое положительное число (этот блок отвечает за пройденную дистанцию), это длина прямой в метрах (не забываем про типы данных). Соединим сервис Simple Dialog с блоками Data, блоки Data в свою очередь с блоком Join. Блок Join (объединить) объединяет блоки Data и именует их, для этого впишем в поля блока Join, те названия которые хотим дать блокам данных (например DriveDistance и DrivePower ). Далее нужно задать манифест для сервиса Generic Differential Drive, в нашем случае манифест будет определять какую виртуальную модель робота мы хотим использовать. Выделяем сервис, в левом окне Configuration выбираем Use a manifest, жмем кнопку Import и выбираем LEGO.NXT.Tribot.Simulation.Manifest. Соединим блок Join с сервисом привода, в появившемся окне выбираем DriveDistance, в следующем окне для Power выбираем DrivePower, для Distance соответственно DriveDistance, для поля DriveDistanceStage можно выбрать null. Жмем ОК, программа для виртуального робота готова, запустим и посмотрим, что получилось. Нажимаем F5 или зеленую стрелку вверху на панели, ждем пока запуститься симулятор и появиться окно с кнопкой. Жмем кнопку ОК и лицезреем.
Готовая диаграмма для виртуального робота
Виртуальный симулятор и диалоговое окно
Проверим как наше приложение будет управлять реальным роботом. Предварительно выполним соединение модуля NXT с компьютером через Bluetooth, как это сделать вы найдете в руководстве пользователя. Внесем в диаграмму изменения.
Добавим сервис LegoNXTBrick, выделим его и в правом окне выберем Set initial configuration, в списке Settings указываем следующие параметры:
Данный сервис не надо соединять с другими блоками, он будет отвечать за соединение с микрокомпьютером NXT. Добавим сервис LegoNXTDrive, выделим его и в разделе Set initial configuration укажем следующие параметры:
Данный сервис отвечает за взаимодействие с приводами робота. Соединим блок Join с данным сервисом, в появившемся окне выбираем DriveDistance(Generic Differential Drive), в следующем окне делаем по аналогии с предыдущим сервисом (GenericDifferentialDrive).
Диаграмма для реального робота
После запуска измененной программы, наш реальный робот проедет ровно 1 метр с мощностью приводов 70%.
На мой взгляд данная аппаратно-программная платформа (NXT + MRDS 4) неплохо подходит для высокоуровневого программирования, не вникая в особенности аппаратной составляющей робота, а библиотеки сервисов (которые можно значительно расширить), позволят написать достаточно гибкий интерфейс пользователя, который превратит ваш ПК в центр управления роботом.
Автор: alfatapok
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/25273
Ссылки в тексте:
[1] mindstorms.lego.com: http://mindstorms.lego.com
[2] Источник: http://habrahabr.ru/post/166449/
Нажмите здесь для печати.