URBI
URBI (англ. universal real-time behavior interface) — кроссплатформенное приложение на языке программирования C++, используемое для разработки приложений, робототехники, а также сложных вычислений и задач, которое включает в себя параллельный и событийно-ориентированный скриптовый язык UrbiScript.
Лицензия
URBI распространяется под лицензией BSD, доступной на GitHub.
Подключение
UObject кросс-платформы можно использовать в сценариях для взаимодействия и обмена данными. Они подключаются к UrbiScript и взаимодействуют как «родные».
UrbiScript
UrbiScript — это скриптовый язык в видеоиграх. Он может использоваться с языком программирования C++ для создания компонентов в единую функциональную структуру.
Создание
Язык UrbiScript разрабатывается с 2003 года Жаном-Кристофом Бейли в когнитивной Лаборатории робототехники ENSTA, в Париже.
В настоящее время скрипт активно развивается совместно с компанией Gostai.
Основные возможности
- Параллельность и программирования на основе событий
- Прототипное программирование (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.
- Программное обеспечение для визуального управления роботом от Gostai Studio и Gostai Lab, но оно является проприетарным и стоит дорого.
Примеры
Примеры показывают, как на UrbiScript реализуется цикл отслеживания «мяча» — объекты моторов головы, объекты для детектирования «мяча» (x и y в диапазоне от −1/2 до 1/2):
whenever (ball.visible)
{
headYaw.val += camera.xfov * ball.x
&
headPitch.val += camera.yfov * ball.y
};
Whenever — цикл, который используется для выполнения связанного кода до тех пор, пока значение условий истинно.
«&» — указание для обеих команд, которые должны начинаться в одно и то же время, выполняясь тем самым параллельно.
at (speech.hear("hello"))
{
voice.say("How are you?") &
robot.standup();
}
at — событийная конструкция, которая приводит в действие связанный код один раз, в случае когда условие становится истинным:
myTag:
while(true)
echo ("This is a never ending loop"),
at (button.pressed)
myTag.stop;
myTag — тег который даёт возможность приостановить этот код в случае необходимости:
В приведенных примерах в конце команды стоит запятая — обозначает выполнение предыдущей команды в фоновом режиме, позволяя программе выполняться далее, в частности, выполнения следующей команды at.
Компонентная архитектура UObject
Компонентная архитектура UObject основана на библиотеке UObject C++, которая позволяет разработчикам взаимодействовать с любым объектом C++ в Urbi путем сопоставления выбранных методов и параметров с языком сценариев, сохраняя при этом код C++, который способен устанавливать оповещения C++ для определенных атрибутов объектов уведомлять код о любых изменениях в этих атрибутах UrbiScript/Urbi.
UObject использует шаблоны C++ для прозрачного сопоставления любого требуемого метода с механизмом интерфейса.
C++ UObject можно использовать либо в плагине, если он напрямую связан с ядром Urbi во время компиляции, либо в режиме динамической загрузки. В первом случае объект C++ получает доступ к основной памяти Urbi в результате интеграции. Обычно это используется для компонентов, критичных ко времени, таких как драйверы двигателей или датчиков. Тот же C++ UObject также можно использовать без изменений в качестве удаленного компонента, и в этом случае он станет отдельной программой, которая будет выполняться с IP-адресом сервера Urbi в качестве параметра, но в обоих случаях объект появится прозрачно в UrbiScript как отдельный объект.
Существующие UObject
- Распознавание речи
- Синтез речи
- Распознавание лиц
- SLAM
- Распознавание цветов
- SIFT распознавание объектов
Поддерживаемые скрипты
- Segway
- Aibo
- iRobot Create
- Lego Mindstorms NXT
- HRP-2
- Nao
- Robotis Bioloid
- Mobile Robots Pioneer
- Симулятор Webots
Ссылки
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.