Klepsydra ROS2 Multi Core Ring Buffer Executor
ຂໍ້ມູນຜະລິດຕະພັນ
ຂໍ້ມູນຈໍາເພາະ
- ນ້ ຳ ໜັກ ເບົາ, ໂມດູນ, ແລະເຂົ້າກັນໄດ້ກັບລະບົບປະຕິບັດການທີ່ໃຊ້ຫຼາຍທີ່ສຸດ
- ປັ໊ກອິນ ROS2 Executor ສາມາດປະມວນຜົນຂໍ້ມູນໄດ້ຫຼາຍເຖິງ 10 ເທົ່າ ດ້ວຍການຫຼຸດຜ່ອນການບໍລິໂພກ CPU ເຖິງ 50%.
- GPU (ຫນ່ວຍປະມວນຜົນກາຟິກ) ສໍາລັບການຂະຫນານສູງແລະອັດຕາການປະມວນຜົນຂໍ້ມູນເພີ່ມຂຶ້ນແລະການນໍາໃຊ້ GPU
- Klepsydra AI
- Klepsydra SDK
- Klepsydra GPU
- ຄວາມສາມາດໃນການຖ່າຍທອດ
- Klepsydra ROS2 executor plugin ຄໍາຮ້ອງສະຫມັກທົ່ວໂລກ
ຄໍາແນະນໍາການນໍາໃຊ້ຜະລິດຕະພັນ
- ເນື້ອໃນ: ການປະມວນຜົນຂະໜານ
ຜະລິດຕະພັນດັ່ງກ່າວໄດ້ຖືກອອກແບບມາເພື່ອແກ້ໄຂສິ່ງທ້າທາຍທີ່ກ່ຽວຂ້ອງກັບການປະມວນຜົນເທິງເຄື່ອງໃນແອັບພລິເຄຊັນອາວະກາດ, ບ່ອນທີ່ການໃຊ້ CPU, ປະລິມານຂໍ້ມູນ ແລະຄວາມຕ້ອງການພະລັງງານມີຄວາມເປັນຫ່ວງ. ມັນສະຫນອງການແກ້ໄຂສໍາລັບຮາດແວທີ່ທັນສະໄຫມແລະຊອບແວເກົ່າໂດຍການຈັດການປະລິມານຂໍ້ມູນຂະຫນາດກາງຢ່າງມີປະສິດທິພາບ. - ປຽບທຽບແລະແລກປ່ຽນ
"ປຽບທຽບແລະສະຫຼັບ" ແມ່ນສູດການຄິດໄລ່ທີ່ໃຊ້ໃນ 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 ທີ່ໃຊ້ສໍາລັບການຕັ້ງຄ່າການຖ່າຍທອດ.
- Klepsydra Streaming Executor
ຕົວປະຕິບັດການຖ່າຍທອດຂອງຜະລິດຕະພັນໄດ້ຖືກອອກແບບໂດຍສະເພາະເພື່ອຈັດການກັບຫົວຂໍ້ການຖ່າຍທອດໂດຍໃຊ້ຄູ່ຜູ້ເຜີຍແຜ່-ຜູ້ຕິດຕາມ. ມັນມີປະສິດທິພາບສົ່ງຂໍ້ຄວາມໃຫ້ກັບຜູ້ຈອງໃນທຸກ nodes, ໄດ້ຮັບຈາກ middleware ຜ່ານ rmw. ເຫດການ loop ຄຸ້ມຄອງຫົວຂໍ້ເຫຼົ່ານີ້, ຮັບປະກັນການໄຫຼຂອງຂໍ້ມູນກ້ຽງ. - Klepsydra Realm
Klepsydra Realm ແມ່ນອົງປະກອບຂອງຕົວປະຕິບັດການຖ່າຍທອດທີ່ເຮັດຫນ້າທີ່ເປັນຕົວກໍານົດເວລາ. ມັນປະສານງານການປະຕິບັດຂອງຜູ້ຜະລິດແລະຜູ້ບໍລິໂພກພາຍໃນການຕັ້ງຄ່າການຖ່າຍທອດ. - ຜູ້ຜະລິດ
ຜູ້ຜະລິດມີຄວາມຮັບຜິດຊອບໃນການສ້າງຂໍ້ມູນທີ່ຈະໄດ້ຮັບການບໍລິໂພກໂດຍຜູ້ຈອງ. ຜະລິດຕະພັນສະຫນັບສະຫນູນຜູ້ຜະລິດຫຼາຍໆຄົນໃນການຕັ້ງຄ່າການຖ່າຍທອດ. - ຜູ້ບໍລິໂພກ
ຜູ້ບໍລິໂພກຮັບຜິດຊອບສໍາລັບການປຸງແຕ່ງແລະນໍາໃຊ້ຂໍ້ມູນທີ່ຜະລິດໂດຍຜູ້ຜະລິດ. ຜະລິດຕະພັນສະຫນັບສະຫນູນຜູ້ບໍລິໂພກຫຼາຍຄົນໃນການຕັ້ງຄ່າການຖ່າຍທອດ.
ຄຳຖາມທີ່ຖາມເລື້ອຍໆ (FAQ)
- ລະບົບປະຕິບັດການໃດທີ່ເຫມາະສົມກັບຜະລິດຕະພັນ?
ຜະລິດຕະພັນແມ່ນເຂົ້າກັນໄດ້ກັບລະບົບປະຕິບັດການທີ່ໃຊ້ທົ່ວໄປທີ່ສຸດ. - ມີຂໍ້ມູນຫຼາຍປານໃດທີ່ສາມາດຂະບວນການຜະລິດຕະພັນທຽບກັບວິທີການແບບດັ້ງເດີມ?
ຜະລິດຕະພັນສາມາດປະມວນຜົນຂໍ້ມູນໄດ້ເຖິງ 10 ເທົ່າດ້ວຍການຫຼຸດຜ່ອນການບໍລິໂພກ CPU ເຖິງ 50% ເມື່ອທຽບກັບວິທີການແບບດັ້ງເດີມ. - ຜະລິດຕະພັນໃຊ້ GPU ຂະຫນານບໍ?
ແມ່ນແລ້ວ, ຜະລິດຕະພັນໄດ້ນໍາໃຊ້ GPU (ຫນ່ວຍປະມວນຜົນກາຟິກ) ສໍາລັບການຂະຫນານສູງ, ເຊິ່ງເພີ່ມອັດຕາການປະມວນຜົນຂໍ້ມູນແລະການນໍາໃຊ້ GPU.
ແນວທາງການເພີ່ມປະສິດທິພາບອອບໄລນ໌ສຳລັບແອັບພລິເຄຊັນຫຼາຍແກນ ROS2: ໂຕປະຕິບັດການ ROS2 ຫຼາຍຫຼັກ
ROS Meetup Stuttgart 2023
ທ່ານດຣ Pablo Ghiglino ( pablo.ghiglino@klepsydra.com )
ຜູ້ປະຕິບັດການຖ່າຍທອດ ROS2
ເນື້ອໃນ: ການປະມວນຜົນແບບຂະໜານ
- ສິ່ງທ້າທາຍໃນການປະມວນຜົນເທິງເຮືອ
- ຮາດແວທີ່ທັນສະໄຫມ ແລະຊອບແວເກົ່າ:
- ຄອມພິວເຕີສູງສຸດທີ່ມີປະລິມານຂໍ້ມູນຕໍ່າຫາປານກາງ
- ການນໍາໃຊ້ຊັບພະຍາກອນທີ່ບໍ່ມີປະສິດທິພາບ
- ພະລັງງານຫຼາຍເກີນໄປສໍາລັບການປະມວນຜົນຂໍ້ມູນຕ່ໍາ
ຜົນສະທ້ອນສໍາລັບຄໍາຮ້ອງສະຫມັກ Space
- ພາລະກິດທີ່ເກີດຂຶ້ນຊ້ຳບໍ່ສຳເລັດເນື່ອງຈາກຊອບແວ
- ການເຂົ້າເຖິງຂໍ້ມູນເຊັນເຊີຈາກໂລກແມ່ນໃຊ້ເວລາຫຼາຍ.
- ດາວທຽມຕໍ່ສູ້ເພື່ອຕອບສະຫນອງຄວາມຕ້ອງການພະລັງງານ
ປຽບທຽບແລະສະຫຼັບ
- Compare-and-swap (CAS) ແມ່ນຄໍາແນະນໍາທີ່ໃຊ້ໃນ multithreading ເພື່ອບັນລຸ synchronisation. ມັນປຽບທຽບເນື້ອໃນຂອງສະຖານທີ່ຫນ່ວຍຄວາມຈໍາທີ່ມີຄ່າທີ່ໃຫ້ແລະ, ພຽງແຕ່ຖ້າພວກມັນຄືກັນ, ດັດແກ້ເນື້ອຫາຂອງສະຖານທີ່ຫນ່ວຍຄວາມຈໍານັ້ນໃຫ້ເປັນຄ່າໃຫມ່. ນີ້ແມ່ນເຮັດເປັນການດໍາເນີນງານປະລໍາມະນູດຽວ.
- Compare-and-Swap ເປັນສ່ວນໜຶ່ງທີ່ສຳຄັນຂອງສະຖາປັດຕະຍະກຳ IBM 370 ຕັ້ງແຕ່ປີ 1970.
- Maurice Herlihy (1991) ໄດ້ພິສູດວ່າ CAS ສາມາດປະຕິບັດວິທີການເຫຼົ່ານີ້ຫຼາຍກ່ວາປະລໍາມະນູອ່ານ, ຂຽນ, ແລະເອົາແລະເພີ່ມ.
ຂໍ້ດີ ແລະ ຂໍ້ເສຍຂອງໂປຣແກມແບບບໍ່ມີລັອກ
Pros
- ຕ້ອງການການໃຊ້ CPU ໜ້ອຍລົງ
- ເວລາ latency ຕ່ຳລົງ ແລະ ການຖ່າຍທອດຂໍ້ມູນສູງຂຶ້ນ
- ການເພີ່ມຂຶ້ນຢ່າງຫຼວງຫຼາຍໃນການກໍານົດ
ຂໍ້ເສຍ
- ເຕັກນິກການຂຽນໂປລແກລມທີ່ຍາກທີ່ສຸດ
- ຕ້ອງການໂປເຊດເຊີທີ່ມີຄໍາແນະນໍາ CAS (90% ຂອງຕະຫຼາດມີພວກມັນ, ເຖິງແມ່ນວ່າ)
Klepsydra Ring-buffer
ຜະລິດຕະພັນ
ນ້ໍາຫນັກເບົາ, modular ແລະເຂົ້າກັນໄດ້ກັບລະບົບປະຕິບັດການທີ່ໃຊ້ຫຼາຍທີ່ສຸດ
- SDK – ຊຸດພັດທະນາຊອບແວ
ຊຸກຍູ້ການປະມວນຜົນຂໍ້ມູນຢູ່ໃນຂອບສໍາລັບຄໍາຮ້ອງສະຫມັກທົ່ວໄປແລະສູດການຄິດໄລ່ທີ່ເຂັ້ມຂຸ້ນຂອງໂປເຊດເຊີ - AI - ປັນຍາປະດິດ
ປະສິດທິພາບສູງເຄື່ອງຈັກໃນເຄືອຂ່າຍ neural ເລິກ (DNN) ທີ່ຈະນໍາໃຊ້ AI ຫຼືໂມດູນການຮຽນຮູ້ເຄື່ອງຈັກຢູ່ໃນຂອບ - ປລັກອິນຜູ້ບໍລິຫານ ROS2
Executor ສໍາລັບ ROS2 ສາມາດປະມວນຜົນຂໍ້ມູນໄດ້ຫຼາຍເຖິງ 10 ເທົ່າ ດ້ວຍການຫຼຸດຜ່ອນການບໍລິໂພກ CPU ເຖິງ 50%. - GPU (ຫນ່ວຍປະມວນຜົນກາຟິກ)
ການຂະໜານກັນສູງຂອງ GPU ເພື່ອເພີ່ມອັດຕາການປະມວນຜົນຂໍ້ມູນ ແລະການນຳໃຊ້ GPU
ສະພາບການ: ROS1 ໃນອາວະກາດ
- ຜົນປະໂຫຍດ:
- ເປີດໃຊ້ເອກະລາດ, ການຮັບຮູ້, ແລະການຄວບຄຸມໃນອາວະກາດ
- ມີຄວາມຍືດຫຍຸ່ນ, modular, ແລະສະຫນັບສະຫນູນໂດຍຊຸມຊົນຂະຫນາດໃຫຍ່.
- Examples:
- ນັກບິນຂອງອົງການ NASA 2 (R2) – ນັກບິນອະວະກາດຊ່ວຍເຫຼືອຢູ່ ISS
- Astrobee ຂອງ NASA - ການດໍາເນີນງານຂອງຕົນເອງກ່ຽວກັບ ISS ໄດ້
- Spheres - ດາວທຽມ Spherical ສໍາລັບການຄົ້ນຄວ້າກ່ຽວກັບ ISS
- Dextre - ແຂນຫຸ່ນຍົນສໍາລັບການຫມູນໃຊ້ແລະການສ້ອມແປງຢູ່ໃນ ISS
- Google Lunar XPRIZE - ໃຊ້ສໍາລັບການພາລະກິດຍານສໍາລັບຍານບໍລິສັດ
ບໍລິບົດ: Space-ROS
- ໂຄງຮ່າງ ROS ໃນການສຳຫຼວດອາວະກາດ ແລະຫຸ່ນຍົນ
- ມີຄຸນສົມບັດບາງສ່ວນສຳລັບການໃຊ້ພື້ນທີ່
- Examples:
- ຜູ້ຊ່ວຍຫຸ່ນຍົນສໍາລັບນັກອາວະກາດ
- ການສຳຫຼວດດາວເຄາະດ້ວຍຍານສຳຫຼວດອັດຕະໂນມັດ
- ປະຕິບັດການດາວທຽມແລະການຄວບຄຸມ
- ການຈອດຍານອະວະກາດແບບປົກຄອງຕົນເອງ
- ການບໍລິການ ແລະສ້ອມແປງໃນວົງໂຄຈອນ
- ຜົນປະໂຫຍດ:
- ເປີດໃຊ້ເອກະລາດ, ການສື່ສານ, ແລະການຮັບຮູ້
- ເລັ່ງການພັດທະນາພາລະກິດອາວະກາດ ແລະການປະຕິບັດງານ.
ROS2 Executor ອະທິບາຍ
ຜູ້ປະຕິບັດການປະສານງານແລະກໍານົດເວລາຂອງແອັບພລິເຄຊັນ ROS2 ໂດຍການຄຸ້ມຄອງການເອີ້ນຄືນຂອງການສະໝັກໃຊ້, ຂໍ້ຄວາມ, ການບໍລິການ, ໂມງຈັບເວລາ ແລະ nodes. ໃນ ROS2, executor ບໍ່ໄດ້ຮັກສາຄິວຂໍ້ຄວາມ ແລະ callbacks ຂອງຕົນເອງ, ແຕ່ແທນທີ່ຈະບໍລິໂພກຂໍ້ຄວາມຈາກແຖວ DDS middleware, ແລະຫຼັງຈາກນັ້ນສົ່ງມັນເພື່ອປະຕິບັດກັບຫນຶ່ງໃນກະທູ້.
ລັດຂອງສິນລະປະ
ຜູ້ບໍລິຫານ 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
ຜູ້ປະຕິບັດການຖ່າຍທອດ
ມັນເຮັດວຽກແນວໃດ?
- ຄູ່ຜູ້ເຜີຍແຜ່-ຜູ້ສະໝັກໃຊ້ແມ່ນຖືກສ້າງຂຶ້ນສໍາລັບແຕ່ລະຫົວຂໍ້ທີ່ຕ້ອງການໂດຍ node ROS2 ທີ່ໃຫ້.
- ພາຍໃນ, ແຕ່ລະຄູ່ຜູ້ເຜີຍແຜ່ - ຈອງແມ່ນຖືກກໍານົດໂດຍສອງຕົວກໍານົດການ: ຊື່ node ແລະຊື່ຫົວຂໍ້. ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ສອງໂຫນດທີ່ແຕກຕ່າງກັນທີ່ເຜີຍແຜ່ໃນຫົວຂໍ້ດຽວກັນຈະຖືກຈັດການເປັນເອກະລາດ.
- ຄູ່ຂອງຜູ້ເຜີຍແຜ່-ຜູ້ສະໝັກໃຊ້ທັງໝົດທີ່ກ່ຽວຂ້ອງກັບຫົວຂໍ້ທີ່ເປັນຂອງ node ດຽວກັນແມ່ນຈັດການໂດຍ loop ເຫດການດຽວກັນ.
ຕົວປະຕິບັດການຖ່າຍທອດແບບ Single-core vs multi-core
- ແອັດວັນ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 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
ມາດຕະຖານການປະຕິບັດ
- ເປົ້າຫມາຍສໍາລັບສູດການຄິດໄລ່ທາງພັນທຸກໍາແມ່ນເພື່ອຫຼຸດຜ່ອນຄວາມລ່າຊ້າສະເລ່ຍຂອງເສັ້ນທາງທີ່ສໍາຄັນ.
- ນັ້ນແມ່ນ, ເວລາທີ່ມັນໃຊ້ເວລານັບຕັ້ງແຕ່ການພິມເຜີຍແຜ່ຂໍ້ມູນ Lidar ຈົນກ່ວາ Object Collision Estimator ສໍາເລັດການເຮັດວຽກຂອງມັນ.
- ຮູບພາບສະແດງໃຫ້ເຫັນເສັ້ນທາງທີ່ສໍາຄັນທີ່ການຄົ້ນຄວ້າຂອງພວກເຮົາພະຍາຍາມເພີ່ມປະສິດທິພາບ
ຜູ້ປະຕິບັດການຖ່າຍທອດ
Klepsydra stream Distribution Optimer (SDO)
- ການປ່ຽນແປງຫຼາຍແກນຂອງ streaming executor ເຮັດວຽກທີ່ດີທີ່ສຸດໃນເວລາທີ່ການແຜ່ກະຈາຍການໂຫຼດຂອງ nodes ໃນບັນດາ cores ໄດ້ຖືກປັບປຸງໃຫ້ດີທີ່ສຸດແລະສາມາດເຮັດໃຫ້ມີຄວາມແຕກຕ່າງຢ່າງຫຼວງຫຼາຍໃນແງ່ຂອງ latency, ການໃຊ້ພະລັງງານແລະການຖ່າຍທອດຂໍ້ມູນ.
- ຢ່າງໃດກໍ່ຕາມ, ການສ້າງແຜນທີ່ຂອງແກນບໍ່ແມ່ນເລື່ອງເລັກໆນ້ອຍໆແລະຕ້ອງການວິທີການທີ່ເປັນລະບົບ. ວິທີການທີ່ເປັນໄປໄດ້ແມ່ນການກໍານົດຫນ້າທີ່ເປົ້າຫມາຍທີ່ວັດແທກການປະຕິບັດຂອງລະບົບໂດຍອີງໃສ່ການຕັ້ງຄ່າຫຼັກ.
- ຫຼັງຈາກນັ້ນ, ສູດການຄິດໄລ່ທາງພັນທຸກໍາສາມາດຖືກນໍາໃຊ້ເພື່ອເພີ່ມປະສິດທິພາບການກໍາຫນົດຄ່າຫຼັກໂດຍການທົດສອບການກໍາຫນົດຄ່າທີ່ແຕກຕ່າງກັນແລະເລືອກເອົາສິ່ງທີ່ປະຕິບັດໄດ້ດີຕາມຫນ້າທີ່ເປົ້າຫມາຍ. ຂະບວນການນີ້ສືບຕໍ່ໄປຈົນກວ່າຈະພົບເຫັນການຕັ້ງຄ່າທີ່ດີທີ່ສຸດ.
- ວິທີການນີ້ຊ່ວຍໃຫ້ມີການນໍາໃຊ້ລະບົບຫຼາຍແກນຢ່າງມີປະສິດທິພາບຫຼາຍຂຶ້ນແລະຮັບປະກັນວ່າການໂຫຼດໄດ້ຖືກແຈກຢາຍໃນທາງທີ່ດີທີ່ສຸດ.
ສະຫຼຸບຜົນໄດ້ຮັບ
- ສໍາລັບການເຮັດວຽກຂອງ node ຂະຫນາດນ້ອຍ, ຄວາມສັບສົນທີ່ເພີ່ມບໍ່ໄດ້ແປວ່າຜົນໄດ້ຮັບທີ່ດີກວ່າ. ກະທູ້ດ່ຽວແບບຄົງທີ່, ງ່າຍດາຍທີ່ສຸດ, ປະຕິບັດໄດ້ດີກວ່າຜູ້ປະຕິບັດສ່ວນທີ່ເຫຼືອ.
- ການເພີ່ມປະລິມານການເຮັດວຽກ, Streaming Executor ແມ່ນຜູ້ປະຕິບັດທີ່ດີທີ່ສຸດປະຕິບັດຕາມໂດຍ Static Single Threaded Executor.
- ຄາດວ່າຕົວປະຕິບັດການສະຕຣີມມີຜົນດີກ່ວາກະທູ້ດຽວ, ເນື່ອງຈາກແອັບພລິເຄຊັນບໍ່ໄດ້ດັດແປງ topology ຂອງມັນໃນຂະນະທີ່ແລ່ນ. ມັນສະແດງໃຫ້ເຫັນວ່ານີ້ແມ່ນແນ່ນອນ
- ຜົນການຄົ້ນຫາສໍາລັບ Raspberry PI4
- ການເພີ່ມຂຶ້ນຂອງການປະຕິບັດທີ່ຄ້າຍຄືກັນທີ່ໄດ້ຮັບສໍາລັບ iX10 ຂອງ Unibap ແລະ LS1046 ຂອງ Teledyne
ບົດສະຫຼຸບ
ສະຫຼຸບ
- ບົດຄວາມນີ້ສະເຫນີວິທີການໃຫມ່ເພື່ອເພີ່ມປະສິດທິພາບຮູບແບບການປະຕິບັດ 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 |