URBI

URBI

URBI (Universal Real-time Behavior Interface - Универсальный Интерфейс Поведения Реального времени) - кросс-платформенная открытая программная платформа на C++, используемая для разработки приложений для робототехники и сложных систем. Urbi основывается на распределенной компонентной архитектуре UObject. Она также включает urbiscript - параллельный и событийный скриптовый язык. Компоненты UObject могут подключаться к urbiscript и появляются в нём, как родные объекты, которые можно использовать в сценариях для взаимодействия и обмена данными. Компоненты UObject могут быть связаны с интерпретатором urbiscript, либо работать, как автономный процесс в "удаленном" режиме.

Содержание

urbiScript

Язык urbiscript разрабатывается с 2003 года Жан-Кристофом Бейли (Jean-Christophe Baillie) в когнитивной Лаборатория робототехники ENSTA в Париже. В настоящее время он активно развивается компанией Gostai, основанной в 2006 году.

Urbiscript - это скриптовый язык; как Lua в видеоиграх, urbiScript может использоваться для склеивания C++ компонентов в единую функциональную структуру; алгоритмы, требующие высокой производительности реализуются на C++, а взаимодействие и поведение системы описывается сценарим на скриптовом языке, что является более гибким и простым в обслуживании, а также позволяет динамическое взаимодействие во время выполнения программы. Urbiscript также привносит некоторую полезную абстракцию для программистов: параллельность и программирования на основе событий в рамках семантики языка. Сценарии параллельного поведения и реакций на события, являются основными требованиями для большинства робототехнических приложений и приложений ИИ, поэтому urbiscript (и вся платформа Urbi) хорошо подходит для этих целей.

Основные возможности Urbi

  • Параллельность и программирования на основе событий
  • Прототипное программирование (Prototype-based programming)
  • Синтаксис в стиле C++
  • C++ архитектура компонентов (UObject) с возможностью линковки объектов или их удалённого запуска
  • архитектура Клиент-Сервер
  • Клиентские интерфейсы для Java и Matlab (Urbi SDK)
  • Кросс-платфоменность: Linux, Mac, Windows и другие. Встраиваемый, URBI может работать на различных процессоров: x86, ARM, MIPS, PowerPC и т.д.
  • теговые команды(Taggable commands) для контроля выполнения потока
  • с мая 2010 года Urbi является продуктом с открытым исходным кодом (лицензия GNU AGPL v3) .
  • Urbi может взаимодействовать с ROS от компании Willow Garage.
  • Urbi может использоваться просто в качестве промежуточного слоя C++, без urbiscript. Однако, использование urbiscript требует изучения сравнительно нового языка, не столько с точки зрения синтаксиса (который, похож на С/C++), а в терминах параллельной /событийной парадигмы.
  • Webots - профессиональный симулятор роботов, который может работать с Urbi, но он дорого стоит (990 € Pro, 190 € Edu).
  • Программное обеспечение для визуального управления роботом Gostai Studio и Gostai Lab являются проприетарным и стоит дорого.

Примеры

примеры ниже показывают как реализуется на urbiscript цикл отслеживания мячика: headYaw/headPitch - объекты моторов головы, ball- объект для детектирования мячика (x и y лежат в диапазоне от -1/2 до 1/2):

whenever (ball.visible) 
{
    headYaw.val   += camera.xfov * ball.x
  &
    headPitch.val += camera.yfov * ball.y
};

whenever - используется для выполнения связанного кода в цикле до тех пор, пока условие истинно. "&" - используется для указания того, что обе команды должны начинаться в одно и то же время, выполняясь при этом параллельно.

Другая событийная конструкция: at - приводит в действие связанный код один раз, в случае, когда условие становится истинным:

at (speech.hear("hello"))
{
  voice.say("How are you?") &
  robot.standup();
}

Каждую команду или группу команд можно обозначить тегом, что дает возможность остановить этот код в случае необходимости:

myTag: 
  while(true)
    echo ("This is a never ending loop"),
at (button.pressed)
  myTag.stop;

В приведенном выше примере в конце команды стоит запятая - она обозначает выполнение предыдущей команды в фоновом режиме, позволяя программе выполняться далее, в частности, выполнения следующей команды at.

Архитектура компонентов UObject

Компонент архитектуры UObject, в настоящее время основывается на C++ библиотеке UObject, позволяя разработчикам взаимодействовать с любым C++ объектом в Urbi, предоставляя отображение выбранных методов и параметров в скриптовом языке (оставаясь при этом C++ кодом). Специальные оповещатели могут быть установлены на любой из атрибутов объекта для уведомления C++ кода о каких-либо изменениях этих атрибутов со стороны urbiscript/Urbi.

UObject использует шаблоны C++ для прозрачного отображения любого требуемого метода в механизм интерфейса, который берет на себя проверку типов.

C++ UObject может быть использован как в режиме плагина, если он непосредственно слинкован с ядром Urbi во время компиляции или в режиме динамической загрузки. В первом случае, объект C++ получает доступ к памяти ядра Urbi, в результате интеграции. Это обычно используется для критических ко времени компонентов, таких как двигатель или драйверы сенсоров. Тот же C++ UObject также может быть использован без изменений в качестве удаленного компонента. В этом случае он станет автономной программой, которая будет выполняться с IP-адресом сервера Urbi в качестве параметра. В обоих случаях, объект будет прозрачно появляются в urbiscript как его родной объект.

Существующие объекты UObject для роботов

  • распознавания речи
  • синтезирование голоса
  • Распознавания лиц (в том числе, шлюз с OpenCV)
  • SLAM
  • распознавание цветов
  • основанное на SIFT, распознавание объектов

Поддерживаемые симуляторы роботов: Webots (http://en.wikipedia.org/wiki/Webots)

Поддерживаемые роботы

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "URBI" в других словарях:

  • urbi — urbi …   Dictionnaire des rimes

  • URBI — Apparu en 2003 Auteur Jean Christophe Baillie …   Wikipédia en Français

  • Urbi — Développeur Gostai Première version 2003 …   Wikipédia en Français

  • Urbi — [[Archivo:Archivo:Urbi.2.0.cube.lightbg.png|220px]] Desarrollador(es) Gostai http://www.urbiforge.org/ Información general Extensiones com …   Wikipedia Español

  • URBI — Saltar a navegación, búsqueda URBI Paradigma: Robótica (educativa) Apareció en: 2007 Diseñado por: Jean Christophe Baillie Implementaciones: Multiplataforma Urbi (Universal Real time Behavior Interface …   Wikipedia Español

  • URBI — Indiae populi. Plin. l. 6. c. 23 …   Hofmann J. Lexicon universale

  • URBI — infobox programming language name = URBI paradigm = Parallel and Event driven Interface Language year = 2003 designer = Jean Christophe Baillie developer = Gostai latest release version = 1.0 latest release date = April 11 2007 influenced by =… …   Wikipedia

  • urbi et orbi — ● urbi et orbi locution adjectivale et adverbe (mots latins signifiant à la ville de Rome et à l univers) Se dit des bénédictions solennelles adressées par le souverain pontife à Rome et au monde entier. ● urbi et orbi (expressions) locution… …   Encyclopédie Universelle

  • Urbi et Orbi — literally to the [of Rome] and to the , was a standard opening of Roman proclamations. The term is now used to denote a papal address and Apostolic Blessing that is addressed to the City of Rome and to the entire world.The blessing takes place a …   Wikipedia

  • Urbi et Orbi — Saltar a navegación, búsqueda Urbi et orbi, palabras que en latín significan a la ciudad Roma y al mundo . Era la fórmula habitual con la que empezaban las proclamas del Imperio Romano. En la actualidad es la bendición más solemne que imparte el… …   Wikipedia Español


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»