21-یک ربات برای بررسی عملی روشهای هوش مصنوعی: کار میکروموس
1- مقدمه
به دلیل بررسی عملی روشهای هوش مصنوعی، تعیین مکان و هدایت، ربات متحرک اتوماتیک در مؤسسهی اتوماسیون و انفورماتیک، ساخته شده است. این ربات را در شکل 1 میتوانیم مشاهده نماییم. این ربات میتواند در زمینهی انجام وظایف میکروموس مورد استفاده قرار گیرد. قسمت اعظم این مقاله بر روی طراحی رباتهای اتوماتیک کوچک برای بررسی عملی روشهای هوش مصنوعی به خصوص در کار میکروموس تمرکز یافته است.
1- ربات میکروموس
در یک نگاه ساختمان ربات با قیمت بسیار پایینی ساخته شده است. اصل آن بر روی دو موتور راهانداز پلهایی بنا نهاده شده است. آنها، حرکتهای رو به جلو، رو به عقب و هدایت برمبنای اصول کنترلی را تأمین مینمایند. جهت تغییر حرکت به وسیلهی سرعت چرخش چرخهای مختلف تشخیص داده میشود. در ربات دو گوی وجود دارد که از واژگون شدن آن جلوگیری مینماید. مهمترین پارامترهای فنی ربات به صورت خلاصه در جدول شمارهی 1 آمده است.
این ربات به چهار قسمت تقسیم شده است: برد CPU اصلی، برد حسگرها، برد کنترل موتور و برد عملیاتی با نمایشگر LCD. بلوک دیاگرام میکروموس در شکل 2 آمده است. منبع تغذیهی تمامی بردها به وسیلهی 4 باتری Li-Ion CGR 18650/4.2V که به صورت متوالی به هم وصل شدهاند تأمین میگردد. ولتاژ کلی ربات 16.8 ولت است. ولتاژ بالا برای تأمین و تغذیهی موتورها به خاطر رسیدن به گشتاور ژیروسکوپی بالاتر به کار برده میشود.
3-ذخیرهسازی Maze
یکی از مفیدترین ویژگیهای Maze اندازهی آن میباشد. برای یک Maze به اندازهی کامل، باید 16 ردیف در 16 ردیف ستون داشته باشیم که به یک سلول 256 تایی برسیم. بنابراین برای ذخیرهسازی مقادیر فاصله برای یک Maze کامل به 256 بایت فضا احتیاج داریم. یک بایت برای نمایش وجود یا عدم وجود یک دیواره در Maze میتواند به کار برده شود. 4 بیت اول برای ارائهی دیوارهها به کار برده میشوند. بایت سلولی رایج به شکل زیر است:
هنگامی که ما از مقدار بایت دودویی برای هر یک از موقعیتهای دیوار استفاده میکنیم، ما دارای شمال=1، شرق=2، جنوب=4 و غرب=8 هستیم. حال هر ترکیبی از دیوارهها در یک سلول به وسیلهی یک شماره در محدودهی صفر تا 15 ارائه میگردد. به عنوان مثال اگر برخی از سلولها دارای دیوارهای بر روی موقعیت غربی و شرقی باشند این سلول به وسیلهی مقدار 10 ارائه میگردد که به صورت دودویی 00001010 میباشد.
هر دیوارهی داخلی به وسیلهی 2 سلول تقسیم شده است؛ بنابراین ما مقدار دیواره را برای یک سلول به روز رسانی میکنیم. سپس باید مقدار دیواره را برای همسایگان و سلولهای مجاور به روز رسانی کنیم.
4-الگوریتم Flood-fill
ایدهی الگوریتم flood-fill برای شروع رسیدن به یک هدف طراحی شده است (مرکز maze). از این الگوریتم برای پر کردن maze با استفاده از مقادیری که ارائه کنندهی فاصله از هر سلول تا هدف، استفاده میشود. در شکل شمارهی 4 نحوهیflood شدن maze دیده میشود. این maze به صورت کامل نقشهبندی شده است و ما میدانیم که تمامی دیوارهها در کجا قرار دارند. ما میتوانیم به صورت واضح مشاهده کنیم که زمانی که بیش از یک راه از طریق maze وجود دارد چه اتفاقی میافتد.
برای یک maze با سایز کامل، ما احتمالا 16 ردیف در 16 ستون خواهیم داشت که این مقدار برابر با مقدار 256 سلول است. بنابراین، به 256 بایت فضا برای ذخیرهسازی مقدار فاصله برای یک maze کامل داریم. از آنجا که میکروموسها نمیتوانند به صورت اریب حرکت کنند، مقدار برای یک maze، با ابعاد 5x5 بدون دیوارهها به شکل زیر خواهد بود.
هنگامی که این واحد آماده حرکت میشود، ربات باید تمامی تنظیمات سلولهایی که به وسیلهی دیوارهها جداسازی نشدهاند و با پایینترین مقدار فاصله انتخاب شدهاند را، آزمایش کند، در مثال ما و در شکل شمارهی 5، ربات هر سلولی را به سمت غرب حرکت خواهد داد چراکه در آنجا دیواره وجود دارد و میتواند به مقادیر فاصلهی سلولها تا شمال، دید داشته باشد، این کار به سمت شرق و غرب نیز صورت میگیرد و این کار از زمانی که آنها دیوارهبندی نشدهاند صورت میگیرد. سلول شمالی دارای مقدار 2، سلول غربی دارای عدد 2 و سلول جنوبی دارای عدد 4 میباشد. این بدین معنی است که ربات میتواند به سمت شمال و غرب حرکت کند و برخی از سلولها را در مسیر خودشان به سلول مقصد، انتقال دهد. از آنجا که چرخش زمانبر است، ربات در حرکت رو به جلو سلول شمالی را انتخاب میکند، هنگامی که یک دیوارهی جدید یافت میشود، مقدار فاصلهی سلولها مورد تأثیر قرار میگیرد و باید آنها را به روز رسانی کنیم. به مثال در شکل 6 توجه کنید.
در سومین مرحله ربات، دیواره را پیدا میکند، ما به سمت شرق و غرب نمیتوانیم حرکت کنیم، ما تنها به سمت شمال و جنوب حرکت میکنیم، حرکت به سمت شمال و جنوب بدین معنی است که ما به سمت فواصلی میرویم که مایل نیستیم، پس احتیاج داریم تا مقادیر سلولها را به روز رسانی کنیم، مقادیری که نمیخواهیم آنها را داشته باشیم. برای این منظور باید maze را با یک مقدار جدید، flood کنیم. مورد مشابه به این حالت را میتوانیم در هفتمین و هشتمین مرحله و در جایی که ربات یک دیوارهی جدید یافت میکند و مقادیر فواصل باید تغییر کنند، مشاهده کنیم.
5- نتیجهگیری
ما یک الگوریتم flood-fillمنظم تعبیر شده در ربات را در اختیار داریم. این الگوریتم در زمانی که maze شامل جزایر واحد است، بسیار کاربردی است. این الگوریتم یک مسیر و روش خوب در پیدا کردن مسیر از سلول آغازین تا سلول هدف است. اما سرعت آن بسیار کم است.