Klepsydra-logo

Klepsydra ROS2 Multi Core Ring Buffer Executor

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

Impormasyon sa Produkto

Mga detalye

  • Ang gaan, modular, ug nahiuyon sa kadaghanan nga gigamit nga mga operating system
  • Ang ROS2 Executor plugin nga makahimo sa pagproseso hangtod sa 10 ka beses nga dugang nga datos nga adunay hangtod sa 50% nga pagkunhod sa konsumo sa CPU
  • GPU (Graphic Processing Unit) para sa taas nga parallelization ug dugang nga processing data rate ug GPU utilization
  • Klepsydra AI
  • Klepsydra SDK
  • Klepsydra GPU
  • Kapabilidad sa streaming
  • Klepsydra ROS2 executor plugin sa tibuok kalibutan nga aplikasyon

Mga Instruksyon sa Paggamit sa Produkto

  1. Konteksto: Parallel Processing
    Gidisenyo ang produkto aron matubag ang mga hagit nga may kalabotan sa pagproseso sa on-board sa mga aplikasyon sa wanang, diin ang paggamit sa CPU, gidaghanon sa datos, ug mga kinahanglanon sa kuryente nabalaka. Nagtanyag kini usa ka solusyon alang sa moderno nga hardware ug daan nga software pinaagi sa pagdumala sa medium nga gidaghanon sa datos nga epektibo.
  2. Itandi ug Pagbaylo
    Ang "Itandi ug Pagbaylo" usa ka algorithm nga gigamit sa multithreading aron makab-ot ang pag-synchronize. Gikomparar niini ang mga sulod sa usa ka lokasyon sa memorya sa usa ka gihatag nga bili ug, kung parehas ra sila, giusab ang mga sulud sa lokasyon sa memorya sa usa ka bag-ong gihatag nga kantidad. Kini nga operasyon gihimo isip usa ka atomic nga operasyon. Gipatuman sa produkto kini nga algorithm isip bahin sa pagpaandar niini.

Mga Kaayohan ug Kakulangan sa Lock-Free Programming
Ang produkto naggamit ug lock-free programming techniques, nga adunay advantages ug disadvantages

  • Mga bentaha:
    • Gipamub-an ang paggamit sa CPU
    • Epektibo nga pagdumala sa gidaghanon sa datos
  • Cons:
    • Komplikado sa pagpatuman
    • Nagkinahanglan og suporta gikan sa nagpahiping hardware (kadaghanan sa modernong hardware nagsuporta sa lock-free nga programming)

ROS2 Executor
Ang produkto naglakip sa usa ka ROS2 Executor nga nag-iskedyul sa aplikasyon sa ROS2 pinaagi sa pagdumala sa mga callback sa mga subskripsyon, mga mensahe, mga serbisyo, mga timer, ug mga node. Gikonsumo niini ang mga mensahe gikan sa nagpahiping middleware nga DDS nga mga pila ug gipadala kini aron ipatuman sa usa sa mga hilo. Ang executor mahimong ma-configure aron ipatuman ang mga callback nga sunud-sunod o parehas.

Ang pinakabag-o nga ROS2 Executors
Ang produkto naglakip sa state-of-the-art nga ROS2 Executors nga naghatag og lain-laing mga estratehiya sa pagpatuman

  • Usa ka Threaded Executor: Nagpatuman sa mga callback nga sunud-sunod ug matag karon nga gi-scan ang istruktura sa aplikasyon aron ma-update ang mga node, subskripsyon, serbisyo, ug uban pa.
  • Multi-Threaded Executor: Nagpatuman sa mga callback nga managsama ug matag karon ug unya nag-scan sa istruktura sa aplikasyon aron ma-update ang paghulagway sa problema.

Streaming Executor
Ang produkto nagpaila sa usa ka streaming executor nga lahi sa threaded executor sa daghang mga aspeto

  • Wala kini magtukod pag-usab sa executable nga listahan alang sa matag pag-uli.
  • Ang tanan nga mga node, mga grupo sa callback, mga timer, mga suskrisyon, ug uban pa gihimo sa oras sa pagtukod.
  • Ang tanan nga mga subskripsyon sa sulod sa usa ka node gipatuman sa parehas nga hilo, bisan unsa pa ang gidaghanon sa mga core nga gigamit alang sa streaming setup.
  1. Klepsydra Streaming Executor
    Ang streaming executor sa produkto espesipikong gidesinyo sa pagdumala sa mga topiko sa streaming gamit ang mga pares sa publisher-subscriber. Epektibo kini nga naghatud sa mga mensahe sa mga subscriber sa tanan nga mga node, nadawat gikan sa middleware pinaagi sa rmw. Ang event loop nagdumala niini nga mga hilisgutan, nga nagsiguro sa hapsay nga pag-agos sa datos.
  2. Klepsydra Realm
    Ang Klepsydra Realm kay usa ka component sa streaming executor nga naglihok isip scheduler. Nag-coordinate kini sa pagpatuman sa mga prodyuser ug mga konsumedor sulod sa streaming setup.
  3. Producer
    Ang usa ka prodyuser ang responsable sa pagmugna og datos nga gamiton sa mga subscriber. Gisuportahan sa produkto ang daghang mga prodyuser sa pag-setup sa streaming.
  4. Konsyumer
    Ang usa ka konsumedor ang responsable sa pagproseso ug paggamit sa datos nga nahimo sa mga prodyuser. Gisuportahan sa produkto ang daghang mga konsumedor sa pag-setup sa streaming.

Kanunay nga Gipangutana nga mga Pangutana (FAQ)

  1. Unsang mga operating system ang nahiuyon sa produkto?
    Ang produkto nahiuyon sa labing kasagarang gigamit nga mga operating system.
  2. Pila ka datos ang mahimo sa proseso sa produkto kung itandi sa tradisyonal nga mga pamaagi?
    Ang produkto makahimo sa pagproseso hangtod sa 10 ka beses nga mas daghang datos nga adunay hangtod sa 50% nga pagkunhod sa konsumo sa CPU kumpara sa tradisyonal nga mga pamaagi.
  3. Ang produkto ba naggamit sa GPU parallelization?
    Oo, ang produkto naggamit sa GPU (Graphic Processing Unit) alang sa taas nga parallelization, nga nagdugang sa pagproseso sa data rate ug paggamit sa GPU.

Usa ka Offline nga Optimization Approach alang sa Multi-Core ROS2 Applications: Ang Multi-Core Ring-Buffer ROS2 Executor

ROS Meetup Stuttgart 2023

Dr Pablo Ghiglino ( pablo.ghiglino@klepsydra.com )

Ang ROS2 Streaming Executor

KONTEKSTO: PARALLEL PROCESSING

  • Mga hagit sa on-board nga pagprosesoKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (1)
  • Modernong hardware ug daan nga software:
    • Ang mga kompyuter max out nga adunay ubos ngadto sa medium nga gidaghanon sa datos
    • Dili episyente nga paggamit sa mga kahinguhaan
    • Sobra nga gahum alang sa ubos nga pagproseso sa datos

Mga sangputanan alang sa mga aplikasyon sa Space

  • Nagbalikbalik nga mga kapakyasan sa misyon tungod sa software
  • Ang pag-access sa data sa sensor gikan sa Yuta nag-usik sa oras.
  • Ang mga satellite nanlimbasug aron matubag ang mga kinahanglanon sa kuryenteKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (2)

COMPARE UG SWAP

  • Ang Compare-and-swap (CAS) usa ka instruksyon nga gigamit sa multithreading aron makab-ot ang synchronization. Gikomparar niini ang mga sulod sa usa ka lokasyon sa memorya sa usa ka gihatag nga bili ug, kung parehas ra sila, giusab ang mga sulud sa lokasyon sa memorya sa usa ka bag-ong gihatag nga kantidad. Gihimo kini isip usa ka atomic nga operasyon.
  • Ang Compare-and-Swap nahimong importanteng bahin sa IBM 370 nga mga arkitektura sukad niadtong 1970.
  • Gipamatud-an ni Maurice Herlihy (1991) nga ang CAS maka-implementar ug mas daghan niini nga mga algorithm kaysa atomic read, write, ug fetch-and-add.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (3)

MGA KAAYO UG KASABUTAN SA LOCK-FREE PROGRAMMINGKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (4)

Mga pro

  • Gamay nga konsumo sa CPU ang gikinahanglan
  • Ubos nga latency ug mas taas nga data throughput
  • Dako nga pagtaas sa determinismo

Cons

  • Lisud kaayo nga teknik sa programming
  • Nagkinahanglan og processor nga adunay mga instruksyon sa CAS (90% sa merkado adunay niini, bisan pa)

Klepsydra Ring-buffer

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

ANG PRODUKTO
Ang gaan, modular ug nahiuyon sa kadaghanan nga gigamit nga mga operating system

  • SDK – Software Development Kit
    Pauswaga ang pagproseso sa datos sa ngilit alang sa mga kinatibuk-ang aplikasyon ug mga algorithm sa kusog sa processor
  • AI - Artipisyal nga Kaalam
    Ang high performance deep neural network (DNN) nga makina aron i-deploy ang bisan unsang AI o machine learning module sa ngilit
  • ROS2 Executor nga plugin
    Ang Executor alang sa ROS2 makahimo sa pagproseso hangtod sa 10 ka beses nga dugang nga datos nga adunay hangtod sa 50% nga pagkunhod sa konsumo sa CPU.
  • GPU (Graphic Processing Unit)
    Taas nga parallelisation sa GPU aron madugangan ang pagproseso sa data rate ug paggamit sa GPUKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (6)

Konteksto: ROS1 sa Space

  • Mga Benepisyo:
  • Makapahimo sa awtonomiya, panglantaw, ug pagkontrol sa kawananganKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (1)
  • Flexible, modular, ug gisuportahan sa usa ka dako nga komunidad.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (2)
  • Examples:
    • Robonaut sa NASA 2 (R2) – Nagtabang sa mga astronaut sa ISS
    • Astrobee sa NASA - Autonomous nga mga operasyon sa ISS
    • MGA SPHERES - Spherical satellites alang sa panukiduki sa ISS
    • Si Dextre - Robotic nga bukton alang sa pagmaniobra ug pag-ayo sa ISS
    • Google Lunar XPRIZE - Gigamit alang sa mga misyon sa lunar roverKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (3)

Konteksto: Space-ROS

  • ROS framework sa eksplorasyon sa kawanangan ug robotics
    Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (4)
  • Partially qualified alang sa paggamit sa Space
  •  Examples:
    Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (5)
    • Mga katabang sa robot alang sa mga astronaut
    • Ang eksplorasyon sa planeta nga adunay mga autonomous rovers
    • Mga operasyon ug pagkontrol sa satellite
      Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (6)
    • Autonomous nga spacecraft docking
    • On-orbit nga pag-alagad ug pag-ayo
      Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (7)
  • Mga Benepisyo:
    • Makapahimo sa awtonomiya, komunikasyon, ug panglantaw
    • Gipadali ang pagpalambo ug mga operasyon sa misyon sa kawanangan.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (8)

Gipasabot sa ROS2 Executor

Usa ka executor ang nag-coordinate ug nag-iskedyul sa aplikasyon sa ROS2 pinaagi sa pagdumala sa mga callback sa mga subskripsyon, mensahe, serbisyo, timer ug node. Sa ROS2, ang executor wala magtipig sa kaugalingon nga pila sa mga mensahe ug callback, apan gigamit ang mga mensahe gikan sa nagpahiping middleware DDS nga mga pila, ug dayon ipadala kini aron ipatuman sa usa sa mga hilo.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (9)

Labing-estado

Mga tigpatuman sa ROS2

  • Single threaded executor: Ang usa ka thread nagpangutana sa middleware ug nagpatuman sa mga callback nga sunodsunod. Gi-scan niini ang istruktura ug gi-update ang mga node, suskrisyon, serbisyo, ug uban pa.
  • Ang Static single threaded executor, diin ang scan ug definition sa structure kay gipatuman kausa lang, atol sa construction. Ang tanan nga mga node, callback nga mga grupo, timer, subskripsyon ug uban pa gihimo sa wala pa ang spin() gitawag.
  • Ang Multi-threaded executor nagmugna og ubay-ubay nga mga thread nga magpatuman sa mga callback nga managsama. Sama sa usa ka sinulid nga tigpatuman, kini matag karon ug unya mag-scan sa istruktura sa aplikasyon ug i-update ang paghulagway sa problema.

Ang streaming executor Overview

  • Ang Streaming Executor naggamit sa Klepsydra Event Loop sa paghatud sa mga mensahe sa mga subscriber sa tanang node, nga gikan sa middleware pinaagi sa rmw. Ang event loop nagdumala niini nga mga hilisgutan gamit ang publisher-subscriber nga mga pares.
  • Ang streaming executor naglihok parehas sa static single threaded executor sa daghang mga aspeto. Una, wala kini magtukod pag-usab sa executable nga listahan alang sa matag pag-uli. Ang tanan nga mga node, mga grupo sa callback, mga timer, mga suskrisyon ug uban pa gihimo sa oras sa pagtukod. Ikaduha, ang tanan nga mga suskrisyon sa sulod sa usa ka node gipatuman sa parehas nga hilo, bisan unsa pa ang gidaghanon sa mga core nga gigamit alang sa streaming setup.

Klepsydra Streaming Executor

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

Ang streaming executor

Giunsa kini pagtrabaho?

  • Usa ka pares nga tigmantala-subscriber gihimo alang sa matag hilisgutan nga gikinahanglan sa usa ka gihatag nga ROS2 node.
  • Sa sulod, ang matag publisher-subscriber nga pares giila sa duha ka parameter: ang node name ug ang topic name. Sa laing pagkasulti, duha ka lain-laing mga node nga nagpatik sa parehas nga hilisgutan ang madumala nga independente.
  • Ang tanan nga mga pares sa publisher-subscriber nga nalambigit sa mga hilisgutan nga nahisakop sa parehas nga node gidumala sa parehas nga loop sa panghitabo.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (10)

Ang streaming executor Single-core vs multi-coreKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (8)

  • Ang advantage sa streaming executor mao nga walay panginahanglan alang sa multithreading nga pagdumala sa mga subscribers tungod kay ang tanan kanila gidumala sa hilo sa mga kauban nga panghitabo loop, nga komon sa single-core ug multi-core.
  • Ang kanhi nagtrabaho sa parehas nga paagi sa static nga single-threaded executor, tungod kay ang tanan nga mga subscriber sa tanan nga mga node gihangyo sa parehas nga hilo

Performance Benchmark: Ang Ref-System

Benchmark sa Pagganap

  • Pag-setup sa Klepsydra Streaming Benchmarks:
    • Ang benchmark gibase sa Autoware reference system. Gisundog niini ang usa ka realistiko nga aplikasyon sa pagmaneho.
    • Ang tanan nga mga pagsukod gikuha gamit ang Raspberry Pi 4B nga adunay: ROS galactic, Ubuntu 20.04 ug 4 GB nga ram, kanunay nga frequency sa 1.50GHz
    • Nahiuyon nga setup sa reference system, ug walay CPU isolation
  • Gisulayan ang mga processor:
    • Raspberry PI 4 (reference processor alang sa RTWG)
    • Unibap's iX10 (NASA ug Blue Origin Testbed)
    • Teledyne e2v LS1046

Benchmark sa Pagganap

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)

  • Ang target alang sa genetic algorithm mao ang pagminus sa kasagaran nga latency sa kritikal nga agianan.
  • Kana mao, ang panahon nga gikinahanglan sukad sa pagmantala sa Lidar Data hangtud nga ang Object Collision Estimator makompleto ang trabaho niini.
  • Gipakita sa numero ang kritikal nga agianan nga gisulayan sa among panukiduki nga ma-optimize

Ang streaming executor
Klepsydra Streaming Distribution Optimizer (SDO)

  • Ang multi-core nga variation sa streaming executor labing maayo kung ang pag-apod-apod sa load sa mga node sa mga cores ma-optimize ug makahimo og dakong kalainan sa termino sa latency, power consumption ug data throughput.
  • Bisan pa, ang pagmapa sa mga cores dili hinungdanon ug nanginahanglan usa ka sistematikong pamaagi. Ang usa ka posible nga pamaagi mao ang pagtino sa usa ka target function nga nagsukod sa performance sa sistema base sa core configuration.
  • Mahimong gamiton ang usa ka genetic algorithm aron ma-optimize ang core configuration pinaagi sa iterative testing sa lain-laing mga configuration ug pagpili sa mga maayo nga performance sumala sa target function. Kini nga proseso magpadayon hangtod makit-an ang usa ka labing maayo nga pag-configure.
  • Kini nga pamaagi nagtugot alang sa usa ka mas episyente nga paggamit sa multi-core nga sistema ug nagsiguro nga ang load maapod-apod sa labing maayo nga paagi.

Summary sa Resulta

  • Alang sa gamay nga trabaho sa node, ang dugang nga pagkakomplikado wala maghubad sa labi ka maayo nga mga sangputanan. Ang static nga single nga sinulid, nga hilabihan ka yano, labaw sa uban nga mga tigpatuman.
  • Ang pagdugang sa workload, ang Streaming Executor mao ang pinakamaayo nga executor nga gisundan sa Static Single Threaded Executor.
  • Gilauman nga ang Streaming Executor naghimo kanunay nga mas maayo kaysa sa usa ka sinulid, tungod kay ang aplikasyon wala magbag-o sa topology niini samtang nagdagan. Gipakita nga ingon niini ang kahimtangKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (13)
  • Mga resulta alang sa Raspberry PI4
  • Susama nga pagtaas sa pasundayag nga nakuha alang sa Unibap's iX10 ug Teledyne's LS1046Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (14)

Mga konklusyon

Summary

  • Kini nga artikulo nagpresentar sa usa ka bag-ong pamaagi sa pag-optimize sa ROS2 execution model nga naghiusa sa usa ka lock-free ring-buffer based ROS2 executor nga pagpatuman, ug ang paggamit sa genetic algorithms aron ma-optimize ang pag-apod-apod sa robotic application load ngadto sa available nga mga core sa target nga computer.
  • Kini nga kombinasyon napamatud-an nga epektibo kaayo alang sa sistema nga adunay bug-at nga computational load, sama sa gipatin-aw sa ibabaw nga reference system. Usa ka mahinungdanong kaayohan sa gipresentar nga panukiduki mao ang pagpahaom niini sa lain-laing mga aplikasyon: lain-laing mga ROS2 node topologies mahimong mapadali gamit ang streaming executor ug genetic optimation, nga usa sa labing gihisgutan nga mga hagit sa ROS2.

Umaabot nga Trabaho

Summary

  • Sama sa alang sa umaabot nga trabaho sa kini nga panukiduki, adunay daghang mga bahin nga iapil sa streaming executor:
    • suporta sa pagpaubos ug pagligid,
    • open source release sa single-core streaming executor ug
    • ang paggamit sa sensor multiplexer ingon man ang loop sa panghitabo alang sa mga hilisgutan nga adunay daghang mga subscriber.
    • Pagsulay sa arkitektura sa RISC-V

Mga Dokumento / Mga Kapanguhaan

Klepsydra ROS2 Multi Core Ring Buffer Executor [pdf] Giya sa Gumagamit
ROS2 Multi Core Ring Buffer Executor, ROS2, Multi Core Ring Buffer Executor, Ring Buffer Executor, Buffer Executor, Executor

Mga pakisayran

Pagbilin ug komento

Ang imong email address dili mamantala. Ang gikinahanglan nga mga natad gimarkahan *