ГОРОД
Оригинальный автор(ы) | Жан-Кристоф Бэйли |
---|---|
Разработчик(и) | Гостай, Альдебаран Робототехника |
Первоначальный выпуск | 2003 год |
Стабильная версия | 2.7.4
/ 17 ноября 2011 г |
Репозиторий | |
Написано в | урбискрипт , C++ |
Операционная система | Windows NT , MacOS , Linux |
Тип | Пакет робототехники , операционная система , библиотека. |
Лицензия | БСД [1] |
Urbi — это с открытым исходным кодом кроссплатформенная программная вычислительная платформа , написанная на C++ и используемая для разработки приложений для робототехники и сложных систем. [2] Urbi основан на архитектуре распределенных компонентов C++ UObject. Он также включает urbiscript язык оркестровки , который является параллельным и управляемым событиями языком сценариев. Компоненты UObject могут быть подключены к urbiscript и отображаться как собственные объекты, которые можно запрограммировать для указания их взаимодействия и обмена данными. UObjects могут быть связаны с интерпретатором urbiscript или выполняться как автономные процессы в «удаленном» режиме.
Городской язык
[ редактировать ]Урбискриптный язык был создан в 2003 году Жаном-Кристофом Бэйли в лаборатории когнитивной робототехники ENSTA , Париж. Он активно и далее развивается в отрасли благодаря компании Gostai, основанной в 2006 году. Сейчас это проект с открытым исходным кодом и лицензией BSD, доступный на GitHub. [3]
Язык urbiscript лучше всего можно охарактеризовать как язык сценариев оркестрации: подобно Lua в видеоиграх, urbiscript можно использовать для склеивания компонентов C++ в функциональное поведение, при этом алгоритмическая часть с интенсивным использованием ЦП остается на C++, а часть сценариев поведения остается. к языку сценариев, который является более гибким, простым в обслуживании и допускает динамическое взаимодействие во время выполнения программы. Будучи языком оркестровки, urbiscript также привносит в программу некоторые полезные абстракции, используя параллелизм и программирование на основе событий как часть семантики языка. Сценарии параллельного поведения и реакции на события являются основными требованиями большинства роботизированных и сложных приложений искусственного интеллекта, поэтому urbiscript (и вся платформа Urbi) хорошо подходит для таких приложений.
Языковые атрибуты
[ редактировать ]- Параллелизм и событийное программирование
- Программирование на основе прототипов
- C++-подобный синтаксис
- Компонентная архитектура на основе Java и C++ (UObject) с возможностью связывания объектов или их удаленного запуска.
- модели клиент-сервер Архитектура [4]
- Кроссплатформенность: Linux, Macintosh, Windows и другие.
- Встраиваемый, Urbi может работать на различных процессорах: x86, ARM, MIPS, powerPC и т. д.
- Управление заданиями через «теги» [5]
Функции
[ редактировать ]- Параллельное программирование и программирование, управляемое событиями.
- Программирование прототипов
- Синтаксис аналогичен C++.
- Компоненты архитектуры: C++, Java (UObject) с возможностью связывания объекта или выполнения удаленно.
- Модель клиент-сервер
- Интерфейсы с клиентами Java и MATLAB (Urbi SDK)
- Несколько платформ: Linux , macOS , Windows NT и встроенные среды ( x86 , ARM , MIPS , powerPC )
- Маркировка заказов для их контроля настолько асинхронна
- Интеграция операционной системы робота (ROS), доступной напрямую из urbiscript (версия 2.1).
Примеры
[ редактировать ]В приведенном ниже примере показано, как написать цикл действия/восприятия отслеживания мяча в urbiscript: headYaw/headPitch — это два моторных объекта, а мяч — это объект обнаружения мяча (диапазон x и y от -1/2 до 1/2):
whenever (ball.visible)
{
headYaw.val += camera.xfov * ball.x
&
headPitch.val += camera.yfov * ball.y
};
Всякий раз используется для запуска фрагмента кода в циклах, пока соответствующее условие истинно. &
Знак используется для указания того, что обе команды должны запускаться одновременно, то есть работать параллельно.
Другие известные конструкции, управляемые событиями, включают 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 позволяет разработчикам взаимодействовать с любым объектом Java/C++ внутри Urbi, делая выбранные методы и атрибуты видимыми в urbiscript, хотя фактически они представляют собой скомпилированный код. Для любого атрибута объекта можно установить специальные уведомители, чтобы уведомлять сторону C++ о любых изменениях этих атрибутов на стороне urbiscript/Urbi.
UObject использует шаблоны C++ для прозрачного сопоставления любого запрошенного метода с механизмом интерфейса, который отвечает за проверку типов.
UObject можно использовать в подключенном режиме, если он напрямую связан с Urbi во время компиляции или при динамической загрузке. В этом случае объект C++ напрямую использует память Urbi, что обеспечивает эффективную интеграцию. Обычно это используется для компонентов, критичных ко времени, таких как драйверы двигателей или датчиков. Тот же UObject без изменений можно использовать и в качестве удаленного компонента. В этом случае он станет автономной программой, которая будет выполняться с IP-адресом сервера Urbi в качестве параметра. В обоих случаях объект будет прозрачно отображаться в urbiscript как собственный объект urbiscript.
Экосистема
[ редактировать ]Симуляторы робототехники, совместимые с Urbi
[ редактировать ]- Webots — официальный симулятор роботов, совместимый с Urbi.
- игрока и сцены , но в настоящее время она не реализована. Сообщалось об интеграции
Урби- роботы
[ редактировать ]Выпущенный:
- Гостай Опен Джаз
- Сегвей ПТ
- Aibo ERS-7/ERS-2xx (только Urbi 1.x, Urbi 2.3 доступна как альфа-версия)
- iRobot Создать
- Лего Майндштормс NXT
- HRP-2 (ограниченный выпуск для членов JRL)
- С ними
- Роботис Биолоид
- Пионер мобильных роботов
Объявлено:
- геодезист
- Хепера III
- электронная шайба
См. также
[ редактировать ]- Комплекс робототехники
- Player Project - интерфейс робота с открытым исходным кодом в исследованиях и высшем образовании
- Операционная система робота (ROS)
Ссылки
[ редактировать ]- ^ «Urbi, операционная система с открытым исходным кодом для роботов» . Проверено 27 октября 2012 г.
- ^ Бэйли, Жан-Кристоф. «Urbi: новый параллельный и управляемый событиями язык сценариев для робототехники, игр и многого другого» . Ютуб. Архивировано из оригинала 21 декабря 2021 г. Проверено 6 октября 2011 г.
- ^ "Город " GitHub
- ^ Бэйли, Жан-Кристоф; Демайль, аким; Ноттале, Матье; Хоке, Квентин; Тардье, Самуэль (2008). «Универсальная платформа Urbi для робототехники» (PDF) . Проверено 6 октября 2011 г.
Внешние ссылки
[ редактировать ]- Урби на GitHub
- Онлайн-документация Urbi
- Вонг, Уильям, «Гостай Урби» , «Электронный дизайн», 5 августа 2010 г.
- Маккафферти, Билли, «Вопросы и ответы об Urbi, операционной системе робота» , «Sharprobotica», 16 июля 2010 г.
- Бланкенхорн, Дана, «Я, робот с открытым исходным кодом» , «ZDNet», 20 августа 2010 г.