сайт в архиве
    ... переходите на новый сайт компании

Виртуальный мир для робота


Виртуальный мир для робота

     В предыдущей статье Вы рассмотрели несколько примеров на Microsoft Visual Programming Language (VPL) . Наша цель сегодня: подготовиться к запуску наших программ в Симуляторе. Для этого Вы познакомитесь поближе с виртуальным миром, частью продукта Microsoft Robotics Developer Studio, которая называется Visual Simulation Environment (далее просто Симулятор). В конце, мы запустим простую программу в Симуляторе построенную на VPL.

    Кратко о технологиях платформы.
     Симулятор можно сравнить с виртуальным миром компьютерной игры, Вы при этом становитесь оператором этого мира. Разработчики Симулятора воспользовались мощным движком виртуальных законов физики от AGEIA PhysX Technologies. На основе технологий PhysX на сегодняшний день построено много хороших компьютерных игр. В августе 2008 года компания NVIDIA купила компанию AGEIA и PhysX технологию. Каковы последствия этого и как они могут повлиять на продукт Microsoft Robotics Developer Studio, я обсуждать не буду.
Основной движок визуализации (rendering) Симулятора основан на Microsoft XNA Framework.

    Преимущества перед реальным миром.
     Основным преимуществом Симулятора, на мой взгляд, является отсутствие необходимости поиска и приобретения дорогостоящего оборудования для роботов. Например, Вам не нужно покупать LEGO MINDSTORMS NXT или iRobot лишь для того, чтобы протестировать Вашу программу.
Следующее качество Симулятора – это отсутствие опасения повреждений Вашего дорогостоящего робота.
Разумеется, при работе с живым оборудованием Вам придется столкнуться с так называемым «troubleshooting», особенно если Ваш робот является гибридом – собранный Вашим гением из оборудования разных производителей.
Прежде всего, в рамках Симулятора, Вы получаете возможность использовать различное виртуальное оборудование, которое в реальности для многих просто недоступно.

    За работу.
     Для запуска Симулятора воспользуемся одним из ярлыков, которые устанавливаются по умолчанию и доступны по следующему пути: Пуск – Программы – Microsoft Robotics Developer Studio 2008 – Visual Simulation Environment.
Рассмотрим ярлык «Lego NXT Tribot Simulation».
В свойствах ярлыка в поле «Объект» указана программа DssHost, которой передается несколько типов параметров и несколько манифестов. В первой статье Вы рассматривали основную среду DssHost, ее назначения и назначения манифестов.
В строке команды ярлыка для нас интересен манифест «LEGO.NXT.Tribot.Simulation.manifest.xml». Именно этот манифест определяет нашу модель робота в виртуальном мире Симулятора.
Вторым манифестом в строке команды ярлыка является «SimpleDashboard.manifest.xml». Этот манифест запускает панель управления движением робота, но не только. Далее мы рассмотрим подробнее панель Dashboard.
Запустив ярлык «Lego NXT Tribot Simulation», запускается DssHost, панель управления Dashboard и сам Симулятор.
Как и в любой обычной программе, управление осуществляется за счет команд меню.
Группа элементов меню «File» предоставляет возможность открывать сохраненные сцены, сохранять сцены, сохранять изменения в материалах, загружать манифесты, «захватывать изображение» и сохранять в виде файла.
Стоит отметить новую возможность, которая позволяет записывать и проигрывать движения элементов сцены. Для отображения панели управления воспроизведением необходимо в меню «View» активировать элемент «Playback Bar».

     Для изменения визуализации сцены воспользуйтесь меню «Render». Симулятор обеспечивает пять режимов отображения сцены и один режим, который отключает визуализацию (No Rendering). Режим Visual установлен по умолчанию.



     Элемент «Settings…» меню «Physics» позволяет настроить «физику сцены». Например, изменить гравитацию или убрать ее вообще. Тогда, толкнув предмет, Вы можете запустить его в неведомые участки виртуального мира. : )
Свойство «Enable rigid body for default camera» не дает основной камере проходить сквозь предметы. Включив это свойство, Вы сможете толкать предметы основной камерой.

     Включив режим редактирования миром, с помощью меню «Mode» - элемент «Edit», в основном меню появится новая группа элементов «Entity».
В левой части окна программы откроется несколько панелей управления элементами. При этом отключатся физические законы виртуального мира.
Для осуществления простых действий по отношению к элементу необходимо сделать его активным, для этого можно кликнуть по элементу правой кнопкой мыши, или выбрать элемент из списка, затем нажать и удерживать клавишу «Ctrl». Выбранный элемент должен оказаться в «сфере».

     Если предварительно в панели управления свойствами элемента был выбран параметр «Rotation», удерживая клавишу «Ctrl» и правую кнопку мыши, перемещая мышь, будет вращаться элемент. Аналогично можно перемещать элемент. Но необязательно изменять свойства элемента таким образом. Вы можете просто ввести данные в поля ввода.
Для более детального просмотра свойств элемента воспользуйтесь копкой «Edit Entity».
На сцену Вы можете добавлять новые элементы из списка доступных элементов, или загружать из других источников. Для этого воспользуйтесь меню «Entity» элементами «New…», «Load Entities…» и «Save Entities…».
Выбрав элемент на сцене его можно скопировать и повторно вставить в сцену. При отключенных «законах физики мира», Вы можете не заметить, что на сцене появился новый элемент. Просто при вставке скопированного элемента координаты совпали с координатами его прародителя. В списке элементов сцены новый элемент появится с таким же именем, а в конце имени будет присутствовать номер копии.

     Если несколько элементов сцены, например, несколько Lego NXT Tribot, при отключенных «законах физики мира» будут находиться в пересекающихся координатах (или же координаты будут вовсе одинаковыми), то включив «законы физики» – элементы разлетятся в разные стороны как будто во время взрыва.

    Dashboard.
     Мы запустили Симулятор, без каких либо задач для нашего робота, но это не значит, что робот не может передвигаться. Для управления движением необходимо настроить панель Dashboard, которая запустилась вместе с Симулятором.

     В поле название машины «Machine» введите localhost и нажмите клавишу «Enter» или кнопку «Connect». Dashboard подключится к нужному сервису, автоматически определив порт 50001, а название машины изменится на фактическое. Мой компьютер называется Center, поэтому поле «Service» содержит данные center:50001, где 50001 – номер порта.
В списке, чуть ниже поля подключенного сервиса, появится объект, которым мы будем управлять. Кликните по элементу несколько раз, результатом активации элемента должно быть изменение параметра «Motor» с Off на On. Параметр «Motor» находится слева на панели «Differential Drive». Изменив статус «Motor» на On нажмите на кнопку «Drive». Готово!
Теперь наведите курсор мыши на «круг управления» и нажмите левую кнопку. Робот в Симуляторе начнет движение.
Если у Вас есть игровой джойстик, то Вы можете его использовать в качестве управляющего устройства. Джойстик необходимо подключить к компьютеру перед запуском Симулятора.

    Запуск программы в Симуляторе.
     Пусть основной задачей программы будет простое движение вперед. Т.е. при запуске Симулятора робот должен двигаться в одном направлении. Также зададим роботу небольшое значение, а именно мощность виртуальных приводов должна быть 80%.
Запускаем VPL. Наша программа будет состоять из двух элементов, одного сервиса «GenericDifferentialDrive» и основного блока activities «Data».
Определяем сервису «GenericDifferentialDrive» манифест «LEGO.NXT.Tribot.Simulation.manifest.xml».
Устанавливаем тип данных блока «Data» равным «double» со значением «0.8». За 100% мощности сервоприводов для LEGO NXT Tribot берется единица.
Создаем связь следующим образом: выход блока «Data» соединяем с входом сервиса «GenericDifferentialDrive», тем самым передаем значения «0.8» переменной «SetDrivePower».



     Запускаем программу кнопкой «F5» или через меню.
После загрузки всех сервисов, запустится Симулятор, в котором наш бот будет перемещаться. Dashboard при этом не участвует, так как DssHost не получил данные о сервисе «SimpleDashboard». Для этого необходимо просто поместить сервис «SimpleDashboard» на диаграмму.

     Запустив проект повторно, Вы увидите Dashboard. И теперь в любой момент Вы сможете перехватить управление роботом.
Данный пример можно использовать не только в Симуляторе. Если у Вас есть LEGO MINDSTORMS NXT, то для сервиса «GenericDifferentialDrive» достаточно использовать другой манифест, а именно «LEGO.NXT.Tribot.manifest.xml».



24.09.2008
Серенко Максим
Simplect™ - Simple intellect




Главная  |  Услуги  |  Опыт работы  |  Проектная кухня  |  Контакты  |  Команда  |  О компании  |  Партнеры  |  Вакансии  |  Новости  |  Статьи  |  Блог
© 2008-2010 Simplect™. Все права защищены