Robocikowo>ROBOCIKOWO
OROCOS (Open Robot Control Software)

Sterowanie · Middleware

OROCOS (Open Robot Control Software)

2.9.4·KU Leuven

Aktywny Open source Real-time capable Dostępne API
KATEGORIASterowanie · Middleware
GOTOWOŚĆTRL 9
SKALA ADOPCJIUgruntowany open source
LICENCJELGPL-2.1-only
PIERWSZE WYDANIE2001

OROCOS (Open Robot Control Software) to weteran wśród frameworków robotyki, projekt zapoczątkowany w 2001 r. na Katolickim Uniwersytecie w Lowanium (KU Leuven, Belgia) przez profesorów Hermana Bruyninckxa i Petera Soeterboeka. Główny cel: dostarczyć produkcyjne, twardo czasowo-rzeczywiste narzędzia C++ do sterowania robotami przemysłowymi.

Pakiet składa się z trzech głównych komponentów: (1) RTT (Real-Time Toolkit) — runtime do budowy hierarchicznych systemów kontrolnych z deterministycznym schedulerem; obsługuje porty, properties, attribute, operations, state machines. (2) KDL (Kinematics and Dynamics Library) — biblioteka do kinematyki i dynamiki łańcuchów kinematycznych (forward/inverse kinematics, Jacobian, dynamics) używana m.in. w MoveIt i ROS robot_state_publisher. (3) BFL (Bayesian Filtering Library) — implementacje filtra Kalmana, Extended Kalman, Unscented Kalman i Particle Filter.

OROCOS ma długą historię w aplikacjach przemysłowych: kontrolery KUKA LWR, Barrett WAM, Schunk LWA, roboty Stäubli, oraz liczne aplikacje machine tool i CNC. Choć centralny RTT stracił na popularności na rzecz ROS 2 z RT-PREEMPT, KDL nadal jest fundamentem kinematyki w MoveIt i wielu pochodnych projektach. Projekt jest na licencji LGPL 2.1+.

Typ i role
Typy oprogramowania
Middleware

Middleware to warstwa oprogramowania pośrednicząca między aplikacjami, usługami, sensorami, sterownikami i warstwami wykonawczymi. W robotyce middleware odpowiada często za komunikację, wymianę wiadomości, abstrakcję sprzętu i integrację modułów w jednym systemie.

Stack sterowania

Control Stack to zestaw komponentów programowych odpowiedzialnych za logikę sterowania, planowanie ruchu, wykonywanie komend oraz koordynację działania elementów wykonawczych robota.

Biblioteka API

API Library to biblioteka udostępniająca interfejsy programistyczne do komunikacji z urządzeniem, usługą lub systemem. W praktyce może stanowić lekką warstwę integracyjną opartą na oficjalnym API producenta lub projekcie open-source.

Narzędzie deweloperskie

Developer Tool to oprogramowanie przeznaczone do wspierania pracy deweloperskiej, w tym konfiguracji, debugowania, testowania, monitorowania, walidacji lub integracji systemów robotycznych i embedded.

Wybierz pozycję, aby zobaczyć opis.
Kategoria główna
MiddlewareSterowanie i planowanieNarzędzia deweloperskie
Role w ekosystemie robotycznym
Sterowanie robotem

Robot Control oznacza rolę oprogramowania odpowiedzialnego za sterowanie ruchem, wykonywanie komend, koordynację działania elementów wykonawczych oraz bezpośrednią logikę operacyjną robota.

Planowanie ruchu

Motion Planning oznacza rolę oprogramowania odpowiedzialnego za planowanie trajektorii, ruchu, kolejności działań oraz wyznaczanie bezpiecznych i wykonalnych ścieżek dla robota lub manipulatora.

Dostęp API

API Access oznacza rolę oprogramowania udostępniającego interfejs programistyczny do komunikacji z robotem, sensorem, usługą lub platformą, umożliwiający tworzenie integracji i aplikacji klienckich.

Wsparcie deweloperów

Developer Enablement oznacza rolę oprogramowania wspierającego deweloperów w integracji, debugowaniu, walidacji, konfiguracji, testowaniu i uruchamianiu systemów robotycznych oraz ich komponentów.

Wybierz pozycję, aby zobaczyć opis.
Rodzina oprogramowania
Rodzina
OROCOS Ecosystem
Dojrzałość i adopcja
9 / 9
Sprawdzone w warunkach operacyjnych
BadaniaPrototypProdukcja
Skala adopcjiUgruntowany open source
Status utrzymaniaUtrzymywane przez społeczność
Pierwsze wydanie2001
Wdrożenia

KUKA LightWeight Robot (LWR) IV+, Barrett WAM, Schunk LWA, Stäubli RX/TX, Willow Garage PR2 (motion controllers), MoveIt (KDL kinematics solver), liczne wdrożenia przemysłowe machine tool/CNC.

Społeczność

370★ github.com/orocos/orocos_kinematics_dynamics, lista mailingowa orocos-dev na sourceforge, doroczne OROCOS+ROS+Yarp workshops, integracje z setkami projektów akademickich.

Docelowe platformy robotyczne
Ramię robotyczne
Robot przemysłowy
Humanoid
Robot badawczy
Wsparcie ROSKompatybilność z ekosystemem ROS / ROS 2
ROS 2 Bridge / AdapterMost lub adapter łączący oprogramowanie z ekosystemem ROS 2 bez natywnej integracji
Community ROS 1 WrapperWrapper ROS 1 tworzony i utrzymywany przez społeczność
Możliwości systemu
Open source
Kod źródłowy dostępny publicznie pod licencją open-source — umożliwia audyt bezpieczeństwa, własne modyfikacje oraz integrację bez barier licencyjnych.
Real-time capable
Zaprojektowane z gwarancjami determinizmu czasowego — spełnia wymagania pętli sterowania, systemów bezpieczeństwa i zadań wymagających niskiej, przewidywalnej latencji.
⟨/⟩
Dostępne API
Oprogramowanie udostępnia programowalny interfejs (REST, gRPC, SDK lub biblioteki językowe) pozwalający na automatyzację i integrację z innymi systemami.
📦
Pre-built / binary
Dystrybuowane jako gotowe pakiety binarne, obrazy kontenerów lub instalatory — bez konieczności kompilacji ze źródeł.
Języki programowania
C++

C++ to język programowania szeroko wykorzystywany w robotyce, systemach embedded, middleware, sterowaniu i przetwarzaniu danych, szczególnie tam, gdzie istotna jest wydajność oraz bliska integracja ze sprzętem.

Python

Python to wysokopoziomowy język programowania szeroko stosowany w robotyce, AI, computer vision, automatyzacji, testach i szybkiej integracji komponentów sprzętowych oraz software'owych.

Wybierz pozycję, aby zobaczyć opis.
Systemy operacyjne
Ubuntu 22.04

Ubuntu 22.04 LTS to długoterminowo wspierana wersja systemu Linux wykorzystywana w robotyce, AI, systemach edge i środowiskach programistycznych. Stanowi popularną bazę dla nowszych stosów oprogramowania oraz dystrybucji ROS 2.

Ubuntu 20.04

Ubuntu 20.04 LTS to długoterminowo wspierana wersja systemu Linux, szeroko wykorzystywana w robotyce, systemach embedded, AI i środowiskach developerskich. Jest popularna m.in. w środowiskach ROS oraz na platformach obliczeniowych takich jak NVIDIA Jetson.

Debian

Debian to jedna z najbardziej stabilnych i powszechnie stosowanych dystrybucji Linux, wykorzystywana jako baza dla wielu systemów embedded, robotycznych i serwerowych.

Wybierz pozycję, aby zobaczyć opis.
Minimalne wymagania sprzętowe
Minimalne wymagania sprzętowe
CPUDowolny x86-64 lub ARM64 z kernelem PREEMPT_RT lub Xenomai
RAM (GB)1
GPUBrak wymagań
Dysk (GB)1

Twardy real-time wymaga kernela PREEMPT_RT (Linux) lub Xenomai. KDL może działać bez tego.

Pakowanie i dystrybucja
Menadżery pakietów
apt / deb

Menedżer pakietów Debian/Ubuntu – apt-get install.

Source – CMake / ament_cmake

Dystrybucja wyłącznie przez kod źródłowy z systemem budowania CMake lub ament_cmake (ROS 2 extension CMake). Użytkownik pobiera kod źródłowy (git clone lub tarball) i kompiluje lokalnie przez: 'cmake -B build && cmake --build build' (CMake) lub 'colcon build' (ament_cmake w workspace ROS 2). Stosowana gdy: pakiet nie jest dostępny w żadnym rejestrze binarnym, wymagana jest custom konfiguracja kompilacji (specyficzne flagi kompilatora, opcje cmake), oprogramowanie targetuje niestandardową platformę sprzętową (exotic embedded SoC), deweloper chce modyfikować kod źródłowy. Typowy workflow w ROS 2: vcstool importuje źródła do workspace/src, colcon build kompiluje. Wymaga zainstalowania wszystkich build dependencies (compilery, biblioteki systemowe) – rosdep automatyzuje instalację dependencies. Najdłuższy czas instalacji (kompilacja może trwać dziesiątki minut na embedded hardware), ale maksymalna kontrola i konfigurowalność. Standard dla pakietów ROS 2 niedostępnych jeszcze w apt lub wymagających niestandardowej kompilacji.

GitHub Releases / GitHub Actions Artifacts

Mechanizm dystrybucji oprogramowania przez GitHub Releases – binarne artefakty (skompilowane pliki wykonywalne, biblioteki, archiwia .tar.gz, .zip, pakiety .deb, .rpm, obrazy Docker) dołączane do tagowanych wydań GitHub. GitHub Actions Artifacts: tymczasowe artefakty budowania przechowywane przez ograniczony czas (90 dni domyślnie). Stosowane w robotyce dla: SDK robotów bez własnej infrastruktury dystrybucji (pobranie .deb lub tarball z GitHub Releases), gotowych binarnych buildów dla konkretnych platform (ROS 2 pre-built dla Raspberry Pi aarch64 przez GitHub Actions), narzędzi CLI i aplikacji standalone. GitHub Container Registry (ghcr.io): hosting obrazów Docker w ramach GitHub – alternatywa dla Docker Hub zintegrowana z GitHub Actions. Automatyzacja: GitHub Actions workflow budujący i publikujący release przy każdym tagu (np. 'on: push: tags: v*'). Ograniczenia: brak zarządzania zależnościami (użytkownik musi samodzielnie zainstalować dependencies), brak automatycznych aktualizacji, wymaga ręcznego pobierania nowych wersji (chyba że używany instalator lub package manager pobiera z GitHub Releases API).

rosdep / bloom

ROS dependency manager i release tool.

Wybierz pozycję, aby zobaczyć opis.
Architektury CPU
x86_64 (AMD64)

64-bitowa architektura procesora wywodząca się z rodziny x86, opracowana przez AMD (jako AMD64) i zaadoptowana przez Intel (jako Intel 64 / EM64T). Dominująca architektura w komputerach osobistych, serwerach, stacjach roboczych i komputerach przemysłowych. W robotyce stosowana jako główna platforma obliczeniowa dla: stacji operatorskich i komputerów deweloperskich (Ubuntu 22.04/24.04 x86_64), serwerów fleet management i cloud robotics, symulatorów (Gazebo, Isaac Sim wymagają x86_64 z GPU NVIDIA dla pełnej wydajności), komputerów pokładowych robotów mobilnych wyższej klasy (Intel NUC, mini-PC przemysłowe jak Nuvo, OnLogic). Oficjalne wsparcie ROS 2 dla x86_64 jest tier-1 – wszystkie dystrybucje ROS 2 (Humble, Jazzy, Kilted) są w pełni wspierane i testowane. Pakiety apt dostępne przez packages.ros.org dla Ubuntu x86_64. Dominuje w środowiskach deweloperskich i symulacyjnych. Na robotach mobilnych i humanoidach x86_64 jest stosowane gdy wymagana jest wysoka moc obliczeniowa (np. Intel Core Ultra, AMD Ryzen Embedded) bez ograniczeń energetycznych typowych dla ARM. Przykłady hardware: Intel NUC 13 Pro, AMD Ryzen Embedded V2000, Advantech MIC-770.

ARM64 / AArch64

64-bitowa architektura ARM (Advanced RISC Machine) w wersji ARMv8-A i nowszych – dominująca architektura w embedded computing, robotyce mobilnej i edge AI. Dwie nazwy oznaczają to samo: ARM64 (nazwa stosowana przez Apple i w kontekście macOS/iOS), AArch64 (oficjalna nazwa architektury ARM, używana w Linuksie i ekosystemie embedded). Absolutnie dominująca architektura w nowoczesnej robotyce mobilnej i humanoidalnej: NVIDIA Jetson (Orin NX, AGX Orin – Cortex-A78AE), Raspberry Pi 4/5 (Cortex-A72/A76), Qualcomm Robotics RB5/RB6 (Kryo), Apple M1/M2/M3 (dla stacji deweloperskich macOS), procesory w smartfonach używanych jako moduły robotyczne. Oficjalne wsparcie ROS 2 tier-1 dla aarch64 od dystrybucji Humble – pakiety apt dostępne przez packages.ros.org dla Ubuntu 22.04/24.04 aarch64. Unitree SDK2 dostępne dla aarch64 (target: Jetson Orin NX w G1). Boston Dynamics Spot: Qualcomm aarch64. Zalety wobec x86_64: znacznie niższy pobór energii (TDP 5–65W vs 45–125W), lepsza wydajność na wat, wbudowane NPU/GPU dla edge AI, mniejszy footprint fizyczny. Ograniczenia: historycznie mniejsza dostępność prebuildowanych pakietów (szybko zmniejsza się), niektóre biblioteki x86-only nie są portowane.

ARMv7 / ARM32 (armhf)

32-bitowa architektura ARM w wersji ARMv7-A z rozszerzeniem Thumb-2 i sprzętową jednostką zmiennoprzecinkową (Hard Float – stąd oznaczenie armhf w dystrybucjach Debian/Ubuntu). Dominowała w embedded Linux i robotyce mobilnej przed upowszechnieniem się ARM64. Stosowana w: starszych Raspberry Pi (Pi 2 Model B: ARMv7, Pi 3 32-bit OS), BeagleBone Black (AM335x Cortex-A8), STM32MP1 (Cortex-A7 + Cortex-M4), starszych platformach robotycznych (TurtleBot 2, kobuki). Ograniczenia: maksymalnie 4 GB RAM adresowalnej, brak nowoczesnych rozszerzeń SIMD porównywalnych z AArch64 (NEON 64-bit vs NEON 128-bit w AArch64), malejące wsparcie w nowszych pakietach. ROS 2 Humble: armhf jest tier-3 (best-effort, bez gwarancji oficjalnych buildów). Większość nowoczesnych SDK robotycznych (Unitree SDK2, Isaac ROS) nie wspiera armhf. Relevantna dla: utrzymania starszych platform robotycznych (legacy support), bardzo ograniczone embedded SBC gdzie ARM64 niedostępne, mikrokontrolerów z Linux (Cortex-A klasy niskiej). Nowe projekty powinny targetować ARM64 zamiast ARMv7.

Wybierz pozycję, aby zobaczyć opis.
Trudność instalacji
PoziomZaawansowana
Protokoły i interfejsy
Protokoły komunikacji
Ethernet / TCP-IP

Standardowy protokół sieciowy IEEE 802.3 z TCP/IP jako warstwą transportową. Stosowany jako główny interfejs komunikacji między komputerem nadrzędnym (host PC) a robotem w SDK takich jak Unitree SDK2, Boston Dynamics API, Universal Robots URScript. Nie zapewnia deterministyczności (best-effort delivery).

Shared Memory (POSIX / mmap)

Mechanizm IPC oparty na współdzielonym obszarze pamięci między procesami na tym samym hoście. Stosowany w robotyce jako ultra-low-latency transport dla dużych danych. Latencje poniżej 1 µs.

EtherCAT

Deterministyczny protokół komunikacji przemysłowej oparty na Ethernet, opracowany przez Beckhoff Automation, zarządzany przez organizację ETG (EtherCAT Technology Group). Używa standardowych ramek Ethernet przetwarzanych w locie przez węzły slave (on-the-fly processing), co zapewnia cykle komunikacyjne poniżej 100 µs przy synchronizacji rozproszonych osi. Stosowany powszechnie w napędach stawowych robotów humanoidalnych (np. Boston Dynamics, Agility Robotics), manipulatorach przemysłowych i systemach motion control wymagających hard real-time.

Wybierz pozycję, aby zobaczyć opis.
Interfejsy sprzętowe
Ethernet 1000BASE-T (Gigabit Ethernet)

Standard IEEE 802.3ab – Ethernet 1 Gbit/s przez skrętkę Cat5e/Cat6, złącze RJ-45. Dominujący interfejs sieciowy w robotyce: komunikacja SDK-robot (Unitree SDK2, Boston Dynamics API, UR e-Series), przesyłanie obrazów z kamer IP, integracja z ROS 2 przez DDS/RTPS.

EtherCAT (Slave Interface)

Interfejs EtherCAT po stronie urządzenia slave – każdy slave zawiera dedykowany ASIC ESC (EtherCAT Slave Controller), np. ET1100 (Beckhoff), LAN9252 (Microchip). ESC przetwarza ramki Ethernet w locie (on-the-fly) bez buforowania – minimalna latencja ~300 ns na węzeł.

CAN 2.0A / 2.0B

Controller Area Network 2.0 – standardowy protokół CAN zdefiniowany przez Bosch (1991). CAN 2.0A obsługuje 11-bitowe identyfikatory ramek, CAN 2.0B (Extended) – 29-bitowe. Prędkości do 1 Mbit/s. Standard de facto w robotach kroczących i kołowych.

Wybierz pozycję, aby zobaczyć opis.
Klasy opóźnień
Hard Real-Time (< 1 ms)

Najwyższa klasa latencji – deterministyczne czasy odpowiedzi poniżej 1 ms z gwarancją dotrzymania deadline'ów bez żadnych wyjątków. Przekroczenie terminu jest traktowane jako błąd krytyczny systemu (system failure). Realizowane wyłącznie na dedykowanych systemach operacyjnych czasu rzeczywistego (RTOS): VxWorks, QNX Neutrino, LynxOS, RTEMS, Zephyr RTOS lub jądrze Linux z łatką RT-PREEMPT. Typowe zastosowania: kontrola prądów silników BLDC/PMSM (10–100 kHz), synchronizacja enkoderów absolutnych, safety-critical E-Stop. Odpowiednik TRL 9 w deterministyczności.

Hard Real-Time (1–5 ms)

Deterministyczna klasa latencji 1–5 ms z twardą gwarancją dotrzymania deadline'ów. Realizowane na RTOS lub Linux RT-PREEMPT z izolacją CPU. Typowe cykle: 1 ms (1 kHz) dla pętli prędkości silników, 2 ms (500 Hz) dla pętli pozycji stawów, 5 ms (200 Hz) dla pętli sił i momentów. Komunikacja przez EtherCAT, CAN FD. Zastosowania: pętle regulacji prędkości w manipulatorach przemysłowych, sterowanie stawami robotów humanoidalnych w trybie low-level.

Wybierz pozycję, aby zobaczyć opis.
Typy wdrożenia
Na robocie

On Robot oznacza typ wdrożenia, w którym oprogramowanie działa bezpośrednio na robocie lub na jego pokładowym module obliczeniowym, np. komputerze przemysłowym, SBC lub platformie edge AI.

Edge

Edge oznacza typ wdrożenia, w którym oprogramowanie działa na lokalnym urządzeniu obliczeniowym, bramce, komputerze przemysłowym lub innym zasobie blisko robota i sensorów, bez konieczności przetwarzania w chmurze.

Lokalna stacja robocza

Local Workstation oznacza typ wdrożenia, w którym software działa na komputerze lokalnym użytkownika, dewelopera lub operatora, np. laptopie, desktopie lub stacji roboczej.

Wybierz pozycję, aby zobaczyć opis.
Wspierane symulatory
Gazebo Classic (Gazebo 11)
Oryginalna wersja symulatora Gazebo – legacy, EOL 2025.
Oficjalne obrazy Docker
ros:humble
Licencje
LGPL-2.1-onlyGNU Lesser General Public License v2.1v2.1

Rodzina licencji: Słaby copyleft

ModyfikacjaDystrybucjaUżytek komercyjnyUżytek prywatnyKompatybilna z ROSOSI zatwierdzonaFSF Free/LibreWymaga oznaczenia autorstwaShare-alikeUjawnienie źródeł

Słaba licencja copyleft GNU przeznaczona dla bibliotek. Copyleft obejmuje wyłącznie zmodyfikowane pliki samej biblioteki LGPL – aplikacja linkująca do biblioteki LGPL może pozostać zamknięta (proprietary). Linkowanie dynamiczne jest bezpieczne. Linkowanie statyczne wymaga umożliwienia użytkownikowi relinkowania z inną wersją biblioteki.

Uwaga dla robotyki

Stosowana w niektórych starszych bibliotekach ROS 1 i middleware robotycznych. Wymaga starannej analizy przy linkingu statycznym w firmware embedded. Qt 5 (używane przez rqt) dostępne na LGPL v2.1 lub v3 – ważne przy tworzeniu zamkniętych narzędzi GUI dla robotów.

BSD-3-ClauseBSD 3-Clause Licensev3-Clause

Rodzina licencji: Licencja permisywna

ModyfikacjaDystrybucjaUżytek komercyjnySublicencjonowanieUżytek prywatnyKompatybilna z ROSOSI zatwierdzonaFSF Free/LibreWymaga oznaczenia autorstwa

Licencja BSD z trzema klauzulami – rozszerza BSD 2-Clause o trzeci warunek zakazujący używania nazwy organizacji ani nazwisk kontrybutorów do promocji produktów pochodnych bez pisemnej zgody (non-endorsement clause). Zwana też 'New BSD License' lub 'Modified BSD License'.

Uwaga dla robotyki

Oficjalna licencja Unitree SDK2 i Unitree Python SDK2. Powszechna w pakietach ROS 2 i bibliotekach robotycznych. Klauzula non-endorsement chroni reputację oryginalnych twórców przed nieuprawnioną asocjacją z produktami pochodnymi. Praktycznie identyczna z MIT pod względem swobody użytkowania.

Historia wersji
2.9.4lis 2022

Wsparcie Ubuntu 22.04, Noetic backports.

2.9.0lip 2018

ROS Kinetic/Melodic packaging, KDL improvements.

2.0.0wrz 2010

Refactor RTT 2.x, nowy scheduler.

1.0.0gru 2006

Stabilizacja RTT i KDL, integracja z ROS 1.

0.20.0wrz 2001

Pierwszy publiczny release RTT.