Robocikowo>ROBOCIKOWO
PREEMPT_RT

Inne · Runtime i infrastruktura

PREEMPT_RT

6.12-rt·Linux Foundation

Aktywny Open source Real-time capable
KATEGORIAInne · Runtime i infrastruktura
GOTOWOŚĆTRL 9
SKALA ADOPCJIStandard branżowy
LICENCJEGPL-2.0-only
PIERWSZE WYDANIE2004

PREEMPT_RT (zwany też RT-Preempt lub Linux-RT) to zestaw łatek jądra Linux, które zamieniają jądro ogólnego przeznaczenia w system twardego czasu rzeczywistego (hard-RTOS). Projekt jest sponsorowany przez Linux Foundation i rozwijany od 2004 roku – początkowo przez Ingo Molnára i Thomasa Gleixnera.

Kluczowe mechanizmy wprowadzane przez łatkę: zamiana wirepath spinlocków na muteksy preemptowalne (RT-mutex), pełna preempcja jądra (PREEMPT_RT_FULL), wysoko rozdzielcze timery (hrtimers) jako źródło taktowania cyklu real-time, priorytetowe dziedziczenie (priority inheritance) zapobiegające inwersji priorytetów, obsługa przerwań w wątkach kontekstu (threaded IRQs).

W praktyce robotycznej łatka jest wymagana lub silnie zalecana dla aplikacji sterowania ruchem o cyklach < 1 ms. Stosowana jest przez ros2_control, IgH EtherCAT Master, różne stosy MoveIt, a także bezpośrednio w systemach sterowania humanoidów.

Poczynając od jądra 6.12 LTS (SLTS), znaczna część funkcjonalności PREEMPT_RT została włączona do mainline Linuksa jako opcja konfiguracyjna `CONFIG_PREEMPT_RT`, co eliminuje konieczność stosowania zewnętrznych łatek na nowoczesnych dystrybucjach.

Typ i role
Typy oprogramowania
System operacyjny

System operacyjny ogólnego przeznaczenia lub specjalizowany dla robotyki — Ubuntu, Ubuntu Core, dystrybucje ROS-aware. Stanowi platformę dla middleware, runtime i aplikacji robotycznych.

Runtime

Runtime to środowisko lub warstwa uruchomieniowa wykorzystywana do wykonywania kodu, ładowania bibliotek, obsługi zależności i działania aplikacji lub usług w czasie rzeczywistym albo w czasie pracy systemu.

Wybierz pozycję, aby zobaczyć opis.
Kategoria główna
Runtime i infrastrukturaSterowniki i firmware
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.

Wybierz pozycję, aby zobaczyć opis.
Rodzina oprogramowania
Rodzina

Rodzina narzędzi zapewniających twardy czas rzeczywisty w systemie Linux oraz komunikację po magistrali EtherCAT – fundament sterowania przemysłowego i robotycznego.

Dojrzałość i adopcja
9 / 9
Sprawdzone w warunkach operacyjnych
BadaniaPrototypProdukcja
Skala adopcjiStandard branżowy
Status utrzymaniaUtrzymywane przez fundację
Pierwsze wydanie2004
Ostatnia aktualizacja1 grudnia 2024
Wdrożenia

Stosowany w ros2_control, IgH EtherCAT, środowiskach humanoidalnych (Atlas, KUKA LBR, Franka), systemach CNC, autonomicznych pojazdach.

Społeczność

Kilkuset stałych kontrybutorów, tysiące wdrożeń przemysłowych i badawczych; oficjalnie wspierany przez Linux Foundation.

Docelowe platformy robotyczne
Robot przemysłowy
Ramię robotyczne
Robot mobilny
Humanoid
Robot czworonożny
Robot badawczy
Dron / UAV
Wsparcie ROSKompatybilność z ekosystemem ROS / ROS 2
Community ROS 2 WrapperWrapper ROS 2 tworzony i utrzymywany przez społeczność, nie przez producenta
ROS 2 Hardware Interface (ros2_control)Hardware Interface dla frameworka ros2_control
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 powszechnie wykorzystywany w firmware, sterownikach, mikrokontrolerach i systemach embedded, gdzie wymagana jest bezpośrednia kontrola nad zasobami sprzętowymi.

Wybierz pozycję, aby zobaczyć opis.
Systemy operacyjne
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.

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 24.04

Ubuntu 24.04 LTS 'Noble Numbat' — wspierane do kwietnia 2029. Host dla ROS 2 Jazzy.

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
Pakowanie i dystrybucja
Menadżery pakietów
apt / deb

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

apt / deb (Debian/Ubuntu)

Oficjalny menedżer pakietów systemu Debian i jego pochodnych (Ubuntu, Linux Mint, Raspberry Pi OS, NVIDIA JetPack OS). Pakiety w formacie .deb instalowane przez narzędzia apt, apt-get lub dpkg. Dominujący sposób dystrybucji oprogramowania robotycznego w ekosystemie ROS – wszystkie oficjalne pakiety ROS 1 i ROS 2 są dystrybucowane przez apt z repozytorium packages.ros.org. Instalacja pakietu ROS 2: 'sudo apt install ros-humble-<package-name>'. Zarządzanie zależnościami automatyczne przez rosdep (ROS dependency manager) korzystający z apt jako backend dla platform Ubuntu/Debian. Pakiety binarne prekompilowane dla konkretnej architektury (x86_64, aarch64, arm32) i wersji Ubuntu – brak konieczności kompilacji ze źródeł. Repozytoria PPA (Personal Package Archive) umożliwiają dystrybucję własnych pakietów deb przez Launchpad (Ubuntu) bez konieczności włączenia do oficjalnego rejestru. Stosowany na NVIDIA Jetson (JetPack oparty na Ubuntu), Raspberry Pi OS i większości platform Linux używanych w robotyce. Wymaga systemu operacyjnego z rodziny Debian.

Source only

Dostępne wyłącznie jako kod źródłowy do kompilacji.

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.

aarch64 / ARM64

ARM 64-bit – NVIDIA Jetson, Raspberry Pi 4/5, Apple Silicon.

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.

RISC-V 64-bit (RV64GC)

Otwarta architektura zestawu instrukcji (ISA) RISC-V w wersji 64-bitowej z rozszerzeniami G (IMAFD – Integer, Multiply, Atomic, Float, Double) i C (Compressed instructions). Pierwsza w pełni otwarta architektura ISA bez opłat licencyjnych, rozwijana przez RISC-V International. Rosnące znaczenie w robotyce jako alternatywa dla ARM i x86 wolna od opłat licencyjnych i ograniczeń eksportowych. Platformy RISC-V w robotyce: SiFive HiFive Unmatched (FU740, quad-core RV64GC), StarFive VisionFive 2 (JH7110, quad-core RV64GC z GPU IMG BXE-4-32 – pierwsza przystępna cenowo płyta RISC-V z GPU), Milk-V Pioneer/Mars, Kendryte K210 (dual-core RV64 – popularny w edge AI). Wsparcie oprogramowania: Ubuntu 23.10+ oficjalnie wspiera riscv64, Debian wspiera riscv64, ROS 2 nie ma oficjalnych tier-1 buildów dla riscv64 (community builds dostępne). Wsparcie Rust dla riscv64gc-unknown-linux-gnu jest tier-2. Rosnące wsparcie toolchainów: GCC, LLVM/Clang, OpenCV, TensorFlow Lite. Bariery adopcji w robotyce: brak wydajnych SoC z wbudowanym NPU dla edge AI, ograniczona dostępność sterowników dla sensorów robotycznych, malejące ale nadal istniejące luki ekosystemowe. Perspektywa: RISC-V może stać się istotną architekturą w robotyce w latach 2025–2030 przy rosnącym wsparciu Linuksa i kluczowych bibliotek.

Wybierz pozycję, aby zobaczyć opis.
Trudność instalacji
PoziomTylko eksperci
Protokoły i interfejsy
Protokoły komunikacji
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.

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).

CAN bus (Controller Area Network)

Szeregowy protokół komunikacyjny opracowany przez Bosch, powszechnie stosowany w robotyce mobilnej, quadrupedach i dronach do komunikacji między kontrolerami silników, ESC i MCU. Obsługuje prędkości do 1 Mbit/s (CAN 2.0) lub do 5+ Mbit/s (CAN FD). Cechuje go bardzo niska latencja, odporność na zakłócenia elektromagnetyczne i deterministyczny arbitraż wiadomości. Używany m.in. w robotach Unitree (G1, H1) do komunikacji z modułami stawowymi w trybie low-level.

CAN FD (CAN with Flexible Data-Rate)

Rozszerzenie standardu CAN 2.0 zwiększające przepustowość do 8 Mbit/s i rozmiar ramki danych do 64 bajtów (vs 8 bajtów w CAN 2.0). Zachowuje wsteczną kompatybilność z CAN 2.0 na poziomie arbitrażu. Stosowany w nowoczesnych robotach humanoidalnych i manipulatorach wymagających szybkiej transmisji danych telemetrycznych z wielu stawów jednocześnie.

IEEE 1588 / PTP (Precision Time Protocol)

Standard synchronizacji czasu w sieci Ethernet (IEEE 1588-2008, PTPv2) zapewniający precyzję synchronizacji poniżej 1 µs w sieciach LAN. Niezbędny w systemach wielorobotowych i wielosensorycznych.

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.

Ethernet 100BASE-TX (Fast Ethernet)

Standard IEEE 802.3u – Ethernet 100 Mbit/s przez skrętkę (Cat5 i wyżej), złącze RJ-45. W robotyce stosowany jako legacy interfejs w starszych robotach przemysłowych (KUKA KR C2, Fanuc R-J3), PLC i urządzeniach embedded niskiej klasy.

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.

CAN FD (Flexible Data-Rate)

Controller Area Network Flexible Data-Rate – rozszerzenie CAN 2.0 zachowujące arbitraż przy 1 Mbit/s i zwiększające prędkość transmisji danych do 8 Mbit/s oraz rozmiar ramki do 64 bajtów. W robotyce humanoidalnej stosowany do szybkiej komunikacji między kontrolerem głównym a modułami stawowymi.

UART / RS-485

Universal Asynchronous Receiver-Transmitter w standardzie różnicowym RS-485 (EIA-485). Obsługuje magistralę wielopunktową do 32 urządzeń, zasięg do 1200 m, prędkości do 10 Mbit/s. W robotyce stosowany do sieci czujników rozproszonych i komunikacji Dynamixel Protocol 2.0.

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.
Licencje
GPL-2.0-onlyGNU General Public License v2.0v2.0

Rodzina licencji: Silny copyleft

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

Silna licencja copyleft GNU – każde oprogramowanie łączące się z kodem GPL v2 lub zawierające kod GPL v2 musi być dystrybuowane na GPL v2 z pełnym kodem źródłowym. Niekompatybilna z Apache 2.0 (klauzula 6 GPL v2 vs klauzula 7 Apache 2.0). Jądro Linux dystrybuowane na GPL v2 z wyjątkiem 'Linux syscall note' umożliwiającym zamknięte programy użytkujące syscall.

Uwaga dla robotyki

Spotykana w starszych komponentach ROS 1 i niektórych sterownikach hardware. Inkompatybilność z Apache 2.0 była historycznym problemem ekosystemu ROS 1. Firmy OEM muszą unikać GPL v2 w komponentach runtime zamkniętych produktów robotycznych lub uzyskać wyjątek licencyjny. Jądro Linux (GPL v2) używane w robotach jest bezpieczne dzięki syscall exception.

Historia wersji
6.12-rtgru 2024

Integracja większości łatek do mainline jako CONFIG_PREEMPT_RT w jądrze 6.12 LTS.

6.6-rtsty 2024

Kontynuacja utrzymania gałęzi LTS z poprawkami latencji.

5.15-rtsty 2022

Popularna wersja LTS stosowana w Ubuntu 22.04 Realtime.