Klepsydra-ໂລໂກ້

Klepsydra ROS2 Multi Core Ring Buffer Executor

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

ຂໍ້ມູນຜະລິດຕະພັນ

ຂໍ້ມູນຈໍາເພາະ

  • ນ້ ຳ ໜັກ ເບົາ, ໂມດູນ, ແລະເຂົ້າກັນໄດ້ກັບລະບົບປະຕິບັດການທີ່ໃຊ້ຫຼາຍທີ່ສຸດ
  • ປັ໊ກອິນ ROS2 Executor ສາມາດປະມວນຜົນຂໍ້ມູນໄດ້ຫຼາຍເຖິງ 10 ເທົ່າ ດ້ວຍການຫຼຸດຜ່ອນການບໍລິໂພກ CPU ເຖິງ 50%.
  • GPU (ຫນ່ວຍປະມວນຜົນກາຟິກ) ສໍາລັບການຂະຫນານສູງແລະອັດຕາການປະມວນຜົນຂໍ້ມູນເພີ່ມຂຶ້ນແລະການນໍາໃຊ້ GPU
  • Klepsydra AI
  • Klepsydra SDK
  • Klepsydra GPU
  • ຄວາມສາມາດໃນການຖ່າຍທອດ
  • Klepsydra ROS2 executor plugin ຄໍາຮ້ອງສະຫມັກທົ່ວໂລກ

ຄໍາແນະນໍາການນໍາໃຊ້ຜະລິດຕະພັນ

  1. ເນື້ອໃນ: ການປະມວນຜົນຂະໜານ
    ຜະລິດຕະພັນດັ່ງກ່າວໄດ້ຖືກອອກແບບມາເພື່ອແກ້ໄຂສິ່ງທ້າທາຍທີ່ກ່ຽວຂ້ອງກັບການປະມວນຜົນເທິງເຄື່ອງໃນແອັບພລິເຄຊັນອາວະກາດ, ບ່ອນທີ່ການໃຊ້ CPU, ປະລິມານຂໍ້ມູນ ແລະຄວາມຕ້ອງການພະລັງງານມີຄວາມເປັນຫ່ວງ. ມັນສະຫນອງການແກ້ໄຂສໍາລັບຮາດແວທີ່ທັນສະໄຫມແລະຊອບແວເກົ່າໂດຍການຈັດການປະລິມານຂໍ້ມູນຂະຫນາດກາງຢ່າງມີປະສິດທິພາບ.
  2. ປຽບທຽບແລະແລກປ່ຽນ
    "ປຽບທຽບແລະສະຫຼັບ" ແມ່ນສູດການຄິດໄລ່ທີ່ໃຊ້ໃນ multithreading ເພື່ອບັນລຸການ synchronization. ມັນປຽບທຽບເນື້ອໃນຂອງສະຖານທີ່ຫນ່ວຍຄວາມຈໍາທີ່ມີຄ່າທີ່ໃຫ້ແລະ, ພຽງແຕ່ຖ້າພວກມັນຄືກັນ, ດັດແປງເນື້ອໃນຂອງສະຖານທີ່ຫນ່ວຍຄວາມຈໍານັ້ນໃຫ້ເປັນຄ່າໃຫມ່. ການປະຕິບັດງານນີ້ແມ່ນປະຕິບັດເປັນການດໍາເນີນງານປະລໍາມະນູດຽວ. ຜະລິດຕະພັນປະຕິບັດສູດການຄິດໄລ່ນີ້ເປັນສ່ວນຫນຶ່ງຂອງການເຮັດວຽກຂອງມັນ.

Pros ແລະ Cons ຂອງການຂຽນໂປລແກລມ Lock-Free
ຜະລິດຕະພັນດັ່ງກ່າວໄດ້ນໍາໃຊ້ເຕັກນິກການຂຽນໂປຼແກຼມທີ່ບໍ່ມີການລັອກ, ເຊິ່ງມີ advantages ແລະ disadvantages

  • ຂໍ້ດີ:
    • ຫຼຸດຜ່ອນການໃຊ້ CPU
    • ການຈັດການປະລິມານຂໍ້ມູນທີ່ມີປະສິດທິພາບ
  • ຂໍ້ເສຍ:
    • ຄວາມສັບສົນໃນການປະຕິບັດ
    • ຮຽກ​ຮ້ອງ​ໃຫ້​ມີ​ການ​ສະ​ຫນັບ​ສະ​ຫນູນ​ຈາກ​ຮາດ​ແວ​ພື້ນ​ຖານ (ຮາດ​ແວ​ທີ່​ທັນ​ສະ​ໄຫມ​ທີ່​ສຸດ​ສະ​ຫນັບ​ສະ​ຫນູນ​ໂຄງ​ການ​ທີ່​ບໍ່​ມີ​ການ​ລັອກ​)

ຜູ້ບໍລິຫານ ROS2
ຜະລິດຕະພັນປະກອບມີ ROS2 Executor ທີ່ກໍານົດເວລາຄໍາຮ້ອງສະຫມັກ ROS2 ໂດຍການຄຸ້ມຄອງການໂທກັບຄືນໄປບ່ອນຂອງການສະໝັກໃຊ້, ຂໍ້ຄວາມ, ການບໍລິການ, ໂມງຈັບເວລາ, ແລະ nodes. ມັນບໍລິໂພກຂໍ້ຄວາມຈາກແຖວ DDS ຂອງຕົວກາງທີ່ຕິດພັນ ແລະສົ່ງພວກມັນເພື່ອປະຕິບັດໄປຫາໜຶ່ງໃນກະທູ້. ໂຕປະຕິບັດການສາມາດຖືກຕັ້ງຄ່າເພື່ອປະຕິບັດການໂທກັບຄືນຕາມລໍາດັບຫຼືຂະຫນານ.

ຜູ້ບໍລິຫານ ROS2 ທີ່ທັນສະໄໝ
ຜະລິດຕະພັນປະກອບມີຜູ້ປະຕິບັດການ ROS2 ທີ່ທັນສະໄຫມທີ່ສະຫນອງກົນລະຍຸດການປະຕິບັດທີ່ແຕກຕ່າງກັນ.

  • ຜູ້ບໍລິຫານກະທູ້ດ່ຽວ: ດໍາເນີນການ callbacks ຕາມລໍາດັບແລະເປັນໄລຍະສະແກນໂຄງສ້າງຄໍາຮ້ອງສະຫມັກເພື່ອປັບປຸງ nodes, subscriptions, ບໍລິການ, ແລະອື່ນໆ.
  • ຜູ້ບໍລິຫານຫຼາຍກະທູ້: ດໍາເນີນການ callbacks ໃນຂະຫນານແລະແຕ່ລະໄລຍະສະແກນໂຄງສ້າງຄໍາຮ້ອງສະຫມັກເພື່ອປັບປຸງລາຍລະອຽດຂອງບັນຫາ.

Streaming Executor
ຜະລິດຕະພັນແນະນໍາ streaming executor ທີ່ແຕກຕ່າງຈາກ executor threaded ໃນຫຼາຍດ້ານ

  • ມັນບໍ່ໄດ້ສ້າງບັນຊີລາຍຊື່ທີ່ປະຕິບັດໄດ້ຄືນໃຫມ່ສໍາລັບການເຮັດຊ້ໍາອີກຄັ້ງ.
  • ທຸກ nodes, callback group, timers, subscriptions, etc. ແມ່ນຖືກສ້າງຂຶ້ນໃນເວລາກໍ່ສ້າງ.
  • ການສັ່ງຈອງທັງໝົດພາຍໃນ node ຈະຖືກປະຕິບັດຢູ່ໃນຫົວຂໍ້ດຽວກັນ, ໂດຍບໍ່ຄໍານຶງເຖິງຈໍານວນ cores ທີ່ໃຊ້ສໍາລັບການຕັ້ງຄ່າການຖ່າຍທອດ.
  1. Klepsydra Streaming Executor
    ຕົວປະຕິບັດການຖ່າຍທອດຂອງຜະລິດຕະພັນໄດ້ຖືກອອກແບບໂດຍສະເພາະເພື່ອຈັດການກັບຫົວຂໍ້ການຖ່າຍທອດໂດຍໃຊ້ຄູ່ຜູ້ເຜີຍແຜ່-ຜູ້ຕິດຕາມ. ມັນມີປະສິດທິພາບສົ່ງຂໍ້ຄວາມໃຫ້ກັບຜູ້ຈອງໃນທຸກ nodes, ໄດ້ຮັບຈາກ middleware ຜ່ານ rmw. ເຫດການ loop ຄຸ້ມຄອງຫົວຂໍ້ເຫຼົ່ານີ້, ຮັບປະກັນການໄຫຼຂອງຂໍ້ມູນກ້ຽງ.
  2. Klepsydra Realm
    Klepsydra Realm ແມ່ນອົງປະກອບຂອງຕົວປະຕິບັດການຖ່າຍທອດທີ່ເຮັດຫນ້າທີ່ເປັນຕົວກໍານົດເວລາ. ມັນປະສານງານການປະຕິບັດຂອງຜູ້ຜະລິດແລະຜູ້ບໍລິໂພກພາຍໃນການຕັ້ງຄ່າການຖ່າຍທອດ.
  3. ຜູ້ຜະລິດ
    ຜູ້ຜະລິດມີຄວາມຮັບຜິດຊອບໃນການສ້າງຂໍ້ມູນທີ່ຈະໄດ້ຮັບການບໍລິໂພກໂດຍຜູ້ຈອງ. ຜະລິດຕະພັນສະຫນັບສະຫນູນຜູ້ຜະລິດຫຼາຍໆຄົນໃນການຕັ້ງຄ່າການຖ່າຍທອດ.
  4. ຜູ້ບໍລິໂພກ
    ຜູ້ບໍລິໂພກຮັບຜິດຊອບສໍາລັບການປຸງແຕ່ງແລະນໍາໃຊ້ຂໍ້ມູນທີ່ຜະລິດໂດຍຜູ້ຜະລິດ. ຜະລິດຕະພັນສະຫນັບສະຫນູນຜູ້ບໍລິໂພກຫຼາຍຄົນໃນການຕັ້ງຄ່າການຖ່າຍທອດ.

ຄຳຖາມທີ່ຖາມເລື້ອຍໆ (FAQ)

  1. ລະບົບປະຕິບັດການໃດທີ່ເຫມາະສົມກັບຜະລິດຕະພັນ?
    ຜະລິດຕະພັນແມ່ນເຂົ້າກັນໄດ້ກັບລະບົບປະຕິບັດການທີ່ໃຊ້ທົ່ວໄປທີ່ສຸດ.
  2. ມີຂໍ້ມູນຫຼາຍປານໃດທີ່ສາມາດຂະບວນການຜະລິດຕະພັນທຽບກັບວິທີການແບບດັ້ງເດີມ?
    ຜະລິດຕະພັນສາມາດປະມວນຜົນຂໍ້ມູນໄດ້ເຖິງ 10 ເທົ່າດ້ວຍການຫຼຸດຜ່ອນການບໍລິໂພກ CPU ເຖິງ 50% ເມື່ອທຽບກັບວິທີການແບບດັ້ງເດີມ.
  3. ຜະລິດຕະພັນໃຊ້ GPU ຂະຫນານບໍ?
    ແມ່ນແລ້ວ, ຜະລິດຕະພັນໄດ້ນໍາໃຊ້ GPU (ຫນ່ວຍປະມວນຜົນກາຟິກ) ສໍາລັບການຂະຫນານສູງ, ເຊິ່ງເພີ່ມອັດຕາການປະມວນຜົນຂໍ້ມູນແລະການນໍາໃຊ້ GPU.

ແນວທາງການເພີ່ມປະສິດທິພາບອອບໄລນ໌ສຳລັບແອັບພລິເຄຊັນຫຼາຍແກນ ROS2: ໂຕປະຕິບັດການ ROS2 ຫຼາຍຫຼັກ

ROS Meetup Stuttgart 2023

ທ່ານດຣ Pablo Ghiglino ( pablo.ghiglino@klepsydra.com )

ຜູ້ປະຕິບັດການຖ່າຍທອດ ROS2

ເນື້ອໃນ: ການປະມວນຜົນແບບຂະໜານ

  • ສິ່ງທ້າທາຍໃນການປະມວນຜົນເທິງເຮືອKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (1)
  • ຮາດແວທີ່ທັນສະໄຫມ ແລະຊອບແວເກົ່າ:
    • ຄອມພິວເຕີສູງສຸດທີ່ມີປະລິມານຂໍ້ມູນຕໍ່າຫາປານກາງ
    • ການນໍາໃຊ້ຊັບພະຍາກອນທີ່ບໍ່ມີປະສິດທິພາບ
    • ພະລັງງານຫຼາຍເກີນໄປສໍາລັບການປະມວນຜົນຂໍ້ມູນຕ່ໍາ

ຜົນສະທ້ອນສໍາລັບຄໍາຮ້ອງສະຫມັກ Space

  • ພາລະກິດທີ່ເກີດຂຶ້ນຊ້ຳບໍ່ສຳເລັດເນື່ອງຈາກຊອບແວ
  • ການເຂົ້າເຖິງຂໍ້ມູນເຊັນເຊີຈາກໂລກແມ່ນໃຊ້ເວລາຫຼາຍ.
  • ດາວທຽມຕໍ່ສູ້ເພື່ອຕອບສະຫນອງຄວາມຕ້ອງການພະລັງງານKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (2)

ປຽບທຽບແລະສະຫຼັບ

  • Compare-and-swap (CAS) ແມ່ນຄໍາແນະນໍາທີ່ໃຊ້ໃນ multithreading ເພື່ອບັນລຸ synchronisation. ມັນປຽບທຽບເນື້ອໃນຂອງສະຖານທີ່ຫນ່ວຍຄວາມຈໍາທີ່ມີຄ່າທີ່ໃຫ້ແລະ, ພຽງແຕ່ຖ້າພວກມັນຄືກັນ, ດັດແກ້ເນື້ອຫາຂອງສະຖານທີ່ຫນ່ວຍຄວາມຈໍານັ້ນໃຫ້ເປັນຄ່າໃຫມ່. ນີ້ແມ່ນເຮັດເປັນການດໍາເນີນງານປະລໍາມະນູດຽວ.
  • Compare-and-Swap ເປັນສ່ວນໜຶ່ງທີ່ສຳຄັນຂອງສະຖາປັດຕະຍະກຳ IBM 370 ຕັ້ງແຕ່ປີ 1970.
  • Maurice Herlihy (1991) ໄດ້ພິສູດວ່າ CAS ສາມາດປະຕິບັດວິທີການເຫຼົ່ານີ້ຫຼາຍກ່ວາປະລໍາມະນູອ່ານ, ຂຽນ, ແລະເອົາແລະເພີ່ມ.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (3)

ຂໍ້ດີ ແລະ ຂໍ້ເສຍຂອງໂປຣແກມແບບບໍ່ມີລັອກKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (4)

Pros

  • ຕ້ອງການການໃຊ້ CPU ໜ້ອຍລົງ
  • ເວລາ latency ຕ່ຳລົງ ແລະ ການຖ່າຍທອດຂໍ້ມູນສູງຂຶ້ນ
  • ການ​ເພີ່ມ​ຂຶ້ນ​ຢ່າງ​ຫຼວງ​ຫຼາຍ​ໃນ​ການ​ກໍາ​ນົດ​

ຂໍ້ເສຍ

  • ເຕັກນິກການຂຽນໂປລແກລມທີ່ຍາກທີ່ສຸດ
  • ຕ້ອງການໂປເຊດເຊີທີ່ມີຄໍາແນະນໍາ CAS (90% ຂອງຕະຫຼາດມີພວກມັນ, ເຖິງແມ່ນວ່າ)

Klepsydra Ring-buffer

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

ຜະລິດຕະພັນ
ນ້ໍາຫນັກເບົາ, modular ແລະເຂົ້າກັນໄດ້ກັບລະບົບປະຕິບັດການທີ່ໃຊ້ຫຼາຍທີ່ສຸດ

  • SDK – ຊຸດພັດທະນາຊອບແວ
    ຊຸກຍູ້ການປະມວນຜົນຂໍ້ມູນຢູ່ໃນຂອບສໍາລັບຄໍາຮ້ອງສະຫມັກທົ່ວໄປແລະສູດການຄິດໄລ່ທີ່ເຂັ້ມຂຸ້ນຂອງໂປເຊດເຊີ
  • AI - ປັນຍາປະດິດ
    ປະສິດທິພາບສູງເຄື່ອງຈັກໃນເຄືອຂ່າຍ neural ເລິກ (DNN) ທີ່ຈະນໍາໃຊ້ AI ຫຼືໂມດູນການຮຽນຮູ້ເຄື່ອງຈັກຢູ່ໃນຂອບ
  • ປລັກອິນຜູ້ບໍລິຫານ ROS2
    Executor ສໍາລັບ ROS2 ສາມາດປະມວນຜົນຂໍ້ມູນໄດ້ຫຼາຍເຖິງ 10 ເທົ່າ ດ້ວຍການຫຼຸດຜ່ອນການບໍລິໂພກ CPU ເຖິງ 50%.
  • GPU (ຫນ່ວຍປະມວນຜົນກາຟິກ)
    ການຂະໜານກັນສູງຂອງ GPU ເພື່ອເພີ່ມອັດຕາການປະມວນຜົນຂໍ້ມູນ ແລະການນຳໃຊ້ GPUKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (6)

ສະພາບການ: ROS1 ໃນອາວະກາດ

  • ຜົນປະໂຫຍດ:
  • ເປີດໃຊ້ເອກະລາດ, ການຮັບຮູ້, ແລະການຄວບຄຸມໃນອາວະກາດKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (1)
  • ມີຄວາມຍືດຫຍຸ່ນ, modular, ແລະສະຫນັບສະຫນູນໂດຍຊຸມຊົນຂະຫນາດໃຫຍ່.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (2)
  • Examples:
    • ນັກ​ບິນ​ຂອງ​ອົງການ NASA 2 (R2) – ນັກບິນອະວະກາດຊ່ວຍເຫຼືອຢູ່ ISS
    • Astrobee ຂອງ NASA - ການ​ດໍາ​ເນີນ​ງານ​ຂອງ​ຕົນ​ເອງ​ກ່ຽວ​ກັບ ISS ໄດ້​
    • Spheres - ດາວ​ທຽມ Spherical ສໍາ​ລັບ​ການ​ຄົ້ນ​ຄວ້າ​ກ່ຽວ​ກັບ ISS​
    • Dextre - ແຂນຫຸ່ນຍົນສໍາລັບການຫມູນໃຊ້ແລະການສ້ອມແປງຢູ່ໃນ ISS
    • Google Lunar XPRIZE - ໃຊ້​ສໍາ​ລັບ​ການ​ພາ​ລະ​ກິດ​ຍານ​ສໍາ​ລັບ​ຍານ​ບໍ​ລິ​ສັດ​Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (3)

ບໍລິບົດ: Space-ROS

  • ໂຄງຮ່າງ ROS ໃນການສຳຫຼວດອາວະກາດ ແລະຫຸ່ນຍົນ
    Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (4)
  • ມີຄຸນສົມບັດບາງສ່ວນສຳລັບການໃຊ້ພື້ນທີ່
  •  Examples:
    Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (5)
    • ຜູ້ຊ່ວຍຫຸ່ນຍົນສໍາລັບນັກອາວະກາດ
    • ການສຳຫຼວດດາວເຄາະດ້ວຍຍານສຳຫຼວດອັດຕະໂນມັດ
    • ປະຕິບັດການດາວທຽມແລະການຄວບຄຸມ
      Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (6)
    • ການຈອດຍານອະວະກາດແບບປົກຄອງຕົນເອງ
    • ການບໍລິການ ແລະສ້ອມແປງໃນວົງໂຄຈອນ
      Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (7)
  • ຜົນປະໂຫຍດ:
    • ເປີດໃຊ້ເອກະລາດ, ການສື່ສານ, ແລະການຮັບຮູ້
    • ເລັ່ງການພັດທະນາພາລະກິດອາວະກາດ ແລະການປະຕິບັດງານ.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (8)

ROS2 Executor ອະທິບາຍ

ຜູ້ປະຕິບັດການປະສານງານແລະກໍານົດເວລາຂອງແອັບພລິເຄຊັນ ROS2 ໂດຍການຄຸ້ມຄອງການເອີ້ນຄືນຂອງການສະໝັກໃຊ້, ຂໍ້ຄວາມ, ການບໍລິການ, ໂມງຈັບເວລາ ແລະ nodes. ໃນ ROS2, executor ບໍ່ໄດ້ຮັກສາຄິວຂໍ້ຄວາມ ແລະ callbacks ຂອງຕົນເອງ, ແຕ່ແທນທີ່ຈະບໍລິໂພກຂໍ້ຄວາມຈາກແຖວ DDS middleware, ແລະຫຼັງຈາກນັ້ນສົ່ງມັນເພື່ອປະຕິບັດກັບຫນຶ່ງໃນກະທູ້.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (9)

ລັດຂອງສິນລະປະ

ຜູ້ບໍລິຫານ ROS2

  • Single threaded executor: ກະທູ້ດຽວສອບຖາມຕົວກາງແລະດໍາເນີນການ callbacks ຕາມລໍາດັບ. ຫຼັງຈາກນັ້ນ, ມັນສະແກນໂຄງສ້າງແລະປັບປຸງ nodes, ຈອງ, ບໍລິການ, ແລະອື່ນໆ.
  • The Static single threaded executor, ບ່ອນທີ່ scan ແລະກໍານົດໂຄງສ້າງໄດ້ຖືກປະຕິບັດພຽງແຕ່ຫນຶ່ງຄັ້ງ, ໃນລະຫວ່າງການກໍ່ສ້າງ. ທັງໝົດ nodes, callback group, timers, subscriptions etc. ຖືກສ້າງຂຶ້ນກ່ອນ spin() ເອີ້ນວ່າ.
  • Multi-threaded executor ສ້າງຈໍານວນຂອງ threads ທີ່ຈະປະຕິບັດ callbacks ໃນຂະຫນານ. ຄ້າຍຄືກັນກັບຜູ້ປະຕິບັດການກະທູ້ດຽວ, ມັນຈະເປັນໄລຍະສະແກນໂຄງສ້າງຂອງຄໍາຮ້ອງສະຫມັກແລະປັບປຸງລາຍລະອຽດຂອງບັນຫາ.

ຜູ້ປະຕິບັດການຖ່າຍທອດ Overview

  • streaming Executor ໃຊ້ Klepsydra Event Loop ເພື່ອສົ່ງຂໍ້ຄວາມໄປຫາຜູ້ຈອງໃນທຸກ nodes, ທີ່ມາຈາກ middleware ຜ່ານ rmw. ຮອບເຫດການຈະຈັດການຫົວຂໍ້ເຫຼົ່ານີ້ໂດຍໃຊ້ຄູ່ຜູ້ເຜີຍແຜ່-ຜູ້ສະໝັກໃຊ້.
  • ຕົວປະຕິບັດການສະຕຣີມມີພຶດຕິກຳຄ້າຍຄືກັນກັບຕົວປະຕິບັດການກະທູ້ດ່ຽວແບບຄົງທີ່ໃນຫຼາຍດ້ານ. ກ່ອນອື່ນ ໝົດ, ມັນບໍ່ໄດ້ສ້າງບັນຊີລາຍຊື່ທີ່ປະຕິບັດໄດ້ ສຳ ລັບທຸກໆການ iteration. ທັງໝົດ nodes, callback group, timers, subscriptions etc. ແມ່ນຖືກສ້າງຂຶ້ນໃນເວລາກໍ່ສ້າງ. ອັນທີສອງ, ການສັ່ງຈອງທັງຫມົດພາຍໃນ node ຈະຖືກປະຕິບັດຢູ່ໃນຫົວຂໍ້ດຽວກັນ, ໂດຍບໍ່ຄໍານຶງເຖິງຈໍານວນຂອງ cores ທີ່ໃຊ້ສໍາລັບການຕັ້ງຄ່າການຖ່າຍທອດ.

Klepsydra Streaming Executor

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

ຜູ້ປະຕິບັດການຖ່າຍທອດ

ມັນເຮັດວຽກແນວໃດ?

  • ຄູ່ຜູ້ເຜີຍແຜ່-ຜູ້ສະໝັກໃຊ້ແມ່ນຖືກສ້າງຂຶ້ນສໍາລັບແຕ່ລະຫົວຂໍ້ທີ່ຕ້ອງການໂດຍ node ROS2 ທີ່ໃຫ້.
  • ພາຍໃນ, ແຕ່ລະຄູ່ຜູ້ເຜີຍແຜ່ - ຈອງແມ່ນຖືກກໍານົດໂດຍສອງຕົວກໍານົດການ: ຊື່ node ແລະຊື່ຫົວຂໍ້. ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ສອງໂຫນດທີ່ແຕກຕ່າງກັນທີ່ເຜີຍແຜ່ໃນຫົວຂໍ້ດຽວກັນຈະຖືກຈັດການເປັນເອກະລາດ.
  • ຄູ່ຂອງຜູ້ເຜີຍແຜ່-ຜູ້ສະໝັກໃຊ້ທັງໝົດທີ່ກ່ຽວຂ້ອງກັບຫົວຂໍ້ທີ່ເປັນຂອງ node ດຽວກັນແມ່ນຈັດການໂດຍ loop ເຫດການດຽວກັນ.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (10)

ຕົວປະຕິບັດການຖ່າຍທອດແບບ Single-core vs multi-coreKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (8)

  • ແອັດວັນtage ຂອງ streaming executor ແມ່ນວ່າບໍ່ຈໍາເປັນຕ້ອງມີການຈັດການ multithreading ຂອງຜູ້ຈອງເນື່ອງຈາກພວກເຂົາທັງຫມົດໄດ້ຖືກຄຸ້ມຄອງໂດຍ thread ຂອງ loop ເຫດການທີ່ກ່ຽວຂ້ອງ, ເຊິ່ງແມ່ນທົ່ວໄປກັບທັງ single-core ແລະ multi-core.
  • ອະດີດເຮັດວຽກໃນລັກສະນະທີ່ຄ້າຍຄືກັນກັບ executor single-threaded static, ເນື່ອງຈາກວ່າ subscribers ທັງຫມົດໃນ nodes ແມ່ນ invoked ໂດຍ thread ດຽວກັນ.

ມາດຕະຖານການປະຕິບັດ: ລະບົບການອ້າງອີງ

  • ພາລະກິດຂອງກຸ່ມເຮັດວຽກໃນເວລາຈິງແມ່ນເພື່ອສົ່ງເສີມແລະເຮັດວຽກກ່ຽວກັບການຄຸ້ມຄອງຄວາມຊົງຈໍາ, pub/sub ໃນເວລາຈິງ, DDS ໃນເວລາຈິງ, ແລະເຄື່ອງມືທີ່ອະນຸຍາດໃຫ້ຕິດຕາມ, profilling ແລະ optimizing ( https://github.com/ros-realtime )
  • ຊຸດລະບົບ reference_system ໄດ້ຖືກພັດທະນາຂື້ນເພື່ອສະຫນອງພື້ນຖານການກໍ່ສ້າງພື້ນຖານເພື່ອສ້າງລະບົບທີ່ສັບສົນເຊິ່ງຫຼັງຈາກນັ້ນສາມາດຖືກນໍາໃຊ້ເພື່ອປະເມີນລັກສະນະຫຼືການປະຕິບັດໃນແບບມາດຕະຖານແລະຊ້ໍາກັນ. ( https://github.com/ros-realtime/reference-system )
  • ໂຄງ​ການ​ທໍາ​ອິດ​ທີ່​ຈະ​ນໍາ​ໃຊ້ Reference_system ນີ້​ແມ່ນ autoware_reference_system ( https://github.com/ros-realtime/referencesystem/blob/main/autoware_reference_system/README.md )Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (11)

ມາດຕະຖານການປະຕິບັດ

  • ການ​ຕັ້ງ​ຄ່າ Klepsydra Streaming Benchmarks​:
    • ດັດຊະນີແມ່ນອີງໃສ່ລະບົບການອ້າງອິງ Autoware. ມັນເຮັດຕາມຄໍາຮ້ອງສະຫມັກຂັບລົດຈິງ.
    • ການວັດແທກທັງໝົດໄດ້ຖືກປະຕິບັດໂດຍໃຊ້ Raspberry Pi 4B ດ້ວຍ: ROS galactic, Ubuntu 20.04 ແລະ RAM 4 GB, ຄວາມຖີ່ຄົງທີ່ຂອງ 1.50GHz
    • ການຕັ້ງຄ່າທີ່ເຂົ້າກັນໄດ້ຂອງລະບົບອ້າງອີງ, ແລະບໍ່ມີການແຍກ CPU
  • ໂຮງງານຜະລິດທົດສອບ:
    • Raspberry PI 4 (ໂຮງງານຜະລິດອ້າງອີງສໍາລັບ RTWG)
    • iX10 ຂອງ Unibap (ການ​ທົດ​ສອບ​ຕົ້ນ​ກໍາ​ເນີດ​ຂອງ NASA ແລະ​ສີ​ຟ້າ​)
    • Teledyne e2v LS1046

ມາດຕະຖານການປະຕິບັດ

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)

  • ເປົ້າຫມາຍສໍາລັບສູດການຄິດໄລ່ທາງພັນທຸກໍາແມ່ນເພື່ອຫຼຸດຜ່ອນຄວາມລ່າຊ້າສະເລ່ຍຂອງເສັ້ນທາງທີ່ສໍາຄັນ.
  • ນັ້ນແມ່ນ, ເວລາທີ່ມັນໃຊ້ເວລານັບຕັ້ງແຕ່ການພິມເຜີຍແຜ່ຂໍ້ມູນ Lidar ຈົນກ່ວາ Object Collision Estimator ສໍາເລັດການເຮັດວຽກຂອງມັນ.
  • ຮູບພາບສະແດງໃຫ້ເຫັນເສັ້ນທາງທີ່ສໍາຄັນທີ່ການຄົ້ນຄວ້າຂອງພວກເຮົາພະຍາຍາມເພີ່ມປະສິດທິພາບ

ຜູ້ປະຕິບັດການຖ່າຍທອດ
Klepsydra stream Distribution Optimer (SDO)

  • ການປ່ຽນແປງຫຼາຍແກນຂອງ streaming executor ເຮັດວຽກທີ່ດີທີ່ສຸດໃນເວລາທີ່ການແຜ່ກະຈາຍການໂຫຼດຂອງ nodes ໃນບັນດາ cores ໄດ້ຖືກປັບປຸງໃຫ້ດີທີ່ສຸດແລະສາມາດເຮັດໃຫ້ມີຄວາມແຕກຕ່າງຢ່າງຫຼວງຫຼາຍໃນແງ່ຂອງ latency, ການໃຊ້ພະລັງງານແລະການຖ່າຍທອດຂໍ້ມູນ.
  • ຢ່າງໃດກໍ່ຕາມ, ການສ້າງແຜນທີ່ຂອງແກນບໍ່ແມ່ນເລື່ອງເລັກໆນ້ອຍໆແລະຕ້ອງການວິທີການທີ່ເປັນລະບົບ. ວິທີການທີ່ເປັນໄປໄດ້ແມ່ນການກໍານົດຫນ້າທີ່ເປົ້າຫມາຍທີ່ວັດແທກການປະຕິບັດຂອງລະບົບໂດຍອີງໃສ່ການຕັ້ງຄ່າຫຼັກ.
  • ຫຼັງຈາກນັ້ນ, ສູດການຄິດໄລ່ທາງພັນທຸກໍາສາມາດຖືກນໍາໃຊ້ເພື່ອເພີ່ມປະສິດທິພາບການກໍາຫນົດຄ່າຫຼັກໂດຍການທົດສອບການກໍາຫນົດຄ່າທີ່ແຕກຕ່າງກັນແລະເລືອກເອົາສິ່ງທີ່ປະຕິບັດໄດ້ດີຕາມຫນ້າທີ່ເປົ້າຫມາຍ. ຂະບວນການນີ້ສືບຕໍ່ໄປຈົນກວ່າຈະພົບເຫັນການຕັ້ງຄ່າທີ່ດີທີ່ສຸດ.
  • ວິທີການນີ້ຊ່ວຍໃຫ້ມີການນໍາໃຊ້ລະບົບຫຼາຍແກນຢ່າງມີປະສິດທິພາບຫຼາຍຂຶ້ນແລະຮັບປະກັນວ່າການໂຫຼດໄດ້ຖືກແຈກຢາຍໃນທາງທີ່ດີທີ່ສຸດ.

ສະຫຼຸບຜົນໄດ້ຮັບ

  • ສໍາລັບການເຮັດວຽກຂອງ node ຂະຫນາດນ້ອຍ, ຄວາມສັບສົນທີ່ເພີ່ມບໍ່ໄດ້ແປວ່າຜົນໄດ້ຮັບທີ່ດີກວ່າ. ກະທູ້ດ່ຽວແບບຄົງທີ່, ງ່າຍດາຍທີ່ສຸດ, ປະຕິບັດໄດ້ດີກວ່າຜູ້ປະຕິບັດສ່ວນທີ່ເຫຼືອ.
  • ການເພີ່ມປະລິມານການເຮັດວຽກ, Streaming Executor ແມ່ນຜູ້ປະຕິບັດທີ່ດີທີ່ສຸດປະຕິບັດຕາມໂດຍ Static Single Threaded Executor.
  • ຄາດວ່າຕົວປະຕິບັດການສະຕຣີມມີຜົນດີກ່ວາກະທູ້ດຽວ, ເນື່ອງຈາກແອັບພລິເຄຊັນບໍ່ໄດ້ດັດແປງ topology ຂອງມັນໃນຂະນະທີ່ແລ່ນ. ມັນສະແດງໃຫ້ເຫັນວ່ານີ້ແມ່ນແນ່ນອນKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (13)
  • ຜົນການຄົ້ນຫາສໍາລັບ Raspberry PI4
  • ການເພີ່ມຂຶ້ນຂອງການປະຕິບັດທີ່ຄ້າຍຄືກັນທີ່ໄດ້ຮັບສໍາລັບ iX10 ຂອງ Unibap ແລະ LS1046 ຂອງ TeledyneKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (14)

ບົດສະຫຼຸບ

ສະຫຼຸບ

  • ບົດຄວາມນີ້ສະເຫນີວິທີການໃຫມ່ເພື່ອເພີ່ມປະສິດທິພາບຮູບແບບການປະຕິບັດ ROS2 ທີ່ປະສົມປະສານທັງສອງການປະຕິບັດຕົວປະຕິບັດການ lock-free ring-buffer ROS2, ແລະການນໍາໃຊ້ສູດການຄິດໄລ່ທາງພັນທຸກໍາເພື່ອເພີ່ມປະສິດທິພາບການແຈກຢາຍຂອງຄໍາຮ້ອງສະຫມັກຫຸ່ນຍົນເຂົ້າໄປໃນແກນທີ່ມີຢູ່ໃນຄອມພິວເຕີເປົ້າຫມາຍ.
  • ການປະສົມປະສານນີ້ໄດ້ຖືກພິສູດວ່າເຮັດວຽກໄດ້ມີປະສິດທິພາບຫຼາຍສໍາລັບລະບົບທີ່ມີການໂຫຼດຄອມພິວເຕີ້ຢ່າງຫນັກ, ຄືກັບລະບົບອ້າງອີງທີ່ອະທິບາຍຂ້າງເທິງ. ຜົນປະໂຫຍດທີ່ສໍາຄັນຂອງການຄົ້ນຄວ້າທີ່ນໍາສະເຫນີແມ່ນການປັບຕົວຂອງມັນກັບຄໍາຮ້ອງສະຫມັກທີ່ແຕກຕ່າງກັນ: ROS2 node topologies ທີ່ແຕກຕ່າງກັນສາມາດເລັ່ງໄດ້ໂດຍໃຊ້ streaming executor ບວກກັບການປັບປຸງພັນທຸກໍາ, ເຊິ່ງເປັນຫນຶ່ງໃນສິ່ງທ້າທາຍທີ່ສົນທະນາຫຼາຍທີ່ສຸດໃນ ROS2.

ວຽກງານໃນອະນາຄົດ

ສະຫຼຸບ

  • ສໍາລັບການເຮັດວຽກໃນອະນາຄົດຂອງການຄົ້ນຄວ້ານີ້, ມີຫຼາຍລັກສະນະທີ່ຈະລວມຢູ່ໃນ streaming executor:
    • ສະຫນັບສະຫນູນການຖ່ອມຕົນແລະມ້ວນ,
    • ການປ່ອຍແຫຼ່ງທີ່ມາຂອງ single-core streaming executor ແລະ
    • ການ​ນໍາ​ໃຊ້​ຂອງ sensor multiplexer ເຊັ່ນ​ດຽວ​ກັນ​ກັບ​ການ loop ເຫດ​ການ​ສໍາ​ລັບ​ຫົວ​ຂໍ້​ທີ່​ມີ​ຈໍາ​ນວນ​ຫນຶ່ງ​.
    • ການທົດສອບສະຖາປັດຕະຍະກໍາ RISC-V

ເອກະສານ / ຊັບພະຍາກອນ

Klepsydra ROS2 Multi Core Ring Buffer Executor [pdf] ຄູ່ມືຜູ້ໃຊ້
ROS2 Multi Core Ring Buffer Executor, ROS2, Multi Core Ring Buffer Executor, Ring Buffer Executor, Buffer Executor, Executor

ເອກະສານອ້າງອີງ

ອອກຄໍາເຫັນ

ທີ່ຢູ່ອີເມວຂອງເຈົ້າຈະບໍ່ຖືກເຜີຍແຜ່. ຊ່ອງຂໍ້ມູນທີ່ຕ້ອງການຖືກໝາຍໄວ້ *