Klepsydra-logo

Klepsydra ROS2 Multi Core Ring Buffer Executor

Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-image-prodottu

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

  1. 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.
  2. 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.
  1. 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.
  2. 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.
  3. 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.
  4. 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)

  1. Chì sistemi operativi sò cumpatibili cù u pruduttu?
    U pruduttu hè cumpatibile cù i sistemi operativi più cumunimenti utilizati.
  2. 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.
  3. 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 à borduKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (1)
  • 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 energiaKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (2)

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.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (3)

PROS E CONTRO DI A PROGRAMMAZIONE LOCK-FREEKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (4)

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

Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (5)

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 GPUKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (6)

Cuntestu: ROS1 in u Spaziu

  • Vantaggi:
  • Permette l'autonomia, a percepzione è u cuntrollu in u spaziuKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (1)
  • Flessibile, modulare è sustinutu da una grande cumunità.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (2)
  • 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 lunariKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (3)

Cuntestu: Space-ROS

  • Quadru ROS in l'esplorazione spaziale è a robotica
    Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (4)
  • Parzialmente qualificatu per l'usu di u Spaziu
  •  Examples:
    Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (5)
    • Assistenti robotici per astronauti
    • Esplorazione planetaria cù rovers autonomi
    • Operazioni satellitari è cuntrollu
      Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (6)
    • Docking di nave spaziale autonoma
    • Manutenzione è riparazione in orbita
      Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (7)
  • Vantaggi:
    • Permette l'autonomia, a cumunicazione è a percepzione
    • Accelera u sviluppu è l'operazioni di a missione spaziale.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (8)

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.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (9)

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

Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (7)

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.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (10)

L'esecutore di streaming Single-core vs multi-coreKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (8)

  • 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

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

Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (9)

Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (10)

Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (12)

  • 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 casuKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (13)
  • Risultati per Raspberry PI4
  • Aumentu simile in u rendiment ottenutu per iX10 di Unibap è LS1046 di TeledyneKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (14)

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

Referenze

Lascia un cumentu

U vostru indirizzu email ùn serà micca publicatu. I campi obbligatori sò marcati *