Robotické operační systémy
Reklama:Robotické operační systémy představují základní softwarovou vrstvu, která umožňuje řízení robotů a jejich komplexních funkcí. Tyto systémy lze rozdělit do několika kategorií podle jejich nasazení, architektury a hardwarových požadavků.
Hlavní kategorie robotických operačních systémů
ROS (Robot Operating System) a ROS 2
Robot Operating System není klasický operační systém v tradičním slova smyslu, ale robustní middleware framework běžící nad standardním operačním systémem, typicky nad Linuxem Ubuntu. ROS byl vyvinut v roce 2007 organizací Open Robotics a stal se de facto standardem v robotickém průmyslu.1 2 3
Hlavní charakteristiky ROS:
- Poskytuje abstrakci hardwaru, nízkoúrovňové ovládání zařízení a implementaci běžně používaných funkcionalit1
- Využívá grafovou architekturu, kde zpracování probíhá v uzlech (nodes), které mohou přijímat, odesílat a multiplexovat senzorická data1
- ROS sám o sobě není RTOS (real-time operating system), ačkoliv je možné ho integrovat s real-time kódem1
- Podporuje více programovacích jazyků včetně Pythonu a C++4
- Obsahuje rozsáhlý ekosystém s tisíci balíčky a knihovnami4
ROS 2 - nová generace: ROS 2 představuje kompletní přepis architektury s důrazem na průmyslové nasazení. Hlavní vylepšení zahrnují:5 6
- Podporu real-time aplikací
- Vylepšené bezpečnostní mechanismy (autentizace a šifrování)6
- Multiplatformní kompatibilitu (Linux, Windows, macOS)6
- Data Distribution Service (DDS) middleware pro robustnější komunikaci7 6
- Lepší škálovatelnost a výkon6
Minimální hardwarové požadavky:
- Pro ROS 2 Humble: Raspberry Pi 4B s minimálně 2 GB RAM (doporučeno 4-8 GB)8
- Pro ROS 2 Iron: Funkční na Raspberry Pi 3 B+, ačkoliv s omezeným výkonem9
- Procesor: Vícejadrový ARM nebo x86 procesor
- Úložiště: Minimálně 32 GB (doporučeno pro úplnou instalaci)8
- Pro simulace a vizualizaci se doporučuje výkonné GPU10 11
Embedded Linux pro robotiku
Embedded Linux představuje vysoce přizpůsobitelnou platformu pro robotické aplikace. Využívá se především tam, kde je potřeba flexibilita a široká podpora síťových funkcí.12 13
Yocto Project: Yocto Project je open-source framework pro vytváření vlastních Linux distribucí pro embedded zařízení. Poskytuje nástroje jako OpenEmbedded build systém, BitBake a Poky referenční distribuci.14 15 16
Využití v robotice:
- Umožňuje vytvářet optimalizované operační systémy přesně podle potřeb robota14
- Podporuje ROS 2 Humble a další robotické frameworky14
- Široká podpora pro různé hardwarové architektury16
Minimální požadavky pro Embedded Linux:
- RAM: Od 64 MB (základní systémy) do 512 MB+ (komplexní aplikace)13
- Flash/ROM: 32 MB až několik GB podle konfigurace13
- Procesor: ARM Cortex-A/M, x86, MIPS, PowerPC12
Real-Time Operating Systems (RTOS)
RTOS jsou specializované operační systémy navržené pro aplikace s přísnými časovými požadavky. V robotice se používají tam, kde je kritická deterministická odezva systému.17 18
FreeRTOS
FreeRTOS je nejpopulárnější open-source RTOS s minimální paměťovou stopou.1920
Vlastnosti:
- Preemptivní multitasking s podporou kooperativního plánování21
- Podpora pro 8-bitové, 16-bitové i 32-bitové mikrokontroléry22
- Využití v IoT zařízeních a robotických projektech23 20
Hardwarové požadavky:
- ROM: 4-12 kB pro samotné jádro24 21
- RAM: 250 bajtů + 400 bajtů/úloha21
- Minimálně 8 kB RAM pro jednoduché aplikace25 26
VxWorks
VxWorks je komerční hard real-time operační systém od Wind River Systems.2728
Využití:
- Kosmické mise (Mars Rovers, James Webb Space Telescope)28
- Průmyslová robotika a automatizace29 30
- Chirurgické roboty (Saroa Surgical System)30
- Letecká technika (Boeing 787)28
Podporované platformy:
Hardwarové požadavky:
Zephyr RTOS
Zephyr je open-source RTOS vyvinutý Linux Foundation s důrazem na malou paměťovou stopu.33 31
Vlastnosti:
- Modulární a škálovatelný design33
- Podpora přes 600 desek napříč různými CPU architekturami33
- Zabudované bezpečnostní mechanismy33
- Podpora Wi-Fi, Ethernet, Bluetooth, LoRaWAN33
Hardwarové požadavky:
- Minimálně 8 kB paměti34 31
- Reference ROM: 2-3 kB pro minimální konfiguraci34
- Procesory: ARM Cortex-M, ARC, RISC-V, x86, Xtensa33
RTEMS (Real-Time Executive for Multiprocessor Systems)
RTEMS je open-source RTOS používaný v kosmických misích a kritických aplikacích.35 36
Využití:
- NASA mise: Mars Rover, Parker Solar Probe, Juno37 38
- ESA mise: Galileo GPS satelity, ExoMars38
- Průmyslová automatizace a bankovnictví39
Vlastnosti:
- POSIX-compliant35 37
- Podpora pro 18 procesorových architektur36 37
- Symetrický multiprocessing (SMP)39 37
Podporované architektury:
Hardwarové požadavky:
QNX Neutrino RTOS
QNX je komerční mikrokernel RTOS od BlackBerry.40 32
Vlastnosti:
- Mikrokernelová architektura pro vysokou spolehlivost32
- Hard real-time výkon32
- Certifikace pro bezpečnostně kritické aplikace (IEC 61508 SIL 3)41
Využití v robotice:
Hardwarové požadavky:
ThreadX (Eclipse ThreadX)
ThreadX, dříve Azure RTOS, je nyní open-source RTOS pod správou Eclipse Foundation.42 43
Vlastnosti:
- Deterministický výkon s minimální latencí42
- Malá paměťová stopa42
- Podpora SMP a AMP42
- Nasazen na více než 12 miliardách zařízení43 44
Aplikace:
NuttX
NuttX je POSIX-compliant RTOS s důrazem na standardy.45 46
Vlastnosti:
- Škálovatelný od 8-bit do 64-bit architektur46 45
- Virtuální souborový systém (VFS)46
- Podpora pro loadable kernel modules46
- Real-time plánování (FIFO, RR, SPORADIC)46
Podporované platformy:
- ARM, AVR, MIPS, RISC-V, x86, Xtensa46
Hardwarové požadavky:
- Minimálně 32 kB Flash, 8 kB RAM47
- Pro pokročilé funkce (USB, Ethernet, IPv6) je lepší použít MCU s alespoň 128 kB Flash47
RIOT OS
RIOT je open-source operační systém pro IoT a embedded zařízení s důrazem na nízkou spotřebu.48 49
Vlastnosti:
- Mikrokernelová architektura49
- Plná podpora multithreadingu a real-time schopnosti49
- Podporuje programování v C, C++ a Rust48 22
- Částečná POSIX kompatibilita22 49
Hardwarové požadavky:
- 8-bitové, 16-bitové a 32-bitové mikrokontroléry22 49
- Podporuje přes 200 desek (AVR, MSP430, ESP8266, ESP32, ARM Cortex-M)22
Contiki a Contiki-NG
Contiki je operační systém navržený pro zařízení s výrazně omezenými zdroji.50 51
Vlastnosti:
- Zabudovaný TCP/IP stack50
- Podpora IPv6 a 6LoWPAN50
- Protothread mechanismus pro efektivní multitasking51
Hardwarové požadavky:
Mbed OS
Mbed OS je open-source operační systém od ARM pro IoT zařízení.52 53
Vlastnosti:
- RTOS jádro založené na CMSIS-RTOS RTX52
- Vícevrstvé zabezpečení včetně Mbed TLS52
- Podpora Bluetooth LE, 6LoWPAN, Ethernet, Wi-Fi52
- Licence Apache 2.052
Hardwarové požadavky:
micro-ROS
micro-ROS je specializovaná implementace ROS 2 pro mikrokontroléry.54 55
Vlastnosti:
- Plná podpora ROS 2 komunikačních paradigmat56
- Zero dynamic memory usage možnost pro hard real-time aplikace56
- Transport agnostický56
Hardwarové požadavky:
- Minimálně 32 kB RAM54 56
- 32-bitové architektury56
- Příklady podporovaných platforem:54
- ESP32: 520 kB RAM, 4 MB Flash
- Raspberry Pi Pico RP2040: 264 kB RAM
- STM32F746: 320 kB RAM, 1024 kB Flash
- Renesas EK RA6M5: 512 kB RAM, 2 MB Flash
Spotřeba paměti:
- Publisher aplikace: ~400 B celkové paměti57
- Subscriber aplikace: ~8700 B celkové paměti (s defaultním nastavením)57
- Client/service aplikace: ~8800 B celkové paměti57
- Stack lze redukovat na přibližně 2 kB58
Operační systémy pro vyšší výpočetní výkon
Ubuntu pro robotiku
Ubuntu je nejpoužívanější operační systém pro vývoj robotických aplikací.59 60
Ubuntu Core:
- Optimalizovaná verze Ubuntu pro edge zařízení a IoT60
- Kontejnerizované Snap balíčky60
- Transaktní over-the-air aktualizace60
- Pokročilé bezpečnostní funkce (secure boot, strict confinement)60
Výhody pro robotiku:
- Nejlepší podpora ROS a ROS 261 59
- Široká komunita vývojářů59
- Pravidelné aktualizace a dlouhodobá podpora LTS verzí59
Hardwarové požadavky:
- Minimálně 2 GB RAM (doporučeno 4-8 GB)8
- Procesor: ARM nebo x86/x6460
- Úložiště: Minimálně 8 GB pro základní systém60
Android pro robotiku
Android se používá pro řízení robotů přes mobilní zařízení nebo jako OS pro interaktivní roboty.62 63
Využití:
- Dálkové ovládání robotů přes Bluetooth nebo Wi-Fi64 62
- Interaktivní sociální roboty (např. Pepper robot)65
- Senzorická data z mobilních zařízení pro roboty63
Android Things:
- Verze Androidu navržená speciálně pro IoT zařízení66
- Podpora pro smart speakers a připojené spotřebiče66
Windows IoT
Windows IoT je rodina operačních systémů Microsoftu pro embedded systémy.67 68
Windows 10 IoT Core:
- Odlehčená verze Windows 10 pro malá zařízení67
- Podpora pro x86, x64, ARM32, ARM6467
- Využití v kiosках, testovacím vybavení a robotice67
Windows 10 IoT Enterprise:
- Plná verze Windows 10 pro průmyslové aplikace68 69
- Long-Term Servicing Channel (LTSC) pro stabilitu69
- Podpora pro Robot Operating System (ROS)69
Hardwarové požadavky:
Srovnání hlavních charakteristik
Real-time schopnosti
Hard real-time:
Soft real-time:
Non real-time:
Licence
Open-source:
- ROS/ROS 2: Apache 2.0, BSD6
- FreeRTOS: MIT19
- Zephyr: Apache 2.031
- RTEMS: GPL38
- RIOT: LGPL48 49
- NuttX: BSD47
- Mbed OS: Apache 2.052
- Eclipse ThreadX: Permissive open-source43
Komerční:
Výběr vhodného operačního systému
Při výběru robotického operačního systému je třeba zvážit následující faktory:
Pro výzkum a prototypování:
- ROS 2 na Ubuntu poskytuje nejlepší ekosystém nástrojů a knihoven2 59
- Snadný přístup k simulačním nástrojům jako Gazebo3 70
- Široká komunita a dokumentace2
Pro průmyslové nasazení:
- VxWorks nebo QNX pro kritické aplikace30 32
- ROS 2 s real-time rozšířeními pro menší kritičnost5 6
- Ubuntu Core pro OTA aktualizace a správu flotily60
Pro embedded systémy s omezenými zdroji:
- FreeRTOS pro jednoduché aplikace19
- Zephyr pro IoT zařízení s bezpečnostními požadavky33
- micro-ROS pro integraci s ROS 2 ekosystémem54 56
Pro výukové účely:
Budoucnost robotických operačních systémů
Vývoj směřuje k:
- Lepší integraci AI a strojového učení do robotických platforem59
- Vylepšené bezpečnostní mechanismy pro připojené roboty6 33
- Standardizace komunikačních protokolů (DDS)7 6
- Edge computing a cloudové integrace72 32
- Hardwarová akcelerace pro zpracování obrazu a AI inferenci14
Robotické operační systémy se neustále vyvíjejí a nabízejí stále širší možnosti pro různé aplikace – od jednoduchých embedded systémů s několika kilobajty paměti až po komplexní autonomní systémy s multiprocesorovými platformami a gigabajty RAM.
-
https://www.theconstruct.ai/about-ros-robot-operating-system/ ↩↩↩
-
https://www.mathworks.com/help/ros/gs/robot-operating-system-ros-basic-concepts_mw_1b4db38c-9199-4217-82cc-3680b8dda407.html ↩↩
-
https://thinkrobotics.com/blogs/learn/top-7-open-source-robotics-platforms ↩↩↩
-
https://agrobofood.github.io/agrobofood-case-studies/case_studies/Robot-Software-Platforms.html ↩↩
-
https://robotnik.eu/ros-2-robot-operating-system-overview-and-key-points-for-robotics-software/ ↩↩↩↩↩↩↩↩↩
-
https://www.electronicdesign.com/markets/automation/article/21215225/electronic-design-ros-vs-ros-2-differences-and-practical-applications ↩↩
-
https://jarvis.goat-robotics.com/docs/Installation/ROS2 installation/ ↩↩↩
-
https://www.reddit.com/r/ROS/comments/1atreo7/ros2_iron_hardware_requirements/ ↩
-
https://discourse.openrobotics.org/t/pc-hardware-for-ros-project-development-simulation/10910 ↩
-
https://blog.felgo.com/embedded/embedded-operating-systems ↩↩
-
https://news.accelerationrobotics.com/yocto-ros2-hardware-acceleration/ ↩↩↩↩
-
https://www.robotsops.com/comprehensive-tutorial-yocto-project-in-robotops/ ↩
-
https://www.ibm.com/think/topics/real-time-operating-system ↩
-
https://aiut.com/en/blog/rtos-the-heart-of-industrial-automation-systems/ ↩↩
-
https://www.freertos.org/Community/Blogs/2020/micro-ros-on-freertos ↩↩↩↩
-
https://thinkrobotics.com/blogs/learn/introduction-to-freertos-on-esp32 ↩↩
-
https://www.highintegritysystems.com/openrtos/rtos-features/ ↩↩↩
-
https://forums.freertos.org/t/practical-rtos-project-ideas-for-real-world-applications/17981 ↩
-
https://www.freertos.org/Why-FreeRTOS/FAQs/Memory-usage-boot-times-context ↩
-
https://www.reddit.com/r/ECE/comments/6uwx1p/how_much_memory_does_a_uc_need_for_a_rtos/ ↩
-
https://forums.freertos.org/t/freertos-memory-requirements/15928 ↩
-
https://www.windriver.com/resource/ros-2-for-vxworks-developer-brief ↩
-
https://www.windriver.com/resource/deeper-dives-robots-get-real-time-running-tsn-applications-on-vxworks ↩
-
https://www.electronicspecifier.com/industries/robotics/vxworks-aids-surgical-robot-development/ ↩↩↩
-
https://en.wikipedia.org/wiki/Zephyr_(operating_system) ↩↩↩↩
-
https://www.therobotreport.com/blackberry-qnx-provides-guidance-on-minimizing-jitter-latency-in-robotics/ ↩↩↩↩↩↩↩↩↩↩
-
https://www.einfochips.com/blog/zephyr-rtos-a-game-changer-for-embedded-systems/ ↩↩↩↩↩↩↩↩
-
https://stackoverflow.com/questions/52723496/what-is-the-minimum-amount-of-ram-requirement-for-zephyr ↩↩
-
https://blackberry.qnx.com/en/products/foundation-software/qnx-rtos ↩↩↩
-
https://www.omi.me/blogs/overview/threadx-azure-rtos-overview-how-to-install-pros-cons-price ↩↩↩↩↩↩↩
-
https://techcommunity.microsoft.com/blog/iotblog/microsoft-contributes-azure-rtos-to-open-source/3986318 ↩↩↩
-
https://www.industrialshields.com/blog/arduino-industrial-1/first-steps-with-apache-nuttx-rtos-and-esp32-plc-571 ↩↩
-
https://events.nuttx.apache.org/wp-content/uploads/2019/11/AAssis_nx2019.pdf ↩↩↩↩↩↩↩
-
https://www.embedded.com/what-is-the-nuttx-rtos-and-why-should-you-care/ ↩↩↩
-
https://en.wikipedia.org/wiki/RIOT_(operating_system) ↩↩↩↩↩↩
-
https://www.ijstr.org/final-print/oct2020/An-Overview-Of-Iot-Operating-System-Contiki-Os-And-Its-Communication-Models.pdf ↩↩
-
https://www.arm.com/products/development-tools/embedded-and-software/mbed-os ↩↩
-
https://micro.ros.org/docs/concepts/benchmarking/memo_prof/ ↩
-
https://docs.vulcanexus.org/en/humble/rst/microros_documentation/index.html ↩↩↩↩↩↩
-
https://discourse.openrobotics.org/t/micro-ros-memory-profiling-is-out/16928 ↩↩↩
-
https://github.com/micro-ROS/micro_ros_stm32cubemx_utils/issues/35 ↩
-
https://www.linuxjournal.com/content/what-future-ubuntu-robotics-and-ai-integration ↩↩↩↩↩↩↩↩
-
http://www.ijcsit.com/docs/Volume 7/vol7issue2/ijcsit2016070271.pdf ↩↩↩
-
https://www.eti.uni-siegen.de/ezls/lehre/studiendiplomarbeiten/controlofmobilerobotwithandroidplatform/control_of_mobile_robot_with_android_platform.pdf ↩↩
-
https://www.engineersgarage.com/android-phone-controlled-robot-using-arduino/ ↩
-
https://www.robotlab.com/blog/comparison-of-peppers-os-versions ↩
-
https://embeddedhash.in/operating-systems-for-embedded-systems/ ↩↩
-
https://www.candtsolution.com/news_events-detail/windows-10-iot-enterprise-vs-windows-embedded/ ↩↩↩↩
-
https://niryo.com/ubuntu-innovation-in-robotics-research-and-education/ ↩
-
https://cyberneticsrobo.com/blog/robot-operating-systems-for-robotics/ ↩
-
https://www.igus.eu/automation/robot-control-system/robot-software ↩
-
https://www.reddit.com/r/embedded/comments/15zqq96/is_learning_embedded_systems_the_right_way_to_get/ ↩
-
https://www.swiftorial.com/swiftlessons/robotics-embedded-systems/advanced-topics-future-trends/robotics-operating-systems-comparison ↩
-
https://www.ijert.org/the-role-of-embedded-systems-in-robotics-a-comprehensive-review ↩
-
https://discourse.openrobotics.org/t/ros2-hardware-selection-for-beginner/33762 ↩
-
https://www.reddit.com/r/embedded/comments/1532441/what_are_some_simple_projects_using_freertos_and/ ↩
-
https://pantacor.com/embedded-linux/guide-to-building-embedded-linux-systems-for-iot-with-containers/ ↩
-
https://www.linkedin.com/advice/3/what-hardware-required-ros-installation-setup-robotics-rlhzc ↩
-
https://roscon.ros.org/2013/wp-content/uploads/2013/06/ros_and_embedded_systems.pdf ↩
-
https://micro.ros.org/docs/tutorials/core/first_application_rtos/freertos/ ↩
-
https://www.instructables.com/Tiny-Desktop-Robot-With-ESP32-and-FreeRTOS/ ↩
-
https://www.sciencedirect.com/science/article/abs/pii/S0736584507001287 ↩
-
https://www.windriver.com/resource/computer-vision-and-robotics-use-case ↩
-
https://www.reddit.com/r/ROS/comments/tacpke/what_is_the_difference_between_ros_and_rtos_and/ ↩
-
https://www.reddit.com/r/embedded/comments/11kmqw0/experiences_using_zephyr_rtos_for_embedded/ ↩
-
https://www.suse.com/c/what-is-a-real-time-operating-system/ ↩
-
https://www.zephyrproject.org/getting-the-best-of-all-worlds-with-zephyr-rtos/ ↩
-
https://www.geeksforgeeks.org/operating-systems/real-time-operating-system-rtos/ ↩
-
https://conclusive.tech/glossary/introduction-to-zephyr-rtos-features-examples-and-benefits/ ↩
-
https://www.academia.edu/88378719/Industrial_Robot_Multirate_Control_with_the_VxWorks_Real_Time_Operating_System ↩
-
https://www.qnx.com/solutions/industries/automotive/driver_assistance.html ↩
-
https://onlinedocs.microchip.com/oxy/GUID-EDFB1AB8-CD6B-446F-8E25-F2167287A1AF-en-US-4/GUID-2AD6AC66-AB70-4E20-B1EF-00555DCC0F66.html ↩
-
https://blogs.blackberry.com/en/2024/02/rtos-in-automotive-production ↩
-
https://azuremarketplace.microsoft.com/cs-cz/marketplace/apps/blackberry1736978014039.qnx_neutrino_rtos_710_arm64_and_x86?tab=overview ↩
-
https://summerofcode.withgoogle.com/archive/2024/organizations/rtems-project ↩
-
https://www.advantech.com/en-us/resources/faq/getting-started-with-ros-on-yocto ↩
-
https://networksimulationtools.com/contiki-os-cooja-simulator-iot-simulation/ ↩
-
https://www.sciencedirect.com/science/article/pii/S2352711022000620 ↩
-
https://thinkrobotics.com/blogs/learn/micro-ros-on-stm32-complete-how-to-guide-for-ros-2-on-mcus ↩
-
https://somcosoftware.com/en/blog/yocto-linux-build-your-own-embedded-linux-distribution ↩