Введение в 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 ограничения на нити нет, так и нет основных режимов работы. Все в руках программиста.
Примеры
- Передача данных через порт
- Операции
- Добавляем интеграцию с ROS
- Пример1
- Пример2
- Параметры
Используемые материалы
ros-orocos.pdf by disRecord
