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

លក្ខណៈបច្ចេកទេស
- ឈ្មោះផលិតផល៖ ROBOWORKS
- កំណែ៖ 20240501
- រៀបចំដោយ៖ Wayne Liu & Janette Lin
- កាលបរិច្ឆេទ៖ ថ្ងៃទី ២៩ ខែ ឧសភា ឆ្នាំ ២០២០
ព័ត៌មានអំពីផលិតផល
ROBOWORKS គឺជាប្រព័ន្ធពហុភ្នាក់ងារដែលអនុញ្ញាតឱ្យអនុវត្តក្បួនដោះស្រាយផ្សេងៗសម្រាប់ការសម្របសម្រួល និងការទំនាក់ទំនងរបស់មនុស្សយន្ត។
សំណួរគេសួរញឹកញាប់
សំណួរ៖ តើខ្ញុំគួរធ្វើដូចម្តេចប្រសិនបើមនុស្សយន្តមិនអាចភ្ជាប់ប្រព័ន្ធ Wifi ដោយស្វ័យប្រវត្តិ?
ចម្លើយ៖ ប្រសិនបើមនុស្សយន្តបរាជ័យក្នុងការតភ្ជាប់ដោយស្វ័យប្រវត្តិ សូមសាកល្បងដកដោត និងបញ្ចូលកាតបណ្តាញឡើងវិញ ហើយព្យាយាមភ្ជាប់ម្តងទៀត។
សង្ខេប
ឯកសារនេះពន្យល់ជាចម្បងអំពីការប្រើប្រាស់កញ្ចប់មុខងារបង្កើតមនុស្សយន្តច្រើននាក់ដែលមានឈ្មោះថា wheeltec_multi។
ឯកសារនេះចែកចេញជាបួនផ្នែក៖
- ផ្នែកទីមួយគឺសំខាន់អំពីការណែនាំនៃវិធីសាស្ត្របង្កើតមនុស្សយន្តច្រើនប្រភេទ។
- ផ្នែកទីពីរពិពណ៌នាជាចម្បងអំពីការកំណត់ទំនាក់ទំនងពហុម៉ាស៊ីនរបស់ ROS រួមទាំងការទំនាក់ទំនងពហុម៉ាស៊ីនរបស់ ROS និងបញ្ហាដែលអាចជួបប្រទះនៅក្នុងដំណើរការនៃការទំនាក់ទំនង ROS ។
- ផ្នែកទីបីពិពណ៌នាជាចម្បងនូវជំហានប្រតិបត្តិការនៃការធ្វើសមកាលកម្មពេលវេលាច្រើនម៉ាស៊ីន។
- ផ្នែកទី 4 ពន្យល់ពីការប្រើប្រាស់ជាក់លាក់នៃកញ្ចប់មុខងារបង្កើតម៉ាស៊ីនច្រើន។
គោលបំណងនៃឯកសារនេះគឺការណែនាំអំពីប្រព័ន្ធមនុស្សយន្តពហុភ្នាក់ងារ និងអនុញ្ញាតឱ្យអ្នកប្រើប្រាស់ចាប់ផ្តើមគម្រោងបង្កើតមនុស្សយន្តច្រើនមុខយ៉ាងឆាប់រហ័ស។
ការណែនាំអំពី ALGORITHMS ភ្នាក់ងារចម្រុះ
ក្បួនដោះស្រាយការបង្កើតភ្នាក់ងារចម្រុះ
កញ្ចប់ ROS នេះបង្ហាញពីបញ្ហាធម្មតានៃភ្នាក់ងារពហុមុខងារក្នុងការគ្រប់គ្រងរួមគ្នាកំឡុងពេលបង្កើតដ្រាយ។ ការបង្រៀននេះដាក់មូលដ្ឋានគ្រឹះសម្រាប់ការអភិវឌ្ឍន៍នាពេលអនាគតលើប្រធានបទនេះ។ ក្បួនដោះស្រាយការបង្កើត សំដៅលើក្បួនដោះស្រាយដែលគ្រប់គ្រងភ្នាក់ងារជាច្រើនដើម្បីបង្កើតទម្រង់ជាក់លាក់មួយ ដើម្បីអនុវត្តកិច្ចការមួយ។ កិច្ចសហប្រតិបត្តិការសំដៅលើកិច្ចសហប្រតិបត្តិការរវាងភ្នាក់ងារជាច្រើនដោយប្រើទំនាក់ទំនងកម្រិតជាក់លាក់មួយដើម្បីបំពេញកិច្ចការមួយ។ យកដ្រាយបង្កើតមនុស្សយន្តច្រើនជាអតីត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 នេះក្នុងនាមជាទាសករ។
ជម្រើសទី ១៖
បណ្តាញ wifi ក្នុងស្រុកត្រូវបានផ្តល់ដោយរ៉ោតទ័រភាគីទីបីជាមជ្ឈមណ្ឌលបញ្ជូនព័ត៌មាន។ មនុស្សយន្តទាំងអស់ត្រូវបានភ្ជាប់ទៅរ៉ោតទ័រដូចគ្នា។ រ៉ោតទ័រក៏អាចប្រើបានដោយមិនចាំបាច់ភ្ជាប់អ៊ីនធឺណិត។ ជ្រើសរើសមនុស្សយន្តមួយក្នុងចំណោមមនុស្សយន្តជាមេ ហើយដំណើរការកម្មវិធីគ្រប់គ្រងថ្នាំងមេ។ មនុស្សយន្តផ្សេងទៀតត្រូវបានកំណត់ថាជាទាសករ និងដំណើរការអ្នកគ្រប់គ្រងថ្នាំងមេពីមេ។
ការសម្រេចចិត្តលើជម្រើសមួយណាដែលត្រូវជ្រើសរើសអាស្រ័យលើតម្រូវការគម្រោងរបស់អ្នក។ ប្រសិនបើចំនួនមនុស្សយន្តដែលត្រូវការទំនាក់ទំនងមិនមានច្រើនទេ ជម្រើសទី 1 ត្រូវបានណែនាំ ព្រោះវាសន្សំសំចៃថ្លៃដើម និងងាយស្រួលរៀបចំ។ នៅពេលដែលចំនួនមនុស្សយន្តមានបរិមាណច្រើន ជម្រើសទី 2 ត្រូវបានណែនាំ។ ឧបសគ្គលើថាមពលកុំព្យូទ័រនៃការគ្រប់គ្រងមេ ROS និងកម្រិតបញ្ជូន wifi នៅលើយន្តហោះដែលមានកម្រិតអាចបណ្តាលឱ្យមានការពន្យារពេល និងការរំខានបណ្តាញយ៉ាងងាយស្រួល។ រ៉ោតទ័រអាចដោះស្រាយបញ្ហាទាំងនេះបានយ៉ាងងាយស្រួល។ សូមចំណាំថា នៅពេលដំណើរការទំនាក់ទំនងពហុភ្នាក់ងារ ប្រសិនបើម៉ាស៊ីននិម្មិតត្រូវបានប្រើជា ROS slave នោះ របៀបបណ្តាញរបស់វាត្រូវកំណត់ទៅជារបៀបស្ពាន។
កំណត់អថេរបរិស្ថាន Master/Slave
បន្ទាប់ពី ROS masters ទាំងអស់ស្ថិតនៅក្នុងបណ្តាញតែមួយ អថេរបរិស្ថានសម្រាប់ការទំនាក់ទំនងពហុភ្នាក់ងារចាំបាច់ត្រូវកំណត់។ អថេរបរិស្ថាននេះត្រូវបានកំណត់ក្នុងឯកសារ .bashrc ក្នុងថតមេ។ ដំណើរការពាក្យបញ្ជា gedit ~/.bashrc ដើម្បីបើកដំណើរការវា។ សូមចំណាំថា ទាំងឯកសារ .bashrc របស់មេ និង slave ក្នុងការទំនាក់ទំនងពហុភ្នាក់ងារ ចាំបាច់ត្រូវកំណត់រចនាសម្ព័ន្ធ។ អ្វីដែលត្រូវផ្លាស់ប្តូរគឺអាសយដ្ឋាន IP នៅចុងបញ្ចប់នៃឯកសារ។ បន្ទាត់ពីរគឺ ROS_MASTER_URI និង ROS_HOSTNAME ដូចបង្ហាញក្នុងរូបភាព 2-1-4។ ROS_MASTER_URI និង ROS_HOSTNAME នៃម៉ាស៊ីន ROS គឺជា IP មូលដ្ឋានទាំងពីរ។ ROS_MASTER_URI នៅក្នុងឯកសារ ROS slave .bashrc ចាំបាច់ត្រូវប្តូរទៅអាសយដ្ឋាន IP របស់ម៉ាស៊ីន ខណៈ ROS_HOSTNAME នៅតែជាអាសយដ្ឋាន IP មូលដ្ឋាន។
ការទំនាក់ទំនងពហុម៉ាស៊ីនរបស់ ROS មិនត្រូវបានរារាំងដោយកំណែចេញផ្សាយរបស់ ROS ទេ។ នៅក្នុងដំណើរការនៃការទំនាក់ទំនងពហុម៉ាស៊ីន មនុស្សម្នាក់គួរតែដឹងដូចខាងក្រោម:
- ប្រតិបត្តិការរបស់កម្មវិធី ROS slave អាស្រ័យលើកម្មវិធីមេ ROS របស់ឧបករណ៍មេ ROS ។ កម្មវិធីមេ ROS ត្រូវតែបើកដំណើរការដំបូងនៅលើឧបករណ៍មេ មុនពេលដំណើរការកម្មវិធី slave នៅលើឧបករណ៍ slave ។
- អាសយដ្ឋាន IP របស់ម៉ាស៊ីនមេ និងម៉ាស៊ីនបម្រើក្នុងការទំនាក់ទំនងពហុម៉ាស៊ីនត្រូវតែស្ថិតនៅក្នុងបណ្តាញតែមួយ។ នេះមានន័យថាអាសយដ្ឋាន IP និងរបាំងបណ្តាញរងស្ថិតនៅក្រោមបណ្តាញតែមួយ។
- ROS_HOSTNAME នៅក្នុងឯកសារកំណត់រចនាសម្ព័ន្ធបរិស្ថាន .bashrc មិនត្រូវបានណែនាំអោយប្រើ localhost ទេ។ វាត្រូវបានណែនាំឱ្យប្រើអាសយដ្ឋាន IP ជាក់លាក់។
- ក្នុងករណីដែលអាសយដ្ឋាន IP របស់ទាសករមិនត្រូវបានកំណត់ត្រឹមត្រូវ ឧបករណ៍ slave នៅតែអាចចូលប្រើមេ ROS ប៉ុន្តែមិនអាចបញ្ចូលព័ត៌មានគ្រប់គ្រងបានទេ។
- ប្រសិនបើម៉ាស៊ីននិម្មិតចូលរួមក្នុងទំនាក់ទំនងពហុភ្នាក់ងារ របៀបបណ្តាញរបស់វាត្រូវកំណត់ទៅជារបៀបស្ពាន។ IP ឋិតិវន្តមិនអាចត្រូវបានជ្រើសរើសសម្រាប់ការភ្ជាប់បណ្តាញ។
- ការទំនាក់ទំនងច្រើនម៉ាស៊ីនមិនអាចទេ។ view ឬជាវប្រធានបទនៃប្រភេទទិន្នន័យសារដែលមិនមាននៅក្នុងមូលដ្ឋាន។
- អ្នកអាចប្រើការបង្ហាញសាកល្បង Little Turtle ដើម្បីផ្ទៀងផ្ទាត់ថាតើការប្រាស្រ័យទាក់ទងរវាងមនុស្សយន្តជោគជ័យឬអត់៖
- a. រត់ចេញពីមេ
- កំណត់ឡើងវិញ # បើកដំណើរការសេវាកម្ម ROS
- អណ្តើក rostrum turtlesim_node #launch turtles interface
- b. រត់ចេញពីទាសករ
- ដំណើរការអណ្តើកឡើងវិញ turtle_teleop_key #បើកដំណើរការថ្នាំងគ្រប់គ្រងក្តារចុចសម្រាប់អណ្តើក
- a. រត់ចេញពីមេ
ប្រសិនបើអ្នកអាចរៀបចំចលនាអណ្តើកចេញពីក្តារចុចនៅលើ slave វាមានន័យថាទំនាក់ទំនងមេ/ទាសករត្រូវបានបង្កើតឡើងដោយជោគជ័យ។
ការតភ្ជាប់វ៉ាយហ្វាយដោយស្វ័យប្រវត្តិនៅក្នុង ROS
នីតិវិធីខាងក្រោមពន្យល់ពីរបៀបកំណត់មនុស្សយន្តដើម្បីភ្ជាប់ដោយស្វ័យប្រវត្តិទៅបណ្តាញម៉ាស៊ីន ឬបណ្តាញរ៉ោតទ័រ។
ការដំឡើងការតភ្ជាប់វ៉ាយហ្វាយដោយស្វ័យប្រវត្តិសម្រាប់ Jetson Nano
- ភ្ជាប់ Jetson Nano តាមរយៈឧបករណ៍ពីចម្ងាយ VNC ឬដោយផ្ទាល់ទៅអេក្រង់កុំព្យូទ័រ។ ចុចលើរូបតំណាង wifi នៅជ្រុងខាងស្តាំខាងលើ បន្ទាប់មកចុច “Edit Connections..”

- ចុចប៊ូតុង + ក្នុងការតភ្ជាប់បណ្តាញ៖

- នៅក្រោមបង្អួច "ជ្រើសរើសប្រភេទការតភ្ជាប់" ចុចលើម៉ឺនុយទម្លាក់ចុះហើយចុចប៊ូតុង "បង្កើត ... ":

- នៅក្នុងផ្ទាំងបញ្ជា ចុចជម្រើស វ៉ាយហ្វាយ។ បញ្ចូលឈ្មោះវ៉ាយហ្វាយដើម្បីភ្ជាប់ក្នុង "ឈ្មោះការតភ្ជាប់" និងវាល SSID ។ ជ្រើសរើស "អតិថិជន" នៅក្នុងម៉ឺនុយទម្លាក់ចុះ "របៀប" ហើយជ្រើសរើស "wlan0" នៅក្នុងម៉ឺនុយទម្លាក់ចុះ "ឧបករណ៍" ។

- នៅក្នុងផ្ទាំងបញ្ជាចុចជម្រើស "ទូទៅ" ហើយពិនិត្យមើល "ភ្ជាប់ដោយស្វ័យប្រវត្តិទៅបណ្តាញនេះ ... "។ កំណត់អាទិភាពការតភ្ជាប់ទៅ 1 នៅក្នុងជម្រើស "អាទិភាពការតភ្ជាប់សម្រាប់ការធ្វើឱ្យសកម្មដោយស្វ័យប្រវត្តិ" ។ ពិនិត្យមើលជម្រើស "អ្នកប្រើប្រាស់ទាំងអស់អាចភ្ជាប់ទៅបណ្តាញនេះ"។ នៅពេលជម្រើសត្រូវបានកំណត់ទៅ 0 នៅក្នុង "អាទិភាពការតភ្ជាប់សម្រាប់ការធ្វើឱ្យសកម្មដោយស្វ័យប្រវត្តិ" សម្រាប់ wifi ផ្សេងទៀត នេះមានន័យថានេះគឺជាបណ្តាញ wifi ដែលពេញចិត្តកាលពីអតីតកាល។

- ចុចលើជម្រើស "Wi-Fi Security" នៅក្នុងផ្ទាំងបញ្ជា។ ជ្រើសរើស "WPA & WPA2 ផ្ទាល់ខ្លួន" នៅក្នុងវាល "សុវត្ថិភាព" ។ បន្ទាប់មកបញ្ចូលពាក្យសម្ងាត់វ៉ាយហ្វាយនៅក្នុងវាល "ពាក្យសម្ងាត់" ។

ចំណាំ៖ ប្រសិនបើមនុស្សយន្តមិនអាចភ្ជាប់ដោយស្វ័យប្រវត្តិទៅបណ្តាញ wifi បន្ទាប់ពីចាប់ផ្តើមនៅពេលដែលការកំណត់អាទិភាព wifi ដល់ 0 វាអាចបណ្តាលមកពីបញ្ហានៃសញ្ញា wifi ខ្សោយ។ ដើម្បីជៀសវាងបញ្ហានេះ អ្នកអាចជ្រើសរើសលុបជម្រើស wifi ទាំងអស់ដែលបានភ្ជាប់ពីមុន។ រក្សាទុកតែបណ្តាញ wifi ដែលបង្កើតឡើងដោយម៉ាស៊ីន ឬរ៉ោតទ័រប៉ុណ្ណោះ។ ចុចលើជម្រើស "ការកំណត់ IPv4" នៅក្នុងផ្ទាំងបញ្ជាការកំណត់បណ្តាញ។ ជ្រើសរើសជម្រើស "សៀវភៅដៃ" នៅក្នុងវាល "វិធីសាស្រ្ត" ។ បន្ទាប់មកចុច "បន្ថែម" បំពេញអាសយដ្ឋាន IP របស់ម៉ាស៊ីនបម្រើក្នុងវាល "អាសយដ្ឋាន" ។ បំពេញ "24" នៅក្នុងវាល "Netmask" ។ បំពេញផ្នែកបណ្តាញ IP នៅក្នុង "ច្រកផ្លូវ" ។ ផ្លាស់ប្តូរលេខបីខ្ទង់ចុងក្រោយនៃផ្នែកបណ្តាញ IP ទៅជា "1" ។ គោលបំណងសំខាន់នៃជំហាននេះគឺដើម្បីជួសជុលអាសយដ្ឋាន IP ។ បន្ទាប់ពីនេះត្រូវបានបញ្ចប់ជាលើកដំបូង អាសយដ្ឋាន IP នឹងនៅតែមិនផ្លាស់ប្តូរនៅពេលភ្ជាប់ទៅ WIFI ដូចគ្នាជាបន្តបន្ទាប់។
បន្ទាប់ពីការកំណត់ទាំងអស់ត្រូវបានតំឡើងសូមចុច "រក្សាទុក" ដើម្បីរក្សាទុកការកំណត់។ បន្ទាប់ពីការសន្សំបានជោគជ័យ មនុស្សយន្តនឹងភ្ជាប់ដោយស្វ័យប្រវត្តិទៅបណ្តាញរបស់ម៉ាស៊ីន ឬរ៉ោតទ័រ នៅពេលដែលវាត្រូវបានបើក។
ចំណាំ៖
- អាសយដ្ឋាន IP ដែលកំណត់នៅទីនេះត្រូវតែដូចគ្នាទៅនឹងអាសយដ្ឋាន IP ដែលបានកំណត់នៅក្នុងឯកសារ .bashrc នៅក្នុងផ្នែក 2.1 ។
- អាសយដ្ឋាន IP របស់មេ និង slave នីមួយៗត្រូវតែមានតែមួយ។
- អាសយដ្ឋាន IP មេ និង slave ត្រូវតែស្ថិតនៅក្នុងផ្នែកបណ្តាញដូចគ្នា។
- អ្នកត្រូវតែរង់ចាំឱ្យម៉ាស៊ីន ឬរ៉ោតទ័របញ្ជូនសញ្ញាវ៉ាយហ្វាយចេញ មុនពេលដែលមនុស្សយន្តទាសករអាចត្រូវបានបើក និងភ្ជាប់ដោយស្វ័យប្រវត្តិទៅបណ្តាញវ៉ាយហ្វាយ។
- បន្ទាប់ពីការកំណត់ត្រូវបានកំណត់ប្រសិនបើមនុស្សយន្តមិនអាចភ្ជាប់ដោយស្វ័យប្រវត្តិទៅនឹង WiFi នៅពេលដែលវាត្រូវបានបើក សូមដោត និងដកកាតបណ្ដាញចេញ ហើយព្យាយាមភ្ជាប់ម្ដងទៀត។
ការដំឡើងការតភ្ជាប់វ៉ាយហ្វាយដោយស្វ័យប្រវត្តិសម្រាប់ Raspberry Pi
នីតិវិធីសម្រាប់ Raspberry Pi គឺដូចគ្នានឹង Jetson Nano ដែរ។
ការដំឡើងការតភ្ជាប់វ៉ាយហ្វាយដោយស្វ័យប្រវត្តិសម្រាប់ 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
កំណត់ឈ្មោះទាសករ
នៅក្នុងកញ្ចប់មុខងារ wheeltec_multi ចាំបាច់ត្រូវកំណត់ឈ្មោះតែមួយគត់សម្រាប់ slave robot នីមួយៗ ដើម្បីជៀសវាងកំហុស។ សម្រាប់អតីតample, លេខ 1 សម្រាប់ slave1 និង លេខ 2 សម្រាប់ slave2។ សម្រាប់អតីតample ប្រធានបទរ៉ាដារបស់ slave 1 គឺ/slave1/scan ហើយថ្នាំង LiDAR នៃ slave 1 គឺ/slave1/laser។
រៀបចំកូអរដោនេទាសករ
កញ្ចប់ wheeltec_multi អាចអនុវត្តទម្រង់ផ្ទាល់ខ្លួន។ នៅពេលដែលទម្រង់ផ្សេងៗគ្នាត្រូវបានទាមទារ គ្រាន់តែកែប្រែកូអរដោនេដែលចង់បានរបស់ slave robots ។ Slave_x និង slave_y គឺជាកូអរដោនេ x និង y របស់ slave ដែលមានមេជាចំណុចយោងដើម។ ផ្នែកខាងមុខនៃមេគឺជាទិសដៅវិជ្ជមាននៃកូអរដោនេ x ហើយផ្នែកខាងឆ្វេងគឺជាទិសដៅវិជ្ជមាននៃកូអរដោនេ y ។ បន្ទាប់ពីការកំណត់ត្រូវបានបញ្ចប់ TF coordinate slave1 នឹងត្រូវបានចេញជាកូអរដោនេដែលរំពឹងទុករបស់ slave ។ ប្រសិនបើមានចៅហ្វាយម្នាក់ និងទាសករពីរនាក់ ការបង្កើតដូចខាងក្រោមអាចត្រូវបានកំណត់:
- ការបង្កើតផ្តេក៖ អ្នកអាចកំណត់កូអរដោនេនៃ slave នៅខាងឆ្វេងទៅជា slave_x:0, slave_y: 0.8 និងកូអរដោនេនៃ slave នៅខាងស្តាំទៅ slave_x:0, slave_y:-0.8 ។
- ការបង្កើតជួរឈរ៖ កូអរដោនេនៃ slave មួយអាចត្រូវបានកំណត់ទៅ: slave_x:-0.8, slave_y:0 ហើយកូអរដោនេនៃ slave ផ្សេងទៀតអាចត្រូវបានកំណត់ទៅ: slave_x:-1.8, slave_y:0 ។
- ការបង្កើតត្រីកោណ៖ កូអរដោនេនៃ 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 នៅក្នុងឯកសារដែលមានឈ្មោះថា turn_on_wheeltec_robot.launch នៅក្នុងកញ្ចប់ wheeltec_multi ដូចបង្ហាញក្នុងរូបភាព 4-1-3 ។

ប្រសិនបើអ្នកប្រើចង់ប្ដូរទីតាំងដំបូងរបស់ slave តាមបំណង គាត់គ្រាន់តែត្រូវកំណត់តម្លៃ slave_x និង slave_y ដូចបង្ហាញក្នុងរូបភាព 4-1-4 ក្នុង wheeltec_slave.launch ។ តម្លៃ slave_x និង slave_y នឹងត្រូវបានបញ្ជូនទៅកាន់ turn_on_wheeltec_robot.launch ហើយបានកំណត់ទៅថ្នាំង pose_setter ។ គ្រាន់តែដាក់មនុស្សយន្តនៅក្នុងទីតាំងផ្ទាល់ខ្លួន មុនពេលដំណើរការកម្មវិធី។
ការកំណត់ទីតាំង
នៅក្នុងការបង្កើតភ្នាក់ងារចម្រុះ បញ្ហាដំបូងដែលត្រូវដោះស្រាយគឺ ការកំណត់ទីតាំងរបស់មេ និងទាសករ។ មេនឹងសាងសង់ផែនទី 2D ជាមុនសិន។ បន្ទាប់ពីបង្កើត និងរក្សាទុកផែនទី សូមដំណើរការកញ្ចប់រុករក 2D ហើយប្រើក្បួនដោះស្រាយការកំណត់ទីតាំងរបស់ Monte Carlo ដែលប្រែប្រួល (ការកំណត់ទីតាំង amcl) នៅក្នុងកញ្ចប់រុករក 2D ដើម្បីកំណត់ទីតាំងរបស់មេ។ ដោយសារមេ និងទាសករស្ថិតនៅក្នុងបណ្តាញតែមួយ ហើយចែករំលែកអ្នកគ្រប់គ្រងថ្នាំងដូចគ្នា មេបានបើកដំណើរការផែនទីពីកញ្ចប់រុករក 2D អ្នកបម្រើទាំងអស់អាចប្រើផែនទីដូចគ្នាក្រោមអ្នកគ្រប់គ្រងថ្នាំងដូចគ្នា។ ដូច្នេះទាសករមិនចាំបាច់បង្កើតផែនទីទេ។ នៅក្នុង wheeltec_slave.launch ដំណើរការ Monte Carlo positioning (amcl positioning) ពួកទាសករអាចកំណត់ទីតាំងរបស់ពួកគេដោយប្រើផែនទីដែលបង្កើតដោយមេ។
របៀបបង្កើតការបង្កើត និងថែរក្សាការបង្កើត
នៅក្នុងដំណើរការនៃការបង្កើតចលនា ចលនាមេអាចត្រូវបានគ្រប់គ្រងដោយ Rviz ក្តារចុច ការបញ្ជាពីចម្ងាយ និងវិធីសាស្រ្តផ្សេងទៀត។ ទាសករគណនាល្បឿនរបស់វាតាមរយៈថ្នាំង slave_tf_listener ដើម្បីគ្រប់គ្រងចលនារបស់វា និងសម្រេចបាននូវគោលដៅនៃការបង្កើត។ ថ្នាំង slave_tf_listener កំណត់ល្បឿន slave ដើម្បីជៀសវាងល្បឿនលើសកំណត់ដោយការគណនាថ្នាំង ដែលនឹងបង្កឱ្យមានផលប៉ះពាល់ជាបន្តបន្ទាប់។ តម្លៃជាក់លាក់អាចត្រូវបានកែប្រែនៅក្នុង wheeltec_slave.launch ។
ប៉ារ៉ាម៉ែត្រពាក់ព័ន្ធនៃក្បួនដោះស្រាយការបង្កើតមានដូចខាងក្រោម៖ 
ព័ត៌មានអំពីការជៀសវាងឧបសគ្គ
នៅក្នុងការបង្កើតភ្នាក់ងារច្រើន មេអាចប្រើថ្នាំង move_base ដើម្បីបញ្ចប់ការជៀសវាងឧបសគ្គ។ ទោះយ៉ាងណាក៏ដោយ ការចាប់ផ្តើមនៃ slave មិនប្រើថ្នាំង move_base ទេ។ នៅចំណុចនេះ ថ្នាំង multi_avoidance ត្រូវការហៅនៅក្នុងកម្មវិធី slave ។ ថ្នាំងជៀសវាងឧបសគ្គត្រូវបានបើកតាមលំនាំដើមនៅក្នុងកញ្ចប់។ ប្រសិនបើចាំបាច់ ការជៀសវាងអាចត្រូវបានកំណត់ទៅជា "មិនពិត" ដើម្បីបិទថ្នាំងជៀសវាងឧបសគ្គ។ 
ប៉ារ៉ាម៉ែត្រពាក់ព័ន្ធមួយចំនួននៃថ្នាំងជៀសវាងឧបសគ្គត្រូវបានបង្ហាញក្នុងរូបភាពខាងក្រោម ដែលសុវត្ថិភាព_ចម្ងាយគឺជាដែនកំណត់ចម្ងាយសុវត្ថិភាពឧបសគ្គ ហើយចម្ងាយគ្រោះថ្នាក់គឺជាដែនកំណត់ចម្ងាយគ្រោះថ្នាក់។ នៅពេលដែលឧបសគ្គស្ថិតនៅក្នុងចម្ងាយសុវត្ថិភាព និងចម្ងាយគ្រោះថ្នាក់ បាវធ្វើការកែតម្រូវទីតាំងរបស់ខ្លួនដើម្បីជៀសវាងឧបសគ្គ។ ពេលដែលឧបសគ្គស្ថិតក្នុងគ្រោះថ្នាក់ អ្នកបម្រើនឹងបើកចេញពីឧបសគ្គ។
នីតិវិធីប្រតិបត្តិការ
បញ្ចូលពាក្យបញ្ជាប្រតិបត្តិ
ការរៀបចំមុនពេលចាប់ផ្តើមបង្កើតភ្នាក់ងារចម្រុះ៖
- មេ និងទាសករភ្ជាប់ទៅបណ្តាញតែមួយ ហើយរៀបចំទំនាក់ទំនងពហុភ្នាក់ងារឱ្យបានត្រឹមត្រូវ
- មេបង្កើតផែនទី 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៖ បើកថ្នាំងបញ្ជាក្តារចុចពីមេ ឬប្រើយ៉យស្ទីក ដើម្បីបញ្ជាពីចម្ងាយចលនាមេ។
ចាប់ផ្ដើម wheeltec_robot_rc keyboard_teleop.launch
- ជំហានទី 4៖ (ជាជម្រើស) សង្កេតមើលចលនារបស់មនុស្សយន្តពី Rviz ។
rviz
ចំណាំ៖
- ត្រូវប្រាកដថាបញ្ចប់ប្រតិបត្តិការធ្វើសមកាលកម្មពេលវេលាមុនពេលដំណើរការកម្មវិធី។
- នៅពេលគ្រប់គ្រងមេនៃការបង្កើតពហុភ្នាក់ងារ ល្បឿនមុំមិនគួរលឿនពេកទេ។ ល្បឿនលីនេអ៊ែរដែលបានណែនាំគឺ 0.2m/s ដឺក្រេល្បឿនមុំខាងក្រោម 0.3rad/s។ នៅពេលដែលមេកំពុងបត់ បាវមកពីម្ចាស់កាន់តែឆ្ងាយ នោះល្បឿនលីនេអ៊ែរកាន់តែធំត្រូវបានទាមទារ។ ដោយសារតែដែនកំណត់លើល្បឿនលីនេអ៊ែរ និងល្បឿនមុំនៅក្នុងកញ្ចប់ នៅពេលដែលរថយន្តទាសករមិនអាចឈានដល់ល្បឿនដែលត្រូវការ នោះការបង្កើតនឹងមានភាពវឹកវរ។ សរុបមក ល្បឿនលីនេអ៊ែរលើសអាចបំផ្លាញមនុស្សយន្តបានយ៉ាងងាយ។
- នៅពេលដែលចំនួនទាសករមានច្រើនជាងមួយ ដោយសារតែកម្រិតបញ្ជូន wifi នៅលើយន្តហោះមានកម្រិតនៃម៉ាស៊ីន ROS វាងាយស្រួលក្នុងការបង្កការពន្យារពេលដ៏សំខាន់ និងការផ្តាច់ទំនាក់ទំនងពហុភ្នាក់ងារ។ ការប្រើរ៉ោតទ័រអាចដោះស្រាយបញ្ហានេះបានយ៉ាងល្អ។
- ដើមឈើ TF នៃការបង្កើតពហុមនុស្សយន្ត (ទាសករ 2 នាក់) គឺ៖ rqt_tf_tree
- ដ្យាក្រាមទំនាក់ទំនងថ្នាំងនៃការបង្កើតពហុមនុស្សយន្ត (2 ទាសករ) គឺ៖ rqt_graph
ឯកសារ/ធនធាន
![]() |
ROBOWORKS Robofleet ក្បួនដោះស្រាយភ្នាក់ងារចម្រុះ [pdf] សៀវភៅណែនាំអ្នកប្រើប្រាស់ Robofleet Multi Agent Algorithms, Robofleet, Multi Agent Algorithms, Agent Algorithms, Algorithms |




