По вводной статье (которая является переводом статьи из википедии) всё же остаётся не совсем понятно — что же такое URBI и с чем его едят.
Однако, девиз компании Gostai — «Робототехника для всех» («Robotics for everyone») — не может не обнадёживать 🙂
Давайте разберёмся, что же именно из себя представляет URBI.
Вот какой набор программных продуктов предоставляет Gostai:
Gostai Urbi SDK — комплект средств разработки для создания компонентов Urbi, т.н. UObject — промежуточной слой архитектуры Urbi. Он так же поддерживает работу urbiscript — скриптового языка, который используется для написания программ управления роботами.
Gostai Console (urbiConsole) — утилита (win32) с графическим интерфейсом, для подключения к удалённому Urbi-серверу. (можно использовать обычный telnet).
Gostai Lab — программа, которая включает в себя свойства Gostai Console, позволяющая
легко построить виртуальный пульт дистанционного управления роботом. Она предоставляет различные виджеты для визуализации данных от робота (включая видео и звук), а также позволяет изменять состояние робота.
Визуальные виджеты можно связать с различными переменными urbiScript. Можно связать виджет с камерой, а другой виджет для связи численной переменной и слайдера. Или повесить на кнопку выполнение определённого urbiScript-кода.
Gostai Studio — IDE для создания графических программ, определяющих поведение роботов или других сложных систем. Программа, включающая в себя все функции Gostai Console. Это высокоуровневая интегрированная среда разработки для Urbi. Её формализм основывается на иерархических конечных автоматах (HFSM — Hierarchical Finite State Machines). Интуитивный визуальный редактор, визуальное отслеживание выполнения кода в реальном времени.
Иерархический конечный автомат — способ представления поведения робота, как последовательность состояний, соединённых между собой связями.
Конечные автоматы:
http://en.wikipedia.org/wiki/Finite-state_machine
http://ru.wikipedia.org/wiki/Конечный_автомат
Иерархический конечный автомат — это автомат, в качестве состояния у которого тоже автомат.
http://www.eventhelix.com/RealtimeMantra/HierarchicalStateMachine.htm
Иерархический автомат всегда можно представить в виде неирархического. Но при определенном размере обычный конечный автомат получится такой здоровый, что с ним будет очень тяжело работать.
http://alenacpp.blogspot.com/2010/03/blog-post_01.html
Gostai Studio Suite — набор из Gostai Studio и Gostai Lab.
Итак, ядром Urbi является Urbi SDK, который можно скачать в виде исходников или готовых пакетов:
windows x86 vcxx2008
windows x86 vcxx2005
macos
linux x86
linux x86 64
В комплекте SDK под Windows идёт Gostai urbiConsole и подробная документация.
Скачиваем и устанавливаем urbi SDK 2.1 (windows-x86-vcxx2008):
при установке urbi SDK 2.1 (windows-x86-vcxx2008)
создаётся директория
С:\Program Files\Gostai Engine Runtime\
так же по запросу устанавливается urbiConsole
С:\Program Files\Gostai urbiConsole 2.1\
Скачав и установив SDK уже можно попробовать пообщаться с Urbi-сервером.
Для этого его сначала нужно запустить через ярлык «runtime» в меню Пуск, который всего-лишь выполняет команду
"С:\Program Files\Gostai Engine Runtime\bin\urbi.exe" --interactive --port 54000
Появится вот такое консольное окошко:
Это и есть сервер Urbi, который висит на 54000 порту.
К нему можно подключиться telnet-ом, но всё же удобнее воспользоваться urbiConsole:
Отлично! Теперь можно поковыряться с UrbiScript — скриптовый язык, который и обрабатывается сервером Urbi.
В Urbi SDK входит целый набор утилит, основные это:
urbi.exe — запускает Urbi-сервер
urbi-launch.exe — запускает компоненты Urbi — объекты UObject и подгружает их к серверу Urbi.
Сервер Urbi можно запустить в интерактивном режиме — для этого достаточно запустить программу с параметром «-i»:
urbi.exe -i
, что позволяет напрямую вводить команды:
Обратите внимание, что перед ответом сервера стоит число в квадратных скобках — это время (в миллисекундах со времени запуска сервера) в которое строчка была отправлена сервером . Это может быть полезным, т.к. Urbi позволяет запускать на выполнение сразу несколько команд параллельно.
urbiConsole так же позволяет загружать на выполнение целиком urbiScript-файлы.
Например, создадим файл
test.u
со следующим содержанием:
var i=0; while(i<=3) { echo(i); i++; };
Запускаем консоль и выбираем этот файл через меню
Console - Send urbiScript file...
Это всё конечно замечательно, но как можно использовать эту систему для своего робота?
Ответ можно узнать в статье Urbi for Custom Robots:
Для того чтобы использовать Urbi для управления своим роботом потребуется выполнить несколько шагов:
1. Скачать Urbi SDK под свою платформу
2. Создать свой UObject-драйвер для контроля своего оборудования (руководство по созданию UObject-драйвера)
3. сделать своего робота совместимым с Gostai Standard API
Итак:
- реализовать один (или более) стандартных интерфейсов каждого UObject
- использовать предоставляемые компоненты и интерфейсы классов urbiscript для создания иерархии компонентов робота
Т.е. чтобы подружить своего робота с Urbi нужно создать промежуточные UObject-драйвера для своего оборудования.
Наконец-то начала вырисовываться структура системы Urbi:
Архитектура URBI
Ядро URBI - это основа системы, которая может быть запущена на роботе(встроенная) или на компьютере(удалённая).
В последнем случае - ядро отвечает за перенаправление запросов и ответов от/к роботу.
Ядро может быть расширено плагинами, которые являются С++ классами и могут быть либо отдельным приложением, подключённым к ядру через сеть (удалённый UObject), либо интегрирован в ядро при его сборке (плагин UObject).
После запуска ядра к нему можно подключиться и отправлять команды. Это реализуется через оболочку, предоставляемую сервером или telnet-подключение, или приложение, использующее liburbi для отправки и получения сообщений.
В нашем случае, Urbi на Arduino никак не установится, но Urbi можно установить на ПК и уже с него управлять Arduino, которая обычным образом подключается к ПК через последовательное соединение.
Разумеется на Arduino должна крутиться программа обработки команд, поступающих через последовательное соединение, например по протоколу Firmata.
Т.е. Arduino подключается к компьютеру через USB, COM-порт или лучше через беспроводное соединение (XBee, Bluetooth, Wi-Fi). На этом же компьютере запускается URBI-сервер, которым можно управлять через консоль или загружая urbiScript.
urbiScript общается со специально написанным драйвером UObject, который является промежуточным слоем между средой Urbi и оборудованием робота.
Т.е. получается следующая цепочка:
робот <-> UObject <-> сервер URBI <-> urbiScript
Итак, задача понятна:
- разобраться с написанием UObject и его подключением к серверу URBI
- разобраться с urbiScript
Читать далее: URBI - введение в программирование UObject
Ссылки
http://www.gostai.com
http://www.urbiforge.com
http://trendclub.ru/4063
0 комментариев на «“URBI — архитектура URBI”»
Когда читал предыдущую статью про Urbi, прямо руки зачесались попробовать такой вариант: на Arduino залить прошивку Firmata и написать обертку UObject для Firmata, чтобы управлять Arduino через urbi.
Похоже вы движетесь в похожем направлении… буду ждать продолжения.
абсолютно верно 🙂