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). Интуитивный визуальный редактор, визуальное отслеживание выполнения кода в реальном времени.

Иерархический конечный автомат — способ представления поведения робота, как последовательность состояний, соединённых между собой связями.
Конечные автоматы:
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”»

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

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

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

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение