Klepsydra ROS2 Multi Core Ring Buffer Executor
Informazione di u produttu
Specificazioni
- Leggeru, modulare è cumpatibile cù i sistemi operativi più utilizati
- ROS2 Executor plugin capace di trasfurmà finu à 10 volte più dati cù una riduzione di u cunsumu di CPU finu à u 50%.
- GPU (Unità di Processamentu Graficu) per una alta parallelizazione è una crescita di a rata di dati di trasfurmazioni è l'utilizazione di GPU
- Klepsydra AI
- Klepsydra SDK
- GPU Klepsydra
- Capacità di streaming
- Klepsydra ROS2 esecutore plugin applicazione in u mondu sanu
Istruzzioni per l'usu di u produttu
- Cuntestu: Trattamentu parallelu
U pruduttu hè pensatu per affruntà e sfide relative à u processu à bordu in l'applicazioni spaziali, induve l'usu di CPU, u voluminu di dati è i bisogni di energia sò preoccupati. Offre una soluzione per hardware mudernu è software anticu gestionendu volumi di dati mediu in modu efficiente. - Comparare è scambià
"Compare and Swap" hè un algoritmu utilizatu in multithreading per ottene a sincronizazione. Compara u cuntenutu di un locu di memoria cù un valore datu è, solu s'ellu sò listessi, mudifica u cuntenutu di quella locu di memoria à un novu valore datu. Sta operazione hè fatta cum'è una sola operazione atomica. U pruduttu implementa stu algoritmu cum'è parte di a so funziunalità.
Pro è Cons di Programmazione Lock-Free
U pruduttu utilizes tecniche di prugrammazione senza serratura, chì anu advantages è disadvantages
- Pro:
- Riduzzione di l'usu di CPU
- Gestione efficace di u voluminu di dati
- Cons:
- Cumplessità in l'implementazione
- Richiede supportu da u hardware sottostante (a maiò parte di u hardware mudernu sustene a prugrammazione senza serratura)
Esecutore ROS2
U pruduttu include un Executor ROS2 chì pianifica l'applicazione ROS2 gestionendu i callbacks di abbonamenti, missaghji, servizii, timers è nodi. Cunsumeghja missaghji da e file DDS di middleware sottostanti è li spedisce per eseguisce à unu di i fili. L'esecutore pò esse cunfiguratu per eseguisce callbacks sequenziale o in parallelu.
Esecutori ROS2 di punta
U pruduttu incorpora Esecutori ROS2 di punta chì furnisce diverse strategie di esecutivu
- Esecutore Single Threaded: Esegue callbacks in sequenza è scansa periodicamente a struttura di l'applicazione per aghjurnà nodi, abbonamenti, servizii, etc.
- Esecutore multi-threaded: Esegue callbacks in parallelu è scansa periodicamente a struttura di l'applicazione per aghjurnà a descrizzione di u prublema.
Streaming Executor
U pruduttu introduce un esecutore streaming chì difiere da l'esecutore filatu in parechji aspetti
- Ùn ricustruisce micca a lista eseguibile per ogni iterazione.
- Tutti i nodi, gruppi di callback, timers, abbonamenti, etc. sò creati in tempu di custruzzione.
- Tutti l'abbonamenti in un node sò eseguiti nantu à u stessu filu, indipendentemente da u numeru di nuclei utilizati per a configurazione di streaming.
- Klepsydra Streaming Executor
L'esecutore di streaming di u produttu hè specificamente cuncepitu per trattà i temi di streaming utilizendu coppie editore-abbonatu. Trasmette in modu efficiente missaghji à l'abbonati in tutti i nodi, ricevuti da u middleware via rmw. U ciclu di l'avvenimentu gestisce questi temi, assicurendu un flussu di dati fluidu. - Regnu di Klepsydra
U Regnu Klepsydra hè un cumpunente di l'esecutore streaming chì agisce cum'è un pianificatore. Coordina l'esekzione di i pruduttori è di i cunsumatori in a configurazione di streaming. - Pruduttore
Un pruduttore hè rispunsevule per a generazione di dati chì seranu cunsumati da l'abbonati. U pruduttu supporta parechji pruduttori in a configurazione di streaming. - Consumatore
Un cunsumadore hè rispunsevule per trasfurmà è utilizendu e dati generati da i pruduttori. U pruduttu supporta parechji cunsumatori in a configurazione di streaming.
Domande Frequenti (FAQ)
- Chì sistemi operativi sò cumpatibili cù u pruduttu?
U pruduttu hè cumpatibile cù i sistemi operativi più cumunimenti utilizati. - Quantu dati pò u prucessu di u produttu cumparatu cù i metudi tradiziunali?
U pruduttu hè capaci di trasfurmà finu à 10 volte più dati cù una riduzione di u cunsumu di CPU finu à u 50% cumparatu cù i metudi tradiziunali. - U pruduttu utilizza a parallelizazione GPU?
Iè, u pruduttu utilizeghja GPU (Unità di Processamentu Graficu) per una alta parallelizazione, chì aumenta a tarifa di dati di trasfurmazioni è l'utilizazione GPU.
Un Approcciu di Ottimizazione Offline per Applicazioni Multi-Core ROS2: L'Executor Multi-Core Ring-Buffer ROS2
ROS Meetup Stuttgart 2023
Dr Pablo Ghiglino ( pablo.ghiglino@klepsydra.com )
U ROS2 Streaming Executor
CONTEXT : TRATTamentu PARALLEL
- Sfide nantu à u processu à bordu
- Hardware mudernu è software anticu:
- L'urdinatori massimi cù volumi di dati da bassu à mediu
- L'usu inefficace di risorse
- Potenza eccessiva per u processu di dati bassu
Cunsequenze per l'applicazioni spaziali
- Falli di missione ricorrenti per via di u software
- L'accessu à i dati di i sensori da a Terra richiede tempu.
- I satelliti luttanu per risponde à i bisogni di energia
COMPARE E SCAMBIA
- Compare-and-swap (CAS) hè una struzzione utilizata in multithreading per ottene a sincronizazione. Compara u cuntenutu di un locu di memoria cù un valore datu è, solu s'ellu sò listessi, modifica u cuntenutu di quella locu di memoria à un novu valore datu. Questu hè fattu cum'è una sola operazione atomica.
- Compare-and-Swap hè una parte integrante di l'architettura IBM 370 dapoi u 1970.
- Maurice Herlihy (1991) hà dimustratu chì u CAS pò implementà più di sti algoritmi cà l'atomi di lettura, scrittura è fetch-and-add.
PROS E CONTRO DI A PROGRAMMAZIONE LOCK-FREE
Pros
- Meno cunsumu CPU necessariu
- Latenza più bassa è più altu throughput di dati
- Aumentu sustanziale in u determinismu
Cons
- Tecnica di prugrammazione estremamente difficiuli
- Richiede un processore cù struzzioni CAS (90% di u mercatu anu, però)
Klepsydra Ring-buffer
U produttu
Leggeru, modulare è cumpatibile cù i sistemi operativi più utilizati
- SDK - Kit di sviluppu di software
Impulsate l'elaborazione di dati à a fine per l'applicazioni generale è l'algoritmi intensivi di processore - IA - Intelligenza Artificiale
Un mutore di rete neurale profonda (DNN) d'alta prestazione per implementà qualsiasi modulu di IA o di apprendimentu automaticu à u bordu - ROS2 Executor plugin
Esecutore per ROS2 capace di processà finu à 10 volte più dati cù una riduzione di u cunsumu di CPU finu à u 50%. - GPU (Unità di Processazione Grafica)
Alta parallelizazione di GPU per aumentà a tarifa di dati di trasfurmazioni è l'utilizazione GPU
Cuntestu: ROS1 in u Spaziu
- Vantaggi:
- Permette l'autonomia, a percepzione è u cuntrollu in u spaziu
- Flessibile, modulare è sustinutu da una grande cumunità.
- Examples:
- Robonaut di a NASA 2 (R2) - Astronauti assistiti nantu à l'ISS
- Astrobee di a NASA - Operazioni autonome nantu à l'ISS
- SFERE – Satelliti sferichi per a ricerca nantu à l'ISS
- Destra - Bracciu roboticu per a manipulazione è a riparazione nantu à l'ISS
- Google Lunar XPRIZE - Adupratu per missioni rover lunari
Cuntestu: Space-ROS
- Quadru ROS in l'esplorazione spaziale è a robotica
- Parzialmente qualificatu per l'usu di u Spaziu
- Examples:
- Assistenti robotici per astronauti
- Esplorazione planetaria cù rovers autonomi
- Operazioni satellitari è cuntrollu
- Docking di nave spaziale autonoma
- Manutenzione è riparazione in orbita
- Vantaggi:
- Permette l'autonomia, a cumunicazione è a percepzione
- Accelera u sviluppu è l'operazioni di a missione spaziale.
ROS2 Executor Spiegatu
Un esecutore coordina è pianifica l'applicazione ROS2 gestionendu i callbacks di abbonamenti, missaghji, servizii, timers è nodes. In ROS2, l'esecutore ùn mantene micca a so propria fila di messagi è callbacks, ma invece cunsuma missaghji da e file DDS di middleware sottostanti, è poi spedisce per l'esekzione à unu di i fili.
U statu di l'arti
Esecutori ROS2
- Esecutore unicu threaded: Un unicu thread interroga u middleware è eseguisce i callbacks in sequenza. Dopu scansa a struttura è aghjurnà nodi, abbonamenti, servizii, etc.
- L'esecutore staticu unicu filatu, induve a scansione è a definizione di a struttura hè eseguita una sola volta, durante a custruzzione. Tutti i nodi, gruppi di callback, timers, abbonamenti, etc. sò creati prima chì u spin () hè chjamatu.
- L'esecutore Multi-threaded crea una quantità di fili chì eseguiranu callbacks in parallelu. Simile à l'esecutore unicu filatu, scanserà periodicamente a struttura di l'applicazione è aghjurnà a descrizzione di u prublema.
L'esecutore di streaming Overview
- U Streaming Executor usa u Klepsydra Event Loop per trasmette missaghji à l'abbonati in tutti i nodi, chì venenu da u middleware via rmw. U ciclu di l'avvenimentu gestisce questi temi utilizendu coppie editore-abbonatu.
- L'esecutore streaming si comporta in modu simile à l'esecutore static single threaded in parechji aspetti. Prima, ùn ricustruisce micca a lista eseguibile per ogni iterazione. Tutti i nodi, gruppi di callback, timers, abbonamenti ecc. sò creati in tempu di custruzzione. Siconda, tutte l'abbonamenti in un node sò eseguiti nantu à u stessu filu, indipendentemente da u numeru di nuclei utilizati per a configurazione di streaming.
Klepsydra Streaming Executor
L'esecutore di streaming
Cumu travaglia ?
- Un paru editore-abbonatu hè creatu per ogni tema necessariu da un nodu ROS2 datu.
- Internamente, ogni paru editore-abbonatu hè identificatu da dui parametri: u nome di u nodu è u nome di u tema. In altri palori, dui nodi diffirenti chì publicanu à u stessu tema seranu gestiti indipindente.
- Tutte e coppie editore-abbonatu assuciati à temi chì appartenenu à u stessu node sò gestiti da u stessu ciclu di l'avvenimentu.
L'esecutore di streaming Single-core vs multi-core
- L'avantitagE di l'esecutore streaming hè chì ùn ci hè micca bisognu di gestione multithreading di l'abbonati per via chì tutti sò gestiti da u filu di u ciclu di l'avvenimentu assuciatu, chì hè cumunu à dui core è multi-core.
- L'anzianu travaglia in una manera simile à l'esecutore static single-threaded, postu chì tutti l'abbonati in tutti i nodi sò invucati da u stessu filu.
Performance Benchmark: U Ref-System
- A missione di u Gruppu di travagliu in tempu reale hè di favurizà è travaglià nantu à a gestione di a memoria, pub/sub in tempu reale, DDS in tempu reale, è arnesi chì permettenu traccia, prufilu è ottimisazione ( https://github.com/ros-realtime )
- U pacchettu reference_system hè statu sviluppatu per furnisce i blocchi di custruzzione fundamentali per creà sistemi cumplessi chì ponu esse utilizati per valutà e funzioni o prestazioni in modu standardizatu è ripetibile. ( https://github.com/ros-realtime/reference-system )
- U primu prughjettu à utilizà stu sistema di riferimentu hè u sistema di riferimentu autoware ( https://github.com/ros-realtime/referencesystem/blob/main/autoware_reference_system/README.md )
Benchmark di rendiment
- Configurazione di Klepsydra Streaming Benchmarks:
- U benchmark era basatu annantu à u sistema di riferimentu Autoware. Emula una applicazione di guida realistica.
- Tutte e misurazioni sò state prese cù un Raspberry Pi 4B cù: ROS galactic, Ubuntu 20.04 è 4 GB di ram, frequenza constante di 1.50GHz
- Configurazione cumpatibile di u sistema di riferimentu, è senza isolamentu CPU
- Processori testati:
- Raspberry PI 4 (processore di riferimentu per u RTWG)
- Unibap's iX10 (NASA è Blue Origin Testbed)
- Teledyne e2v LS1046
Benchmark di rendiment
- U scopu di l'algoritmu geneticu hè di minimizzà a latenza media di u percorsu criticu.
- Questu hè, u tempu chì piglia da a publicazione di Lidar Data finu à chì l'Object Collision Estimator compie u so travagliu.
- A figura mostra u percorsu criticu chì a nostra ricerca hà pruvatu à ottimisà
L'esecutore di streaming
Klepsydra Streaming Distribution Optimiser (SDO)
- A variazione multi-core di l'esecutore di streaming funziona megliu quandu a distribuzione di carica di i nodi trà i nuclei hè ottimisata è pò fà una differenza sustanziale in termini di latenza, cunsumu di energia è throughput di dati.
- In ogni casu, a cartografia di i nuclei ùn hè micca triviale è esige un approcciu sistematicu. Un approcciu pussibule hè di definisce una funzione di destinazione chì misura u rendiment di u sistema basatu annantu à a cunfigurazione core.
- Un algoritmu geneticu pò esse adupratu per ottimisà a cunfigurazione di u core testendu iterativamente diverse cunfigurazioni è selezziunate quelli chì funzionanu bè secondu a funzione di destinazione. Stu prucessu cuntinueghja finu à truvà una cunfigurazione ottima.
- Stu approcciu permette un usu più efficaci di u sistema multi-core è assicura chì a carica hè distribuita in u modu più ottimali.
Riassuntu di i risultati
- Per u travagliu di nodi chjuchi, a cumplessità aghjuntu ùn si traduce micca in risultati megliu. U static single threaded, essendu estremamente simplice, supera u restu di l'esecutori.
- Aumentendu a carica di travagliu, u Streaming Executor hè u megliu esecutore seguitu da u Static Single Threaded Executor.
- Era previstu chì u Streaming Executor hà realizatu sempre megliu cà u filu unicu, postu chì l'applicazione ùn modifica micca a so topologia mentre corre. Hè dimustratu chì questu hè veramente u casu
- Risultati per Raspberry PI4
- Aumentu simile in u rendiment ottenutu per iX10 di Unibap è LS1046 di Teledyne
Cunclusioni
Riassuntu
- Questu articulu presenta un novu approcciu per ottimisà u mudellu di esecutivu ROS2 chì combina sia una implementazione di esecutore ROS2 basata in un buffer d'anellu senza serratura, è l'usu di algoritmi genetichi per ottimisà a distribuzione di a carica di l'applicazione robotica in i core dispunibili in l'urdinatore di destinazione.
- Questa cumminazione hè stata pruvata per travaglià assai efficacimente per sistemi cù una carica computazionale pesante, cum'è u sistema di riferimentu spiegatu sopra. Un benefiziu chjave di a ricerca presentata hè a so adattabilità à diverse applicazioni: diverse topologie di nodi ROS2 ponu esse accelerate usendu l'executore di streaming più l'ottimisazione genetica, chì hè una di e sfide più discusse in ROS2.
Travagliu futuru
Riassuntu
- In quantu à u travagliu futuru di sta ricerca, ci sò parechje caratteristiche per esse incluse in l'esecutore streaming:
- sustegnu à l'umile è à u rollu,
- liberazione open source di l'esecutore di streaming single-core è
- l'usu di u multiplexer di sensori è ancu u ciclu di l'avvenimentu per temi cù parechji abbonati.
- Test di architettura RISC-V
Documenti / Risorse
![]() |
Klepsydra ROS2 Multi Core Ring Buffer Executor [pdfGuida di l'utente ROS2 Multi Core Ring Buffer Executor, ROS2, Multi Core Ring Buffer Executor, Ring Buffer Executor, Buffer Executor, Executor |