URBI - архитектура URBI


По вводной статье (которая является переводом статьи из википедии) всё же остаётся не совсем понятно — что же такое 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). Интуитивный визуальный редактор, визуальное отслеживание выполнения кода в реальном времени.
Иерархический конечный автомат — способ представления поведения робота, как последовательность состояний, соединённых между собой связями.
Конечные автоматы:
en.wikipedia.org/wiki/Finite-state_machine
ru.wikipedia.org/wiki/Конечный_автомат
Иерархический конечный автомат — это автомат, в качестве состояния у которого тоже автомат.
www.eventhelix.com/RealtimeMantra/HierarchicalStateMachine.htm
Иерархический автомат всегда можно представить в виде неирархического. Но при определенном размере обычный конечный автомат получится такой здоровый, что с ним будет очень тяжело работать.
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

Ссылки:
www.gostai.com
www.urbiforge.com
trendclub.ru/4063
  • +2
  • 16 августа 2010, 11:28
  • noonv

Комментарии (2)

RSS свернуть / развернуть
+
+2
В нашем случае, Urbi на Arduino никак не установится, но Urbi можно установить на ПК и уже с него управлять Arduino, который обычным образом подключается к ПК через последовательное соединение.


Когда читал предыдущую статью про Urbi, прямо руки зачесались попробовать такой вариант: на Arduino залить прошивку Firmata и написать обертку UObject для Firmata, чтобы управлять Arduino через urbi.

Похоже вы движетесь в похожем направлении… буду ждать продолжения.
avatar

vlad123

  • 16 августа 2010, 22:21
+
0
абсолютно верно :)
avatar

noonv

  • 16 августа 2010, 23:17

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