ROBOWORKS មនុស្សយន្តរ៉ូបូត Orin Nano x3 ROS 

ROBOWORKS មនុស្សយន្តរ៉ូបូត Orin Nano x3 ROS

សង្ខេប

ឯកសារនេះពន្យល់ជាចម្បងអំពីការប្រើប្រាស់កញ្ចប់មុខងារបង្កើតមនុស្សយន្តច្រើននាក់ដែលមានឈ្មោះថា wheeltec_multi។

ឯកសារនេះចែកចេញជាបួនផ្នែក៖

  • ផ្នែកទីមួយគឺជាចម្បងអំពីការណែនាំនៃវិធីសាស្រ្តបង្កើតមនុស្សយន្តច្រើន;
  • ផ្នែកទីពីរពិពណ៌នាជាចម្បងអំពីការកំណត់ទំនាក់ទំនងពហុម៉ាស៊ីនរបស់ ROS រួមទាំងការសាងសង់ ROS នៃការទំនាក់ទំនងពហុម៉ាស៊ីន និងបញ្ហាដែលអាចជួបប្រទះនៅក្នុងដំណើរការនៃការទំនាក់ទំនង ROS ។
  • ផ្នែកទីបីពិពណ៌នាជាចម្បងនូវជំហានប្រតិបត្តិការនៃការធ្វើសមកាលកម្មពេលវេលាច្រើនម៉ាស៊ីន។
  • ផ្នែកទី 4 បង្ហាញពីការប្រើប្រាស់ជាក់លាក់នៃកញ្ចប់មុខងារបង្កើតម៉ាស៊ីនច្រើន។

គោលបំណងនៃឯកសារនេះគឺការណែនាំអំពីប្រព័ន្ធមនុស្សយន្តពហុភ្នាក់ងារ និងអនុញ្ញាតឱ្យអ្នកប្រើប្រាស់ចាប់ផ្តើមគម្រោងបង្កើតមនុស្សយន្តច្រើនយ៉ាងរហ័ស។

ការណែនាំអំពី ALGORITHMS ភ្នាក់ងារចម្រុះ

ក្បួនដោះស្រាយការបង្កើតភ្នាក់ងារចម្រុះ

កញ្ចប់ ROS នេះបង្ហាញពីបញ្ហាធម្មតានៃភ្នាក់ងារពហុមុខងារក្នុងការគ្រប់គ្រងរួមគ្នាកំឡុងពេលបង្កើតដ្រាយ។ ការបង្រៀននេះដាក់មូលដ្ឋានគ្រឹះសម្រាប់ការអភិវឌ្ឍន៍នាពេលអនាគតលើប្រធានបទនេះ។ Formation control algorithm សំដៅលើ algorithm ដែលគ្រប់គ្រងភ្នាក់ងារជាច្រើនដើម្បីបង្កើត formation ជាក់លាក់មួយដើម្បីបំពេញការងារមួយ។ កិច្ចសហប្រតិបត្តិការសំដៅលើកិច្ចសហប្រតិបត្តិការរវាងភ្នាក់ងារជាច្រើនដោយប្រើទំនាក់ទំនងកម្រិតជាក់លាក់មួយដើម្បីបំពេញកិច្ចការមួយ។ យកដ្រាយបង្កើតមនុស្សយន្តច្រើនជាអតីតample, ការសហការមានន័យថាមនុស្សយន្តជាច្រើនបង្កើតបានជាទម្រង់ដែលចង់បានរួមគ្នា។ ខ្លឹមសាររបស់វាគឺទំនាក់ទំនងគណិតវិទ្យាជាក់លាក់មួយគឺពេញចិត្តរវាងមុខតំណែងរបស់មនុស្សយន្តនីមួយៗ។ វិធីសាស្រ្តនៃការបង្កើតត្រូវបានបែងចែកជាចម្បងទៅជាការគ្រប់គ្រងការបង្កើតកណ្តាល និងការគ្រប់គ្រងការបង្កើតចែកចាយ។ វិធីសាស្ត្រត្រួតពិនិត្យការបង្កើតមជ្ឈិម រួមមានវិធីសាស្ត្ររចនាសម្ព័ន្ធនិម្មិត វិធីសាស្ត្រទ្រឹស្តីក្រាហ្វិក និងវិធីសាស្ត្រព្យាករណ៍គំរូ។ វិធីសាស្រ្តត្រួតពិនិត្យការបង្កើតដែលបានចែកចាយភាគច្រើនរួមមានវិធីសាស្ត្រអ្នកដឹកនាំ-អ្នកតាម វិធីសាស្ត្រផ្អែកលើអាកប្បកិរិយា និងវិធីសាស្ត្ររចនាសម្ព័ន្ធនិម្មិត។

កញ្ចប់ ROS នេះអនុវត្តវិធីសាស្ត្រអ្នកដឹកនាំ-អ្នកដើរតាមក្នុងវិធីសាស្ត្រគ្រប់គ្រងការបង្កើតចែកចាយ ដើម្បីប្រតិបត្តិដ្រាយបង្កើតពហុមនុស្សយន្ត។ មនុស្សយន្តមួយនៅក្នុងការបង្កើតត្រូវបានចាត់តាំងជាអ្នកដឹកនាំ ហើយមនុស្សយន្តផ្សេងទៀតត្រូវបានគេកំណត់ថាជាទាសករដើម្បីដើរតាមអ្នកដឹកនាំ។ ក្បួនដោះស្រាយប្រើគន្លងចលនារបស់មនុស្សយន្តនាំមុខគេដើម្បីកំណត់កូអរដោនេដែលត្រូវតាមដានដោយមនុស្សយន្តខាងក្រោមជាមួយនឹងទិសដៅ និងល្បឿនជាក់លាក់។ តាមរយៈការកែតម្រូវគម្លាតទីតាំងពីកូអរដោនេតាមដាន អ្នកតាមដាននៅទីបំផុតនឹងកាត់បន្ថយគម្លាតរវាងអ្នកតាមដាន និងកូអរដោនេនៃការតាមដានដែលរំពឹងទុកមកត្រឹមសូន្យ ដើម្បីសម្រេចបាននូវគោលបំណងនៃការបង្កើតដ្រាយ។ តាមវិធីនេះ ក្បួនដោះស្រាយគឺមិនសូវស្មុគស្មាញទេ។

ក្បួនដោះស្រាយការជៀសវាងឧបសគ្គ

ក្បួនដោះស្រាយការជៀសវាងឧបសគ្គទូទៅគឺវិធីសាស្ត្រវាលសក្តានុពលសិប្បនិម្មិត។ ចលនារបស់មនុស្សយន្តនៅក្នុងបរិយាកាសរាងកាយត្រូវបានចាត់ទុកថាជាចលនានៅក្នុងវាលកម្លាំងសិប្បនិម្មិតនិម្មិត។ ឧបសគ្គដែលនៅជិតបំផុតត្រូវបានកំណត់អត្តសញ្ញាណដោយ LiDAR ។ ឧបសគ្គនេះផ្តល់នូវវាលកម្លាំងដែលច្របូកច្របល់ ដើម្បីបង្កើតការច្រានចោលទៅកាន់មនុស្សយន្ត ហើយចំណុចគោលដៅផ្តល់នូវវាលទំនាញដើម្បីបង្កើតកម្លាំងទំនាញដល់មនុស្សយន្ត។ នៅក្នុងវិធីនេះ វាគ្រប់គ្រងចលនារបស់មនុស្សយន្ត ក្រោមសកម្មភាពរួមនៃការច្រានចោល និងការទាក់ទាញ។

កញ្ចប់ ROS នេះគឺជាការកែលម្អដោយផ្អែកលើវិធីសាស្ត្រវាលសក្តានុពលសិប្បនិម្មិត។ ទីមួយ ក្បួនដោះស្រាយការបង្កើតគណនាល្បឿនលីនេអ៊ែរ និងមុំនៃអ្នកដើរតាម Slave ។ បន្ទាប់មកវាបង្កើន ឬបន្ថយល្បឿនលីនេអ៊ែរ និងមុំស្របតាមតម្រូវការនៃការជៀសវាងឧបសគ្គ។ នៅពេលដែលចម្ងាយរវាងអ្នកដើរតាម Slave និងឧបសគ្គកាន់តែខិតជិត កម្លាំងរុញច្រាននៃឧបសគ្គចំពោះអ្នកដើរតាម Slave គឺធំជាង។ ទន្ទឹមនឹងនេះការផ្លាស់ប្តូរនៃល្បឿនលីនេអ៊ែរ និងការប្រែប្រួលល្បឿនមុំគឺធំជាង។ នៅពេលដែលឧបសគ្គកាន់តែខិតទៅជិតផ្នែកខាងមុខនៃអ្នកដើរតាម Slave ការច្រានចោលឧបសគ្គចំពោះអ្នកដើរតាម Slave កាន់តែធំ (ការច្រានចោលផ្នែកខាងមុខគឺធំជាងគេ ហើយការច្រានចោលចំហៀងគឺតូចបំផុត) ។ ជាលទ្ធផល ការប្រែប្រួលនៃល្បឿនលីនេអ៊ែរ និងល្បឿនមុំគឺធំជាង។ តាមរយៈវិធីសាស្រ្តវាលសក្តានុពលសិប្បនិម្មិត វាធ្វើអោយប្រសើរឡើងនូវដំណោះស្រាយមួយ។

នៅពេលដែលមនុស្សយន្តអាចឈប់ឆ្លើយតបនៅចំពោះមុខឧបសគ្គ។ នេះបម្រើគោលបំណងនៃការជៀសវាងឧបសគ្គកាន់តែប្រសើរ។

ការរៀបចំទំនាក់ទំនងពហុភ្នាក់ងារ

ការប្រាស្រ័យទាក់ទងគ្នាច្រើនភ្នាក់ងារ គឺជាជំហានសំខាន់មួយដើម្បីបញ្ចប់ការបង្កើតមនុស្សយន្តច្រើន។ នៅពេលដែលទីតាំងដែលទាក់ទងគ្នានៃមនុស្សយន្តច្រើនមិនស្គាល់ មនុស្សយន្តត្រូវការចែករំលែកព័ត៌មានគ្នាទៅវិញទៅមកតាមរយៈការទំនាក់ទំនងដើម្បីជួយសម្រួលដល់ការបង្កើតការតភ្ជាប់។ ស្ថាបត្យកម្មដែលបានចែកចាយ ROS និងការទំនាក់ទំនងបណ្តាញមានថាមពលខ្លាំង។ វាមិនត្រឹមតែងាយស្រួលសម្រាប់ការទំនាក់ទំនងអន្តរដំណើរការប៉ុណ្ណោះទេ ប៉ុន្តែថែមទាំងសម្រាប់ការទំនាក់ទំនងរវាងឧបករណ៍ផ្សេងៗផងដែរ។ តាមរយៈទំនាក់ទំនងបណ្តាញ ថ្នាំងទាំងអស់អាចដំណើរការលើកុំព្យូទ័រណាមួយ។ ភារកិច្ចចម្បងដូចជាដំណើរការទិន្នន័យត្រូវបានបញ្ចប់នៅផ្នែកខាងម៉ាស៊ីន។ ម៉ាស៊ីនទាសករទទួលខុសត្រូវចំពោះការទទួលទិន្នន័យបរិស្ថានដែលប្រមូលបានដោយឧបករណ៍ចាប់សញ្ញាផ្សេងៗ។ ម៉ាស៊ីននៅទីនេះគឺជាអ្នកគ្រប់គ្រងដែលដំណើរការថ្នាំង Master នៅក្នុង ROS ។ ក្របខ័ណ្ឌទំនាក់ទំនងពហុភ្នាក់ងារបច្ចុប្បន្នគឺតាមរយៈអ្នកគ្រប់គ្រងថ្នាំង និងអ្នកគ្រប់គ្រងប៉ារ៉ាម៉ែត្រដើម្បីគ្រប់គ្រងទំនាក់ទំនងក្នុងចំណោមមនុស្សយន្តជាច្រើន។

ការរៀបចំទំនាក់ទំនងពហុភ្នាក់ងារ

ជំហានដើម្បីរៀបចំទំនាក់ទំនងពហុភ្នាក់ងារ

ដំឡើងការគ្រប់គ្រង ROS នៅក្នុងបណ្តាញតែមួយ

មាន 2 វិធីនៃការដំឡើង Master/Slave ROS Controls នៅក្រោមបណ្តាញតែមួយ។

ជម្រើសទី 1៖

Master Host បង្កើត wifi ក្នុងស្រុកដោយដំណើរការ Master node manager។ ជាទូទៅ មនុស្សយន្តមួយក្នុងចំណោមមនុស្សយន្តដែលត្រូវបានកំណត់ថាជាមេបង្កើតបណ្តាញ wifi នេះ។ មនុស្សយន្ត ឬម៉ាស៊ីននិម្មិតផ្សេងទៀតចូលរួមបណ្តាញ wifi នេះក្នុងនាមជាទាសករ។

ជម្រើសទី ១៖

បណ្តាញវ៉ាយហ្វាយក្នុងស្រុកត្រូវបានផ្តល់ដោយរ៉ោតទ័រភាគីទីបីជាមជ្ឈមណ្ឌលបញ្ជូនព័ត៌មាន។ មនុស្សយន្តទាំងអស់ត្រូវបានភ្ជាប់ទៅរ៉ោតទ័រដូចគ្នា។ រ៉ោតទ័រក៏អាចប្រើបានដោយមិនចាំបាច់ភ្ជាប់អ៊ីនធឺណិត។ ជ្រើសរើសមនុស្សយន្តមួយក្នុងចំណោមមនុស្សយន្តជាមេ ហើយដំណើរការ Master node manager។ មនុស្សយន្តផ្សេងទៀតត្រូវបានកំណត់ថាជាទាសករ និងដំណើរការអ្នកគ្រប់គ្រងថ្នាំងមេពីមេ។

ការសម្រេចចិត្តលើជម្រើសមួយណាដែលត្រូវជ្រើសរើសអាស្រ័យលើតម្រូវការគម្រោងរបស់អ្នក។ ប្រសិនបើចំនួនមនុស្សយន្តដែលត្រូវការទំនាក់ទំនងមិនមានច្រើនទេ ជម្រើសទី 1 ត្រូវបានណែនាំ ព្រោះវាសន្សំសំចៃថ្លៃដើម ហើយវាងាយស្រួលក្នុងការរៀបចំ។ នៅពេលដែលចំនួនមនុស្សយន្តមានបរិមាណច្រើន ជម្រើសទី 2 ត្រូវបានណែនាំ។ ឧបសគ្គលើថាមពលកុំព្យូទ័រនៃការគ្រប់គ្រងមេ ROS និងកម្រិតបញ្ជូនវ៉ាយហ្វាយនៅលើយន្តហោះដែលមានកម្រិតអាចបណ្តាលឱ្យមានការពន្យារពេល និងការរំខានបណ្តាញយ៉ាងងាយស្រួល។ រ៉ោតទ័រអាចដោះស្រាយបញ្ហាទាំងនេះបានយ៉ាងងាយស្រួល។

សូមចំណាំថា នៅពេលដំណើរការទំនាក់ទំនងពហុភ្នាក់ងារ ប្រសិនបើម៉ាស៊ីននិម្មិតត្រូវបានប្រើជា ROS slave នោះ របៀបបណ្តាញរបស់វាត្រូវកំណត់ទៅជារបៀបស្ពាន។

កំណត់រចនាសម្ព័ន្ធអថេរបរិស្ថាន Master/Slave 

បន្ទាប់ពី ROS masters ទាំងអស់ស្ថិតនៅក្នុងបណ្តាញតែមួយ អថេរបរិស្ថានសម្រាប់ការទំនាក់ទំនងពហុភ្នាក់ងារចាំបាច់ត្រូវកំណត់។ អថេរបរិស្ថាននេះត្រូវបានកំណត់រចនាសម្ព័ន្ធនៅក្នុង .bashrc file នៅក្នុងថតឯកសារសំខាន់។ ដំណើរការពាក្យបញ្ជា gedit ~/.bashrc ដើម្បីបើកដំណើរការវា។ សូមចំណាំថាទាំងពីរ .bashrc files របស់មេ និងទាសករក្នុងការទំនាក់ទំនងពហុភ្នាក់ងារចាំបាច់ត្រូវកំណត់រចនាសម្ព័ន្ធ។ អ្វីដែលត្រូវផ្លាស់ប្តូរគឺអាសយដ្ឋាន IP នៅចុងបញ្ចប់នៃ file. បន្ទាត់ពីរគឺ ROS_MASTER_URI និង ROS_HOSTNAME ដូចបង្ហាញក្នុងរូបភាព 2-1-4។ ROS_MASTER_URI និង ROS_HOSTNAME នៃម៉ាស៊ីន ROS គឺជា IP មូលដ្ឋានទាំងពីរ។ ROS_MASTER_URI ក្នុង ROS ទាសករ .bashrc file ចាំបាច់ត្រូវប្តូរទៅអាសយដ្ឋាន IP របស់ម៉ាស៊ីន ខណៈ ROS_HOSTNAME នៅតែជាអាសយដ្ឋាន IP មូលដ្ឋាន។

ការរៀបចំទំនាក់ទំនងពហុភ្នាក់ងារ

ការទំនាក់ទំនងពហុម៉ាស៊ីន ROS មិនត្រូវបានរារាំងដោយកំណែចេញផ្សាយរបស់ ROS ទេ។ នៅក្នុងដំណើរការនៃការទំនាក់ទំនងពហុម៉ាស៊ីន មនុស្សម្នាក់គួរតែដឹងអំពីចំណុចខាងក្រោម៖

  1. ប្រតិបត្តិការរបស់កម្មវិធី ROS slave អាស្រ័យលើកម្មវិធីមេ ROS របស់ឧបករណ៍មេ ROS ។
    កម្មវិធីមេ ROS ត្រូវតែចាប់ផ្តើមដំបូងនៅលើឧបករណ៍មេ មុនពេលដំណើរការកម្មវិធី slave នៅលើឧបករណ៍ slave ។
  2. អាសយដ្ឋាន IP របស់ម៉ាស៊ីនមេ និងម៉ាស៊ីនបម្រើក្នុងការទំនាក់ទំនងពហុម៉ាស៊ីនត្រូវតែស្ថិតនៅក្នុងបណ្តាញតែមួយ។ នេះមានន័យថាអាសយដ្ឋាន IP និងរបាំងបណ្តាញរងស្ថិតនៅក្រោមបណ្តាញតែមួយ។
  3. ROS_HOSTNAME ក្នុងការកំណត់រចនាសម្ព័ន្ធបរិស្ថាន file .bashrc មិនត្រូវបានណែនាំអោយប្រើ localhost ទេ។ វាត្រូវបានណែនាំឱ្យប្រើអាសយដ្ឋាន IP ជាក់លាក់។
  4. ក្នុងករណីដែលអាសយដ្ឋាន IP របស់ទាសករមិនត្រូវបានកំណត់ត្រឹមត្រូវ ឧបករណ៍ slave នៅតែអាចចូលប្រើមេ ROS ប៉ុន្តែមិនអាចបញ្ចូលព័ត៌មានគ្រប់គ្រងបានទេ។
  5.  ប្រសិនបើម៉ាស៊ីននិម្មិតចូលរួមក្នុងទំនាក់ទំនងពហុភ្នាក់ងារ របៀបបណ្តាញរបស់វាត្រូវកំណត់ទៅជារបៀបស្ពាន។ IP ឋិតិវន្តមិនអាចត្រូវបានជ្រើសរើសសម្រាប់ការភ្ជាប់បណ្តាញ។
  6. ការទំនាក់ទំនងច្រើនម៉ាស៊ីនមិនអាចទេ។ view ឬជាវប្រធានបទនៃប្រភេទទិន្នន័យសារដែលមិនមាននៅក្នុងមូលដ្ឋាន។
  7. អ្នកអាចប្រើការបង្ហាញសាកល្បង Little Turtle ដើម្បីផ្ទៀងផ្ទាត់ថាតើការប្រាស្រ័យទាក់ទងរវាងមនុស្សយន្តជោគជ័យឬអត់៖
    a. រត់ចេញពីមេ
    roscore # បើកដំណើរការសេវាកម្ម ROS
    rosrun turtlesim turtlesim_node #launch turtlesim interface
    b.
    រត់ចេញពីទាសករ
    rosrun turtlesim turtle_teleop_key #បើកដំណើរការថ្នាំងគ្រប់គ្រងក្តារចុចសម្រាប់អណ្តើក

ប្រសិនបើអ្នកអាចរៀបចំចលនាអណ្តើកចេញពីក្តារចុចនៅលើ slave វាមានន័យថាទំនាក់ទំនងមេ/ទាសករត្រូវបានបង្កើតឡើងដោយជោគជ័យ។

ការតភ្ជាប់ប្រព័ន្ធ Wifi ដោយស្វ័យប្រវត្តិនៅក្នុង ROS

នីតិវិធីខាងក្រោមពន្យល់ពីរបៀបកំណត់រចនាសម្ព័ន្ធមនុស្សយន្តដើម្បីភ្ជាប់ដោយស្វ័យប្រវត្តិទៅបណ្តាញម៉ាស៊ីន ឬបណ្តាញរ៉ោតទ័រ។

ការដំឡើងការភ្ជាប់ Wifi ដោយស្វ័យប្រវត្តិសម្រាប់ Jetson Nano

  1. ភ្ជាប់ Jetson Nano តាមរយៈឧបករណ៍ពីចម្ងាយ VNC ឬដោយផ្ទាល់ទៅអេក្រង់កុំព្យូទ័រ។ ចុចលើរូបតំណាង wifi នៅជ្រុងខាងស្តាំខាងលើ បន្ទាប់មកចុច “Edit Connections..”
    ការរៀបចំទំនាក់ទំនងពហុភ្នាក់ងារ
  2. ចុចប៊ូតុង + ក្នុងការតភ្ជាប់បណ្តាញ៖
    ការរៀបចំទំនាក់ទំនងពហុភ្នាក់ងារ
  3. នៅក្រោមបង្អួច "ជ្រើសរើសប្រភេទការតភ្ជាប់" ចុចលើម៉ឺនុយទម្លាក់ចុះហើយចុចប៊ូតុង "បង្កើត ... ":
    ការរៀបចំទំនាក់ទំនងពហុភ្នាក់ងារ
  4. នៅក្នុងផ្ទាំងបញ្ជា ចុចជម្រើស Wifi ។ បញ្ចូលឈ្មោះ Wifi ដើម្បីភ្ជាប់ក្នុង “Connection Name” និងវាល SSID។ ជ្រើសរើស "អតិថិជន" នៅក្នុងម៉ឺនុយទម្លាក់ចុះ "របៀប" ហើយជ្រើសរើស "wlan0" នៅក្នុងម៉ឺនុយទម្លាក់ចុះ "ឧបករណ៍" ។
    ការរៀបចំទំនាក់ទំនងពហុភ្នាក់ងារ
  5. នៅក្នុងផ្ទាំងបញ្ជាចុចជម្រើស "ទូទៅ" ហើយពិនិត្យមើល "ភ្ជាប់ដោយស្វ័យប្រវត្តិទៅបណ្តាញនេះ ... "។ កំណត់អាទិភាពការតភ្ជាប់ទៅ 1 នៅក្នុងជម្រើស "អាទិភាពការតភ្ជាប់សម្រាប់ការធ្វើឱ្យសកម្មដោយស្វ័យប្រវត្តិ" ។ ពិនិត្យជម្រើស "អ្នកប្រើប្រាស់ទាំងអស់អាចភ្ជាប់ទៅបណ្តាញនេះ"។ នៅពេលដែលជម្រើសត្រូវបានកំណត់ទៅ 0 នៅក្នុង "អាទិភាពការតភ្ជាប់សម្រាប់ការធ្វើឱ្យសកម្មដោយស្វ័យប្រវត្តិ" សម្រាប់ wifi ផ្សេងទៀត នេះមានន័យថានេះគឺជាបណ្តាញ wifi ដែលពេញចិត្តកាលពីអតីតកាល។
    ការរៀបចំទំនាក់ទំនងពហុភ្នាក់ងារ
  6. ចុចលើជម្រើស "Wi-Fi Security" នៅក្នុងផ្ទាំងបញ្ជា។ ជ្រើសរើស "WPA & WPA2 ផ្ទាល់ខ្លួន" នៅក្នុងវាល "សុវត្ថិភាព" ។ បន្ទាប់មកបញ្ចូលលេខសម្ងាត់ Wifi ចូល
    ការរៀបចំទំនាក់ទំនងពហុភ្នាក់ងារ

ចំណាំ:

ប្រសិនបើមនុស្សយន្តមិនអាចភ្ជាប់ដោយស្វ័យប្រវត្តិទៅបណ្តាញ wifi បន្ទាប់ពីចាប់ផ្តើមនៅពេលដែលការកំណត់អាទិភាព wifi ដល់ 0 វាអាចបណ្តាលមកពីបញ្ហានៃសញ្ញា wifi ខ្សោយ។ ដើម្បីជៀសវាងបញ្ហានេះ អ្នកអាចជ្រើសរើសលុបជម្រើស wifi ទាំងអស់ដែលបានភ្ជាប់ពីមុន។ រក្សាទុកតែបណ្តាញ wifi ដែលបង្កើតឡើងដោយម៉ាស៊ីន ឬរ៉ោតទ័រប៉ុណ្ណោះ។

ចុចលើជម្រើស "ការកំណត់ IPv4" នៅក្នុងផ្ទាំងបញ្ជាការកំណត់បណ្តាញ។ ជ្រើសរើសជម្រើស "សៀវភៅដៃ" នៅក្នុងវាល "វិធីសាស្រ្ត" ។ បន្ទាប់មកចុច "បន្ថែម" បំពេញអាសយដ្ឋាន IP របស់ម៉ាស៊ីនបម្រើនៅក្នុងវាល "អាសយដ្ឋាន" ។ បំពេញ "24" នៅក្នុងវាល "Netmask" ។ បំពេញផ្នែកបណ្តាញ IP នៅក្នុង "ច្រកផ្លូវ" ។ ផ្លាស់ប្តូរលេខបីខ្ទង់ចុងក្រោយនៃផ្នែកបណ្តាញ IP ទៅជា "1" ។ គោលបំណងសំខាន់នៃជំហាននេះគឺដើម្បីជួសជុលអាសយដ្ឋាន IP ។ បន្ទាប់ពីនេះត្រូវបានបញ្ចប់ជាលើកដំបូង អាសយដ្ឋាន IP នឹងនៅតែមិនផ្លាស់ប្តូរនៅពេលភ្ជាប់ទៅ WIFI ដូចគ្នាជាបន្តបន្ទាប់។

ការរៀបចំទំនាក់ទំនងពហុភ្នាក់ងារ

បន្ទាប់ពីការកំណត់ទាំងអស់ត្រូវបានតំឡើងសូមចុច "រក្សាទុក" ដើម្បីរក្សាទុកការកំណត់។ បន្ទាប់ពីការសន្សំបានជោគជ័យ មនុស្សយន្តនឹងភ្ជាប់ដោយស្វ័យប្រវត្តិទៅបណ្តាញរបស់ម៉ាស៊ីន ឬរ៉ោតទ័រ នៅពេលដែលវាត្រូវបានបើក។

ចំណាំ:

  1. អាសយដ្ឋាន IP ដែល​បាន​កំណត់​នៅ​ទីនេះ​ត្រូវ​តែ​ដូច​គ្នា​នឹង​អាសយដ្ឋាន IP ដែល​បាន​កំណត់​ក្នុង .bashrc file នៅក្នុងផ្នែកទី 2.1 ។
  2. អាសយដ្ឋាន IP របស់មេ និង slave នីមួយៗត្រូវតែមានតែមួយ។
  3. អាសយដ្ឋាន IP មេ និង slave ត្រូវតែស្ថិតនៅក្នុងផ្នែកបណ្តាញដូចគ្នា។
  4. អ្នកត្រូវតែរង់ចាំឱ្យម៉ាស៊ីន ឬរ៉ោតទ័របញ្ជូនសញ្ញាវ៉ាយហ្វាយចេញ មុនពេលដែលមនុស្សយន្តទាសករអាចត្រូវបានបើក និងភ្ជាប់ដោយស្វ័យប្រវត្តិទៅបណ្តាញវ៉ាយហ្វាយ។
  5. បន្ទាប់ពីការកំណត់ត្រូវបានកំណត់ ប្រសិនបើមនុស្សយន្តមិនអាចភ្ជាប់ដោយស្វ័យប្រវត្តិទៅវ៉ាយហ្វាយ នៅពេលវាបើក សូមដោត និងដកកាតបណ្តាញ ហើយព្យាយាមភ្ជាប់ម្តងទៀត។

ការដំឡើងការភ្ជាប់ Wifi ដោយស្វ័យប្រវត្តិសម្រាប់ Raspberry Pi 

នីតិវិធីសម្រាប់ Raspberry Pi គឺដូចគ្នានឹង Jetson Nano ដែរ។

ការដំឡើងការភ្ជាប់ Wifi ដោយស្វ័យប្រវត្តិសម្រាប់ Jetson TX1 

ការដំឡើងនៅក្នុង Jetson TX1 គឺស្ទើរតែដូចគ្នាទៅនឹង Jetson Nano ជាមួយនឹងករណីលើកលែងមួយដែល Jetson TX1 គួរតែជ្រើសរើសឧបករណ៍ "wlan1" នៅក្នុង "Device" នៅក្នុងផ្ទាំងបញ្ជាការកំណត់បណ្តាញ។

ការរៀបចំទំនាក់ទំនងពហុភ្នាក់ងារ

ការរៀបចំការធ្វើសមកាលកម្មភ្នាក់ងារច្រើន

នៅក្នុងគម្រោងបង្កើតពហុភ្នាក់ងារ ការកំណត់ពេលធ្វើសមកាលកម្មពហុភ្នាក់ងារ គឺជាជំហានសំខាន់មួយ។ នៅក្នុងដំណើរការនៃការបង្កើតបញ្ហាជាច្រើននឹងត្រូវបានបង្កឡើងដោយសារតែពេលវេលានៃប្រព័ន្ធអសមកាលរបស់មនុស្សយន្តនីមួយៗ។ ការ​ធ្វើ​សមកាលកម្ម​ពេល​វេលា​ច្រើន​ភ្នាក់ងារ​ត្រូវ​បាន​បែង​ចែក​ជា​ពីរ​ស្ថានភាព​គឺ​ស្ថានភាព​ដែល​ទាំង​មនុស្សយន្ត​មេ​និង​ទាសករ​ត្រូវ​បាន​តភ្ជាប់​ទៅ​បណ្តាញ​និង​ស្ថានភាព​ដែល​ទាំងពីរ​ត្រូវ​បាន​ផ្តាច់​ចេញពី​បណ្តាញ។

ការតភ្ជាប់បណ្តាញមេ / ទាសករជោគជ័យ

បន្ទាប់ពីការទំនាក់ទំនងពហុភ្នាក់ងារត្រូវបានកំណត់រចនាសម្ព័ន្ធ ប្រសិនបើម៉ាស៊ីនមេ និង slave អាចភ្ជាប់បណ្តាញដោយជោគជ័យ ពួកគេនឹងធ្វើសមកាលកម្មពេលវេលាបណ្តាញដោយស្វ័យប្រវត្តិ។ ក្នុងករណីនេះ មិនតម្រូវឱ្យមានសកម្មភាពបន្ថែមទៀតដើម្បីសម្រេចបានសមកាលកម្មពេលវេលាទេ។

ការដោះស្រាយបញ្ហាការផ្តាច់បណ្តាញ 

បន្ទាប់​ពី​ការ​ទំនាក់ទំនង​ពហុភ្នាក់ងារ​ត្រូវ​បាន​កំណត់​រចនាសម្ព័ន្ធ ប្រសិនបើ​ឧបករណ៍​មេ និង​ទាសករ​មិន​អាច​ភ្ជាប់​បណ្តាញ​ដោយ​ជោគជ័យ​ទេ នោះ​វា​ចាំបាច់​ត្រូវ​ធ្វើ​សមកាលកម្ម​ពេលវេលា​ដោយដៃ។ យើងនឹងប្រើពាក្យបញ្ជាកាលបរិច្ឆេទដើម្បីបញ្ចប់ការកំណត់ពេលវេលា។

ដំបូងដំឡើងឧបករណ៍បញ្ចប់។ ពីឧបករណ៍ terminator ប្រើឧបករណ៍បំបែកបង្អួច ដើម្បីដាក់ស្ថានីយបញ្ជារបស់មេ និង slave ទៅក្នុងបង្អួចស្ថានីយដូចគ្នា (ចុចកណ្ដុរខាងស្ដាំដើម្បីកំណត់បង្អួចបំបែកមួយ ហើយចូលទៅម៉ាស៊ីនមេ និងទាសករដោយ ssh នៅក្នុងបង្អួចផ្សេងគ្នា) .

sudo apt-get install terminator # ទាញយក terminator ដើម្បីបំបែកបង្អួចស្ថានីយ 

ចុចប៊ូតុងនៅផ្នែកខាងលើខាងឆ្វេង ជ្រើសរើសជម្រើស [ផ្សាយទៅទាំងអស់]/[ផ្សាយទាំងអស់] បញ្ចូលពាក្យបញ្ជាខាងក្រោម។ បន្ទាប់មកប្រើឧបករណ៍បញ្ចប់ដើម្បីកំណត់ពេលវេលាដូចគ្នាសម្រាប់មេ និងទាសករ។

ការរៀបចំការធ្វើសមកាលកម្មពហុភ្នាក់ងារ

sudo date -s “2022-01-30 15:15:00” # ការកំណត់ពេលវេលាដោយដៃ 

កញ្ចប់ ROS ភ្នាក់ងារច្រើនប្រភេទ

ការណែនាំអំពីកញ្ចប់ ROS 

កំណត់ឈ្មោះទាសករ

n កញ្ចប់មុខងារ wheeltec_multi វាចាំបាច់ដើម្បីកំណត់ឈ្មោះតែមួយគត់សម្រាប់ slave robot នីមួយៗ ដើម្បីជៀសវាងកំហុស។ សម្រាប់អតីតample, លេខ 1 សម្រាប់ slave1 និង លេខ 2 សម្រាប់ slave2 ជាដើម។

គោលបំណងនៃការកំណត់ឈ្មោះផ្សេងៗគ្នាគឺដើម្បីដាក់ក្រុមថ្នាំងដែលកំពុងដំណើរការ និងបែងចែកពួកវាតាមចន្លោះឈ្មោះផ្សេងៗគ្នា។ សម្រាប់អតីតample, ប្រធានបទរ៉ាដារបស់ slave 1 គឺ: /slave1/scan, និង LiDAR node of slave 1 គឺ: / slave1/laser ។

រៀបចំ​កូអរដោនេ​ទាសករ

កញ្ចប់ wheeltec_multi អាចអនុវត្តទម្រង់ផ្ទាល់ខ្លួន។ នៅពេលដែលទម្រង់ផ្សេងៗគ្នាត្រូវបានទាមទារ គ្រាន់តែកែប្រែកូអរដោនេដែលចង់បានរបស់ slave robots ។ Slave_x និង slave_y គឺជាកូអរដោនេ x និង y របស់ slave ដែលមានមេជាចំណុចយោងដើម។ ផ្នែកខាងមុខនៃមេគឺជាទិសដៅវិជ្ជមាននៃកូអរដោនេ x ហើយផ្នែកខាងឆ្វេងគឺជាទិសដៅវិជ្ជមាននៃកូអរដោនេ y ។ បន្ទាប់ពីការកំណត់ត្រូវបានបញ្ចប់ TF coordinate slave1 នឹងត្រូវបានចេញជាកូអរដោនេដែលរំពឹងទុករបស់ slave ។

ប្រសិនបើមានចៅហ្វាយម្នាក់ និងទាសករពីរនាក់ ការបង្កើតដូចខាងក្រោមអាចត្រូវបានកំណត់:

  1. ការបង្កើតផ្ដេក៖ អ្នកអាចកំណត់កូអរដោនេរបស់ទាសករនៅខាងឆ្វេងទៅ៖ slave_x:0, slave_y: 0.8 និងកូអរដោនេនៃ slave នៅខាងស្តាំទៅ៖ slave_x:0, slave_y:-0.8 ។
  2. ការបង្កើតជួរឈរ៖ កូអរដោនេនៃ slave មួយអាចត្រូវបានកំណត់ទៅ: slave_x:-0.8, slave_y:0 ​​ហើយកូអរដោនេនៃ slave ផ្សេងទៀតអាចត្រូវបានកំណត់ទៅ: slave_x:-1.8, slave_y:0 ​​។
  3. ការបង្កើតត្រីកោណ៖ កូអរដោនេនៃ slave មួយអាចត្រូវបានកំណត់ទៅ: slave_x:-0.8, slave_y: 0.8 ហើយកូអរដោនេនៃ slave ផ្សេងទៀតអាចត្រូវបានកំណត់ទៅ: slave_x:-0.8, slave_y:-0.8 ។

ទម្រង់ផ្សេងទៀតអាចត្រូវបានប្ដូរតាមបំណងតាមតម្រូវការ។

ចំណាំ

ចម្ងាយដែលបានណែនាំរវាងមនុស្សយន្តទាំងពីរត្រូវបានកំណត់ទៅ 0.8 ហើយវាត្រូវបានណែនាំមិនឱ្យទាបជាង 0.6។ ចម្ងាយរវាងទាសករ និងមេត្រូវបានណែនាំអោយកំណត់នៅក្រោម 2.0។ កាន់តែឆ្ងាយវាពីមេ ល្បឿនលីនេអ៊ែររបស់ទាសករកាន់តែធំនៅពេលមេកំពុងងាក។ ដោយសារតែដែនកំណត់នៃល្បឿនអតិបរមា ល្បឿនរបស់ទាសករនឹងប្រែប្រួលប្រសិនបើវាមិនបំពេញតាមតម្រូវការ។ ការបង្កើតមនុស្សយន្តនឹងក្លាយទៅជាភាពវឹកវរ។

ការចាប់ផ្តើមនៃឋានៈទាសករ

ទីតាំងដំបូងនៃ slave គឺនៅកូអរដោនេដែលរំពឹងទុកតាមលំនាំដើម។ មុនពេលដំណើរការកម្មវិធី គ្រាន់តែដាក់ slave robot នៅជិតកូអរដោនេដែលរំពឹងទុករបស់វា ដើម្បីបញ្ចប់ការចាប់ផ្តើម។

មុខងារនេះត្រូវបានអនុវត្តដោយថ្នាំង pose_setter នៅក្នុង file ដាក់ឈ្មោះថា turn_on_wheeltec_robot.launch នៅក្នុងកញ្ចប់ wheeltec_multi ដូចបង្ហាញក្នុងរូបភាព 4-1-3 ។

កញ្ចប់ Ros ច្រើនភ្នាក់ងារ

ប្រសិនបើអ្នកប្រើចង់ប្ដូរទីតាំងដំបូងរបស់ slave តាមបំណង គាត់គ្រាន់តែត្រូវកំណត់តម្លៃ slave_x និង slave_y ដូចបង្ហាញក្នុងរូបភាព 4-1-4 ក្នុង wheeltec_slave.launch ។ តម្លៃ slave_x និង slave_y នឹងត្រូវបានបញ្ជូនទៅកាន់ turn_on_wheeltec_robot.launch ហើយបានកំណត់ទៅថ្នាំង pose_setter ។ គ្រាន់តែដាក់មនុស្សយន្តនៅក្នុងទីតាំងផ្ទាល់ខ្លួន មុនពេលដំណើរការកម្មវិធី។

កញ្ចប់ Ros ច្រើនភ្នាក់ងារ

ការកំណត់ទីតាំង 

ក្នុង​ការ​បង្កើត​ភ្នាក់ងារ​ចម្រុះ បញ្ហា​ដំបូង​ដែល​ត្រូវ​ដោះស្រាយ​គឺ​ការ​កំណត់​ទីតាំង​មេ និង​ទាសករ។ មេនឹងសាងសង់ផែនទី 2D ជាមុនសិន។ បន្ទាប់ពីបង្កើត និងរក្សាទុកផែនទី សូមដំណើរការកញ្ចប់រុករក 2D ហើយប្រើក្បួនដោះស្រាយការកំណត់ទីតាំងរបស់ Monte Carlo ដែលមានលក្ខណៈប្រែប្រួល (ការកំណត់ទីតាំង amcl) នៅក្នុងកញ្ចប់រុករក 2D ដើម្បីកំណត់ទីតាំងរបស់មេ។

ដោយសារមេ និងទាសករស្ថិតនៅក្នុងបណ្តាញតែមួយ និងចែករំលែកអ្នកគ្រប់គ្រងថ្នាំងដូចគ្នា មេបានបើកដំណើរការផែនទីពីកញ្ចប់រុករក 2D អ្នកបម្រើទាំងអស់អាចប្រើផែនទីដូចគ្នាក្រោមអ្នកគ្រប់គ្រងថ្នាំងដូចគ្នា។ ដូច្នេះទាសករមិនចាំបាច់បង្កើតផែនទីទេ។ នៅក្នុង wheeltec_slave.launch ដំណើរការ Monte Carlo positioning (amcl positioning) ពួកទាសករអាចកំណត់ទីតាំងរបស់ពួកគេដោយប្រើផែនទីដែលបង្កើតដោយមេ។

កញ្ចប់ Ros ច្រើនភ្នាក់ងារ

របៀបបង្កើតការបង្កើត និងថែរក្សាការបង្កើត 

នៅក្នុងដំណើរការនៃការបង្កើតចលនា ចលនាមេអាចត្រូវបានគ្រប់គ្រងដោយ Rviz, ក្តារចុច, ការបញ្ជាពីចម្ងាយ និងវិធីសាស្រ្តផ្សេងទៀត។ ទាសករគណនាល្បឿនរបស់វាតាមរយៈថ្នាំង slave_tf_listener ដើម្បីគ្រប់គ្រងចលនារបស់វា និងសម្រេចបាននូវគោលដៅនៃការបង្កើត។

ថ្នាំង slave_tf_listener កំណត់ល្បឿន slave ដើម្បីជៀសវាងល្បឿនលើសកំណត់ដោយការគណនាថ្នាំង ដែលនឹងបង្កឱ្យមានផលប៉ះពាល់ជាបន្តបន្ទាប់។ តម្លៃជាក់លាក់អាចត្រូវបានកែប្រែនៅក្នុង wheeltec_slave.launch ។

កញ្ចប់ Ros ច្រើនភ្នាក់ងារ

ប៉ារ៉ាម៉ែត្រពាក់ព័ន្ធនៃក្បួនដោះស្រាយការបង្កើតមានដូចខាងក្រោម៖

កញ្ចប់ Ros ច្រើនភ្នាក់ងារ

ការជៀសវាងឧបសគ្គនៅក្នុងការបង្កើត

នៅក្នុងការបង្កើតភ្នាក់ងារច្រើន មេអាចប្រើថ្នាំង move_base ដើម្បីបញ្ចប់ការជៀសវាងឧបសគ្គ។ ទោះយ៉ាងណាក៏ដោយ ការចាប់ផ្តើមនៃ slave មិនប្រើថ្នាំង move_base ទេ។ នៅចំណុចនេះ ថ្នាំង multi_avoidance ត្រូវការហៅនៅក្នុងកម្មវិធី slave ។ ថ្នាំងជៀសវាងឧបសគ្គត្រូវបានបើកតាមលំនាំដើមនៅក្នុងកញ្ចប់។ ប្រសិនបើចាំបាច់ ការជៀសវាងអាចត្រូវបានកំណត់ទៅជា "មិនពិត" ដើម្បីបិទថ្នាំងជៀសវាងឧបសគ្គ។

កញ្ចប់ Ros ច្រើនភ្នាក់ងារ

ប៉ារ៉ាម៉ែត្រពាក់ព័ន្ធមួយចំនួននៃថ្នាំងជៀសវាងឧបសគ្គត្រូវបានបង្ហាញក្នុងរូបភាពខាងក្រោម ដែល safe_distance គឺជាដែនកំណត់ចម្ងាយសុវត្ថិភាពឧបសគ្គ ហើយ ចម្ងាយគ្រោះថ្នាក់ គឺជាដែនកំណត់ចម្ងាយគ្រោះថ្នាក់។ នៅពេលដែលឧបសគ្គស្ថិតនៅក្នុងចម្ងាយសុវត្ថិភាព និងចម្ងាយគ្រោះថ្នាក់ អ្នកបម្រើនឹងកែសម្រួលទីតាំងរបស់ខ្លួនដើម្បីជៀសវាងឧបសគ្គ។ ពេល​ឧបសគ្គ​ស្ថិត​នៅ​ក្នុង​ចម្ងាយ​គ្រោះថ្នាក់ អ្នកបម្រើ​នឹង​បើក​ចេញ​ពី​ឧបសគ្គ។

កញ្ចប់ Ros ច្រើនភ្នាក់ងារ

នីតិវិធីប្រតិបត្តិការ 

បញ្ចូលពាក្យបញ្ជាប្រតិបត្តិ 

ការរៀបចំមុនពេលចាប់ផ្តើមបង្កើតភ្នាក់ងារចម្រុះ៖

  • មេ និងទាសករភ្ជាប់ទៅបណ្តាញតែមួយ ហើយរៀបចំទំនាក់ទំនងពហុភ្នាក់ងារឱ្យបានត្រឹមត្រូវ
  • មេបង្កើតផែនទី 2D ជាមុន ហើយរក្សាទុកវា។
  • មេត្រូវបានដាក់នៅចំណុចចាប់ផ្តើមនៃផែនទី ហើយទាសករត្រូវបានដាក់នៅជិតទីតាំងចាប់ផ្តើម (ទីតាំងបង្កើតទាសករលំនាំដើម)
  • បន្ទាប់ពីចូល Jetson Nano/Raspberry Pi ពីចម្ងាយ ធ្វើសមកាលកម្មពេលវេលា។

sudo date -s “2022-04-01 15:15:00” 

ជំហានទី 1៖ បើកផែនទី 2D ពីមេ។
roslaunch turn_on_wheeltec_robot navigation.launch

ជំហានទី 2៖ ដំណើរការកម្មវិធីបង្កើតពីទាសករទាំងអស់។
roslaunch wheeltec_multi wheeltec_slave.launch

ជំហានទី 3៖ បើកថ្នាំងគ្រប់គ្រងក្តារចុចពីមេ ឬប្រើយ៉យស្ទីកដើម្បីបញ្ជាពីចម្ងាយចលនាមេ។
roslaunch wheeltec_robot_rc keyboard_teleop.launch

ជំហានទី 4៖ (ជាជម្រើស) សង្កេតមើលចលនារបស់មនុស្សយន្តពី Rviz ។
rviz

ចំណាំ

  1. ត្រូវប្រាកដថាបញ្ចប់ប្រតិបត្តិការធ្វើសមកាលកម្មពេលវេលាមុនពេលដំណើរការកម្មវិធី។
  2. នៅពេលគ្រប់គ្រងមេនៃការបង្កើតពហុភ្នាក់ងារ ល្បឿនមុំមិនគួរលឿនពេកទេ។ ល្បឿនលីនេអ៊ែរដែលបានណែនាំគឺ 0.2m/s, ដឺក្រេល្បឿនមុំខាងក្រោម 0.3rad/s។ នៅពេលដែលមេកំពុងបត់ បាវមកពីម្ចាស់កាន់តែឆ្ងាយ នោះល្បឿនលីនេអ៊ែរកាន់តែធំត្រូវបានទាមទារ។ ដោយសារតែដែនកំណត់លើល្បឿនលីនេអ៊ែរ និងល្បឿនមុំនៅក្នុងកញ្ចប់ នៅពេលដែលរថយន្តទាសករមិនអាចឈានដល់ល្បឿនដែលត្រូវការ នោះការបង្កើតនឹងមានភាពវឹកវរ។ សរុបមក ល្បឿនលីនេអ៊ែរលើសអាចបំផ្លាញមនុស្សយន្តបានយ៉ាងងាយ។
  3. នៅពេលដែលចំនួន slave មានច្រើនជាងមួយ ដោយសារតែកម្រិតបញ្ជូន wifi នៅលើយន្តហោះមានកម្រិតនៃម៉ាស៊ីន ROS នោះ វាងាយនឹងបង្កឱ្យមានការពន្យាពេលដ៏សំខាន់ និងការផ្តាច់ទំនាក់ទំនងពហុភ្នាក់ងារ។ ការប្រើរ៉ោតទ័រអាចដោះស្រាយបញ្ហានេះបានយ៉ាងល្អ។
  4. ដើមឈើ TF នៃការបង្កើតពហុមនុស្សយន្ត (ទាសករ 2 នាក់) គឺ៖ rqt_tf_tree
  5. ដ្យាក្រាមទំនាក់ទំនងថ្នាំងនៃការបង្កើតពហុមនុស្សយន្ត (2 ទាសករ) គឺ៖ rqt_graph

ឯកសារ/ធនធាន

ROBOWORKS មនុស្សយន្តរ៉ូបូត Orin Nano x3 ROS [pdf] សៀវភៅណែនាំអ្នកប្រើប្រាស់
Orin Nano x3, Robofleet ROS Robot, Robofleet ROS, មនុស្សយន្ត, មនុស្សយន្ត, មនុស្សយន្ត, មនុស្សយន្ត Orin Nano x3 ROS, មនុស្សយន្ត Robofleet Orin Nano x3, Orin Nano x3 ROS Robot, Orin Nano x3

ឯកសារយោង

ទុកមតិយោបល់

អាសយដ្ឋានអ៊ីមែលរបស់អ្នកនឹងមិនត្រូវបានផ្សព្វផ្សាយទេ។ វាលដែលត្រូវការត្រូវបានសម្គាល់ *