Original Title: Localization and 2D Mapping Using Low-Cost Lidar
Source: www.utupub.fi
Disclaimer: Summary generated by AI based on the provided document. Please refer to the original paper for full scientific accuracy.

ការធ្វើមូលដ្ឋានីយកម្ម និងការបង្កើតផែនទី 2D ដោយប្រើប្រាស់ឡាស៊ែរ Lidar តម្លៃថោក

ចំណងជើងដើម៖ Localization and 2D Mapping Using Low-Cost Lidar

អ្នកនិពន្ធ៖ Yuan Zhang (University of Turku)

ឆ្នាំបោះពុម្ព៖ 2018 University of Turku

វិស័យសិក្សា៖ Embedded Computing / Robotics

១. សេចក្តីសង្ខេបប្រតិបត្តិ (Executive Summary)

បញ្ហា (The Problem)៖ និក្ខេបបទនេះមានគោលបំណងបង្កើតគំរូរថយន្តស្វ័យប្រវត្តិតម្លៃថោក ដែលមានសមត្ថភាពអាចធ្វើមូលដ្ឋានីយកម្ម និងបង្កើតផែនទី 2D ក្នុងពេលដំណាលគ្នា ព្រមទាំងអាចស្វែងរកឧបសគ្គ និងបញ្ចៀសការប៉ះទង្គិច។

វិធីសាស្ត្រ (The Methodology)៖ ការស្រាវជ្រាវនេះប្រើប្រាស់រថយន្តយន្តតូច (Redbot) បំពាក់ឧបករណ៍ចាប់សញ្ញា Lidar និងប្រព័ន្ធបញ្ជូនទិន្នន័យឥតខ្សែដើម្បីប្រមូលទិន្នន័យសម្រាប់ដំណើរការបង្កើតផែនទីក្នុងកុំព្យូទ័រ។

លទ្ធផលសំខាន់ៗ (The Verdict)៖

២. ការវិភាគលើប្រសិទ្ធភាព និងដែនកំណត់ (Performance & Constraints)

វិធីសាស្ត្រ (Method) គុណសម្បត្តិ (Pros) គុណវិបត្តិ (Cons) លទ្ធផលគន្លឹះ (Key Result)
Hector SLAM
ក្បួនដោះស្រាយ Hector SLAM (មិនតម្រូវឱ្យមានអូដូមេទ្រី/Odometry)
អាចដំណើរការបានដោយមិនត្រូវការទិន្នន័យពីកង់ (Odometry) និងស័ក្តិសមសម្រាប់ប្រព័ន្ធ Lidar ដែលមានល្បឿនស្កេនលឿន។ មិនមានសមត្ថភាពកំណត់ទីតាំងចាស់ត្រឡប់មកវិញ (Explicit loop closing) ដោយស្វ័យប្រវត្តិទេ ដែលអាចបណ្តាលឱ្យមានកំហុសបន្តិចបន្តួចនៅពេលទីតាំងធំ។ បានប្រើប្រាស់យ៉ាងជោគជ័យនៅក្នុងគំរូនេះ ក្នុងការបង្កើតផែនទី 2D ទោះបីជាមានការបញ្ជូនទិន្នន័យយឺតត្រឹមតែ ២០ ចំណុចពី Lidar ក្នុងមួយការស្កេនក៏ដោយ។
Gmapping
ក្បួនដោះស្រាយ Gmapping (ផ្អែកលើ Particle Filter)
មានប្រសិទ្ធភាពខ្ពស់ក្នុងការបង្កើតផែនទី 2D ប្រភេទ Occupancy Grid Map ដែលផ្តល់ភាពច្បាស់លាស់។ តម្រូវឱ្យមានទិន្នន័យទីតាំងពីកង់ត្រឹមត្រូវ (Odometry) ដែលធ្វើឱ្យមានភាពស្មុគស្មាញដល់ការរៀបចំផ្នែករឹង (Hardware) លើរថយន្តតូចៗ។ មិនត្រូវបានជ្រើសរើសយកមកប្រើប្រាស់ក្នុងគម្រោងនេះទេ ដោយសាររថយន្ត Redbot មិនមានប្រព័ន្ធ Odometry ដែលមានភាពសុក្រឹត។
Cartographer
ក្បួនដោះស្រាយ Cartographer (អភិវឌ្ឍដោយ Google)
អាចធ្វើការភ្ជាប់ទីតាំងឡើងវិញ (Loop closure) ក្នុងពេលជាក់ស្តែង (Real-time) និងដំណើរការបានល្អលើឧបករណ៍ដែលមានកម្លាំងម៉ាស៊ីនខ្សោយ។ តម្រូវឱ្យមានការកំណត់រចនាសម្ព័ន្ធ (Configuration) និងការសរសេរកូដស្មុគស្មាញជាង Hector SLAM ក៏ដូចជាត្រូវការថាមពលកុំព្យូទ័រច្រើនជាងបន្តិច។ ត្រូវបានលើកឡើងជាជម្រើសដ៏ល្អ ប៉ុន្តែមិនត្រូវបានអនុវត្តជាក់ស្តែងក្នុងគំរូនៃនិក្ខេបបទនេះទេ។

ការចំណាយលើធនធាន (Resource Cost)៖ ការស្រាវជ្រាវនេះត្រូវបានរចនាឡើងដោយផ្តោតលើការប្រើប្រាស់ធនធានកម្រិតទាបបំផុត និងតម្លៃថោក (Low-Cost) ដើម្បីបង្កើតជាគំរូរថយន្តស្វ័យប្រវត្តិសម្រាប់គោលបំណងសិក្សា។

៣. ការពិនិត្យសម្រាប់បរិបទកម្ពុជា/អាស៊ីអាគ្នេយ៍

ភាពលំអៀងនៃទិន្នន័យ (Data Bias)៖

ការធ្វើតេស្តនិងប្រមូលទិន្នន័យត្រូវបានអនុវត្តនៅក្នុងមន្ទីរពិសោធន៍បិទជិត ដោយប្រើប្រាស់ប្រអប់ក្រដាសតូចៗធ្វើជាឧបសគ្គ និងជញ្ជាំង ដែលមិនឆ្លុះបញ្ចាំងពីបរិស្ថានជាក់ស្តែងដ៏ស្មុគស្មាញនោះទេ។ សម្រាប់ប្រទេសកម្ពុជា ការខ្វះទិន្នន័យតេស្តក្នុងស្ថានភាពផ្លូវពិតប្រាកដ (ឧទាហរណ៍៖ ផ្លូវមានធូលី មានភ្លៀង ឬពន្លឺថ្ងៃខ្លាំង) មានន័យថាប្រព័ន្ធនេះនៅមិនទាន់អាចយកទៅប្រើប្រាស់ផ្ទាល់នៅខាងក្រៅ ឬលើដងផ្លូវសាធារណៈបាននៅឡើយទេ លុះត្រាតែមានការកែលម្អឧបករណ៍សេនស័រ។

លទ្ធភាពនៃការអនុវត្ត (Applicability)៖

ទោះបីជាគំរូនេះមានលក្ខណៈសាមញ្ញ និងប្រើប្រាស់ Hardware កម្រិតទាប ប៉ុន្តែវាជាមូលដ្ឋានគ្រឹះដ៏មានសក្តានុពលខ្ពស់សម្រាប់ការអប់រំ និងការស្រាវជ្រាវបឋមនៅប្រទេសកម្ពុជា។

សរុបមក បច្ចេកវិទ្យាតម្លៃថោកនេះ គឺជាច្រកចូលដ៏ស័ក្តិសមបំផុតសម្រាប់និស្សិត អ្នកស្រាវជ្រាវ និងក្រុមហ៊ុន Startup ក្នុងស្រុក ក្នុងការចាប់ផ្តើមអភិវឌ្ឍប្រព័ន្ធមនុស្សយន្តស្វ័យប្រវត្តិដោយខ្លួនឯង មុននឹងឈានទៅប្រើប្រាស់ឧបករណ៍ពាណិជ្ជកម្មខ្នាតធំ។

៤. ផែនការសកម្មភាពសម្រាប់និស្សិត (Actionable Roadmap)

ដើម្បីអនុវត្តតាមការសិក្សានេះ និស្សិតគួរអនុវត្តតាមជំហានខាងក្រោម៖

  1. រៀបចំឧបករណ៍ផ្នែករឹង (Hardware Setup): ស្វែងរកទិញគ្រឿងបន្លាស់តម្លៃថោកមានដូចជា Arduino Mega, SparkFun Redbot Kit, និងម៉ូឌុល XBee ពីហាងលក់គ្រឿងអេឡិចត្រូនិចក្នុងស្រុក រួចរៀបចំតភ្ជាប់សៀគ្វីតាមគំរូ (Architecture) ។ គួរពិចារណាប្រើ RPLIDAR A1 (តម្លៃប្រហែល $100) ជាជាងការប្រើ Lidar បង្វិលលើ Servo ដើម្បីទទួលបានលទ្ធផលល្អជាង។
  2. ដំឡើងប្រព័ន្ធកុំព្យូទ័រ និងកម្មវិធី (Software Environment): ដំឡើងប្រព័ន្ធប្រតិបត្តិការ Ubuntu Linux (Version 20.04 ឬថ្មីជាង) នៅលើកុំព្យូទ័រយួរដៃ រួចដំឡើង ROS Noetic ។ បន្ទាប់មក ដំឡើងកញ្ចប់ rosserial_arduino ដើម្បីឱ្យកុំព្យូទ័រអាចទាក់ទងជាមួយ Arduino បានដោយផ្ទាល់។
  3. សរសេរកូដ និងរៀបចំបណ្តាញឥតខ្សែ (Networking): កំណត់រចនាសម្ព័ន្ធម៉ូឌុល XBee តាមរយៈកម្មវិធី XCTU ដោយកំណត់ Baud Rate ឱ្យបានខ្ពស់បំផុត (យ៉ាងហោចណាស់ 115200 ជំនួសឱ្យ 57600) ដើម្បីកាត់បន្ថយការបាត់បង់ទិន្នន័យ (Data packet loss) រវាងរថយន្តនិងកុំព្យូទ័រ។
  4. អនុវត្តក្បួនដោះស្រាយ SLAM: ទាញយកនិងកំណត់រចនាសម្ព័ន្ធកញ្ចប់ hector_slam នៅក្នុង ROS Workspace។ បង្កើតឯកសារ launch file ដើម្បីកំណត់ការបំប្លែងកូអរដោនេ (tf transformation) ពីរថយន្តទៅកាន់ Lidar ឱ្យបានត្រឹមត្រូវ រួចបើកកម្មវិធី Rviz ដើម្បីមើលផែនទីដែលកំពុងបង្កើត។
  5. សាកល្បងនិងកែលម្អ (Testing & Optimization): ដំណើរការរថយន្តក្នុងល្បឿនយឺតៗ (ក្រោម 1 គីឡូម៉ែត្រ/ម៉ោង) នៅក្នុងបន្ទប់ដែលមានជញ្ជាំងនិងឧបសគ្គច្បាស់លាស់។ ធ្វើការសារ៉េមុំកាងមេកានិក (Bumper Angle) ឱ្យចាប់ឧបសគ្គបានមុនប៉ះទង្គិច ៧ សង់ទីម៉ែត្រ និងកត់ត្រាទិន្នន័យផែនទីជាទម្រង់ Geotiff ដើម្បីវិភាគកំហុស។

៥. វាក្យសព្ទបច្ចេកទេស (Technical Glossary)

ពាក្យបច្ចេកទេស ការពន្យល់ជាខេមរភាសា (Khmer Explanation) និយមន័យសាមញ្ញ (Simple Definition)
Simultaneous Localization and Mapping គឺជាក្បួនដោះស្រាយដែលអនុញ្ញាតឱ្យមនុស្សយន្តឬរថយន្តស្វ័យប្រវត្តិអាចបង្កើតផែនទីនៃបរិស្ថានដែលវាមិនធ្លាប់ស្គាល់ ព្រមទាំងអាចកំណត់ទីតាំងរបស់វានៅក្នុងផែនទីនោះក្នុងពេលតែមួយ។ វាដូចជាការដែលអ្នកដើរចូលទៅក្នុងបន្ទប់ងងឹតមួយដែលមិនធ្លាប់ស្គាល់ ហើយអ្នកប្រើដៃស្ទាបជញ្ជាំងដើម្បីគូសប្លង់បន្ទប់ក្នុងខួរក្បាល ព្រមទាំងដឹងថាខ្លួនឯងកំពុងឈរនៅត្រង់ណា។
Robot Operating System វាមិនមែនជាប្រព័ន្ធប្រតិបត្តិការ (OS) ដូច Windows ទេ ប៉ុន្តែវាជាបណ្តុំកម្មវិធី (Middleware) ដែលជួយសម្រួលដល់ការសរសេរកូដបញ្ជាមនុស្សយន្ត ដោយផ្តល់នូវឧបករណ៍ទំនាក់ទំនង និងកញ្ចប់មុខងារស្រាប់ៗសម្រាប់ឱ្យផ្នែកផ្សេងៗរបស់មនុស្សយន្តធ្វើការជាមួយគ្នា។ វាប្រៀបដូចជាអ្នកបកប្រែភាសានិងជាអ្នកសម្របសម្រួលប្រជុំ ដែលជួយឱ្យផ្នែកផ្សេងៗនៃមនុស្សយន្ត (ដូចជាកាមេរ៉ា កង់ និងសេនស័រ) អាចជជែកគ្នាបានយ៉ាងរលូន។
Lidar ជាបច្ចេកវិទ្យាប្រើប្រាស់ពន្លឺឡាស៊ែរដើម្បីវាស់ចម្ងាយពីឧបករណ៍ទៅវត្ថុផ្សេងៗ ដោយគណនារយៈពេលដែលពន្លឺបាញ់ចេញទៅប៉ះវត្ថុហើយចំណាំងផ្លាតត្រឡប់មកវិញ ដែលជួយបង្កើតជារូបភាព 2D ឬ 3D នៃបរិស្ថានជុំវិញ។ វាដំណើរការដូចជាសត្វប្រចៀវដែលបញ្ចេញសំឡេងដើម្បីស្វែងរកទីតាំងវត្ថុអញ្ចឹងដែរ ប៉ុន្តែ Lidar ប្រើប្រាស់ពន្លឺឡាស៊ែរជំនួសឱ្យសំឡេង។
Zigbee ជាពិធីការទំនាក់ទំនងឥតខ្សែ (Wireless Protocol) ដែលប្រើថាមពលទាប និងត្រូវបានរចនាឡើងសម្រាប់ការបញ្ជូនទិន្នន័យក្នុងបរិមាណតិចរវាងឧបករណ៍អេឡិចត្រូនិចផ្សេងៗក្នុងចម្ងាយជិតទៅមធ្យម។ វាស្រដៀងនឹង Bluetooth ដែរ ប៉ុន្តែវាផ្តោតលើការសន្សំសំចៃថ្មខ្លាំង និងអាចតភ្ជាប់ឧបករណ៍បានច្រើនក្នុងទម្រង់ជាបណ្តាញសំណាញ់ (Mesh Network) ដូចជាមនុស្សតម្រង់ជួរខ្សឹបប្រាប់តៗគ្នា។
Odometry គឺជាការប្រើប្រាស់ទិន្នន័យពីឧបករណ៍វាស់ចលនា (ដូចជាការវិលរបស់កង់) ដើម្បីប៉ាន់ស្មានការផ្លាស់ប្តូរទីតាំង និងចម្ងាយដែលមនុស្សយន្តបានធ្វើដំណើរធៀបនឹងទីតាំងដើមរបស់វា។ វាដូចជាការរាប់ចំនួនជំហានរបស់អ្នកពេលដើរដើម្បីស្មានថាអ្នកបានដើរឆ្ងាយប៉ុណ្ណាពីផ្ទះ។
Sensor Fusion គឺជាដំណើរការនៃការប្រមូលផ្តុំ និងគួបបញ្ចូលទិន្នន័យដែលទទួលបានពីសេនស័រច្រើនប្រភេទផ្សេងៗគ្នា ដើម្បីបង្កើតបានជាលទ្ធផលមួយដែលមានភាពជាក់លាក់ និងអាចទុកចិត្តបានជាងការប្រើសេនស័រតែមួយមុខ។ វាដូចជាការពឹងផ្អែកលើទាំងភ្នែក (មើល) និងត្រចៀក (ស្តាប់) របស់អ្នក ដើម្បីដឹងប្រាកដថាមានឡានកំពុងបើកមកក្បែរអ្នក ព្រោះបើប្រើតែភ្នែកអ្នកអាចនឹងមើលមិនឃើញបើឡានមកពីក្រោយ។
Node នៅក្នុងប្រព័ន្ធ ROS, Node នីមួយៗគឺជាដំណើរការកូដ (Process) តូចមួយដែលទទួលខុសត្រូវលើកិច្ចការតែមួយជាក់លាក់ (ឧទាហរណ៍៖ Node មួយសម្រាប់បញ្ជាកង់, Node មួយទៀតសម្រាប់អានទិន្នន័យ Lidar) ហើយពួកវាអាចទាក់ទងគ្នាទៅវិញទៅមកបានតាមរយៈ Topics។ Node ប្រៀបដូចជាបុគ្គលិកម្នាក់ៗនៅក្នុងក្រុមហ៊ុនមួយ ដែលម្នាក់ៗមានជំនាញនិងតួនាទីរៀងៗខ្លួន ប៉ុន្តែត្រូវធ្វើការងារប្រាស្រ័យទាក់ទងគ្នាដើម្បីសម្រេចការងារធំមួយ។
Occupancy grid map ជាប្រភេទផែនទីដែលប្រើប្រាស់ក្នុងប្រព័ន្ធមនុស្សយន្ត ដែលបែងចែកលំហបរិស្ថានជាក្រឡាតូចៗ (Grid) ហើយក្រឡានីមួយៗផ្ទុកតម្លៃប្រូបាប៊ីលីតេដែលបញ្ជាក់ថាមាន ឬគ្មានវត្ថុរារាំងនៅលើទីតាំងនោះ។ វាដូចជាការយកក្រដាសក្រឡាអុកមកគូសប្លង់បន្ទប់ ដោយផាត់ពណ៌ខ្មៅត្រង់ក្រឡាណាដែលមានតុទូ (មិនអាចដើរទម្លុះបាន) និងទុកពណ៌សត្រង់ក្រឡាណាដែលទទេ (អាចដើរបាន)។

៦. ប្រធានបទពាក់ព័ន្ធ (Further Reading)

អត្ថបទដែលបានបោះពុម្ពនៅលើ KhmerResearch ដែលទាក់ទងនឹងប្រធានបទនេះ៖

ប្រធានបទ និងសំណួរស្រាវជ្រាវដែលទាក់ទងនឹងឯកសារនេះ ដែលអ្នកអាចស្វែងរកបន្ថែម៖