Введение в OROCOS

Что такое OROCOS и как он связан с ROS?

OROCOS (Open Robot Control Software project) — открытое программное обеспечение для управления роботами. OROCOS вышел из стен бельгийского университета KU Leuven. Изначально проекты ROS и OROCOS развивались по отдельности. Но начиная с electric, OROCOS был интегрирован в ROS.

  • The Orocos Real-Time Toolkit (RTT) не существует сам по себе, но обеспечивает инфраструктуру и функциональность других приложений. Данная библиотека акцентируется на приложениях реального времени, позволяющих интерактивно управлять модулями системы.
  • The Orocos Components Library (OCL) предоставляет готовые к использованию компоненты управления, а также компоненты для управления и доступа к аппаратным средствам.
  • The Orocos Kinematics and Dynamics Library (KDL) является частью программ, разработанных на C++, которая, в свою очередь, позволяет позволяет вычислять кинематику в реальном времени
  • Библиотека Orocos Bayesian Filtering Library (BFL) обеспечивает независимую структуру (framework) для Dynamic Bayesian Networks, то есть, рекурсивную обработку информации в соответствии с алгоритмами оценки, применяемых в Bayes’ rule, такие как (Extended) Kalman Filters, Particle Filters (Sequential Monte methods).

Также надо иметь в виду, что OROCOS уже довольно устоявшаяся система, которая уже не будет сильно меняться. Последние изменения на официальном сайте и в репозитариях от 2014 года. Многие примеры из официальной документации надо адаптировать для выполнения в среде ROS. Тем не менее базовые пакеты ROS активно пользуются библиотеками OROCOS, например kdl_parser используется для преобразования URDF xml файла в KDL дерево, для дальнейших кинематических расчетов над ним.

Почему OROCOS+ROS?

Главная причина почему нельзя всю систему написать используя только компоненты ROS состоит в том, что транспорт ROS основан на TCP/IP который, хоть и удобен при сетевом взамодействии, но никак не приспособлен к выполнению в режиме реального времени. Компоненты OROCOS же напротив, изначально разрабатывались с учетом требований РВ. Однако в составе OROCOS нет никаких средств визуализации типа rviz и gazebo и еще многих удобных штук которые есть в ROS.

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

OROCOS использует свою, отличную от ROS терминологию: нода->компонент, топик->порт, сервис->операция и т.д. Ниже описываются сходства и отличия.

Чем компоненты OROCOS отличаются от нодов ROS?

Обе системы компонентно-ориентированы, т.е. работающее приложение — это совокупность компонент(нодов), взаимодействующих через известные интерфейсы. Благодаря тому что существуют компоненты интеграции, имеется возможность состыковать порты, операции и параметры OROCOS с топиками, сервисами и параметрами ROS, объединив их таким образом в единую систему. Такие пакеты могут пользоваться транспортом и типами сообщений ROS, линовать библиотеки ROS, но при этом внутри они будут оставаться пакетами OROCOS.

Интерфейсы

В таблице приведены основные элементы интерфейса компонент. Все элементы строго типизированы.

ROS OROCOS Примечания
топик порты Передача типизированых сообщений издатель/подписчик, основной интерфейс РВ.
сервис операция Аналог методов классов. Взаимодействие,запрос-ответ, Используются для осуществления сложных операций, настройки.
параметр параметр Аналог полей классов. Основной средство настройки компонент.
плагин плагин Аналог динамической библиотеки. Некий программный объект, загружаемый в компонент и придающий ему некую дополнительную функциональность.

Жизненный цикл

Также имеются отличия в жизненном цикле компонента.

Компонент (нода в ROS) загружается, настраивается, запускается, работает, останавливается, выгружается. В OROCOS эти стадии четко разделены, в ROS явного разделения нет, но можно сделать искусственно через операции.

У OROCOS очень легковесные компоненты — это всегда одна нить (поток исполнения). Там выделяется три режима работы: периодический (по таймеру), по событию на порту (обработка сообщения), по прерыванию. OROCOS разработан так, что программист не должен думать о синхронизации потоков.

В ROS ограничения на нити нет, так и нет основных режимов работы. Все в руках программиста.

Примеры

  1. Передача данных через порт
  2. Операции
  3. Добавляем интеграцию с ROS
  4. Пример1
  5. Пример2
  6. Параметры

Используемые материалы

ros-orocos.pdf by disRecord