برنامهنویسی ربات: چگونه به ربات بگوییم چه کار کند؟
زبان دستور ربات چیست و چه فرقی با صحبت روزمره دارد؟
رباتها مانند یک خمیر بازیِ خیلی باهوش هستند، اما خودشان فکر نمیکنند. آنها فقط کارهایی را انجام میدهند که ما دقیقاً و گامبهگام به آنها بگوییم. به این مجموعهٔ دستورها، برنامه میگویند. زبانی که ما با آن به ربات دستور میدهیم، یک زبان ویژه است که قوانین مشخصی دارد.
مثلاً اگر به دوستت بگویی «آب بیار» او میفهمد از کدام لیوان، از کدام یخچال و چه مقدار آب. ولی اگر به ربات بگویی «آب بیار»، ربات نمیداند کجا برود، چه آبی بیاورد و چطور بر گردد. در برنامهنویسی ربات باید بگویی:
به این ترتیب، ربات دقیقاً میفهمد چی و چطور انجام دهد. در زبان برنامهنویسی به هر دستور، یک دستور خطّی1 میگویند.
جدول مقایسه: صحبت معمولی در برابر دستور ربات
| حرف زدن با انسان | |
|---|---|
| دستور نوشتن برای ربات | |
| «اتاقت را مرتب کن» | ۱- اسباببازیها را از زمین بردار. ۲- آنها را داخل جعبه بگذار. ۳- کتابها را روی قفسه بچین. |
| «برو خانه» | ۱- ۱۰ گام به جلو برو. ۲- به راست بپیچ. ۳- در را باز کن. ۴- وارد شو. |
| «یه نقاشی بکش» | ۱- مداد را بردار. ۲- خط افقی به طول ۵ سانتیمتر بکش. ۳- خط عمودی از وسط آن بکش. |
ساخت یک برنامهٔ ساده برای ربات پیشبند
فرض کن یک ربات پیشبند داری که میتواند جمع و تفریق کند. ما میخواهیم برنامهای بنویسیم که دو عدد را از کاربر بگیرد و حاصل جمع آنها را نشان دهد. در یک زبان سادهٔ ربات، دستورها این شکلی هستند:
۱- از کاربر بپرس «عدد اول را وارد کن».
۲- مقدار اول را در حافظه با نام a ذخیره کن.
۳- از کاربر بپرس «عدد دوم را وارد کن».
۴- مقدار دوم را در حافظه با نام b ذخیره کن.
۵- حاصل جمع a و b را محاسبه کن و در c بریز.
۶- به کاربر بگو «نتیجه برابر است با» و سپس مقدار c را نشان بده.
اگر بخواهیم این کار را با فرمول ریاضی نمایش دهیم، مینویسیم:
$ c = a + b $که در آن a و b دو عدد ورودی هستند و c حاصل جمع.
رباتهای واقعی از زبانهای خاصی مثل زبان مخصوص رباتها2 استفاده میکنند که دستورهایی مثل «حرکت کن»، «بچرخ»، «بردار»، «بگذار» و «اگر ... آنگاه ...» دارد.
کاربرد عملی: ربات کمککار در خانه
یک ربات کوچک جاروبرقی تصور کن. دستورالعمل آن برای تمیز کردن یک اتاق میتواند این باشد:
گام 1: موتور مکش را روشن کن.
گام 2: 2 ثانیه به جلو حرکت کن.
گام 3: 90 درجه به راست بچرخ.
گام 4: گام 2 را تا ۱۰ بار تکرار کن.
گام 5: موتور مکش را خاموش کن.
این یک برنامهٔ ساده است که به ربات میگوید اتاق را خط به خط جارو کند. اگر ربات به دیوار بخورد، یک دستور شرطی مینویسیم: «اگر به دیوار رسیدی، 180 درجه بچرخ و برگرد».
چالشهای مفهومی در برنامهنویسی ربات
پاسخ: ربات به تنهایی نمیفهمد! باید در برنامه به او بگوییم «از جای فعلی 3 متر به سمت جلو حرکت کن تا به دیوار برسی. سپس 1 متر به چپ برو. آنجا پنجره است.» یا از حسگر فاصلهسنج استفاده کند و بگوید «اگر شیء شفاف دیدی، متوقف شو».
پاسخ: چون ربات قدرت تفکر و خلاقیت ندارد. او فقط دستورهایی را اجرا میکند که ما از قبل نوشتهایم. اگر بگوییم «خودت تصمیم بگیر»، ربات هیچ کاری نمیکند و متوقف میشود. برای تصمیمگیری باید از دستورهای شرطی مثل «اگر ... آنگاه ...» استفاده کنیم.
پاسخ: نه، مگر اینکه خودمان در برنامه اش خطایابی بگذاریم. مثلاً بنویسیم: «اگر دستور باعث برخورد با دیوار شد، متوقف شو و اعلام خطا کن.» ربات نمیداند کدام دستور درست است. درست بودن را ما در قوانین برنامه تعریف میکنیم.
- برنامهنویسی ربات یعنی نوشتن دستورالعملهای دقیق، گامبهگام و بدون ابهام.
- رباتها زبان مخصوص خود را دارند که در آن هر دستور معنای مشخصی دارد.
- با استفاده از دستورهای ساده، شرطیها و تکرارها میتوان کارهای پیچیده ساخت.
- یک برنامه مثل دستور پخت کیک است: اگر یک مرحله را فراموش کنی، نتیجه درست نمیشود.
پاورقیها
1دستور خطّی یا Statement در برنامهنویسی: یک دستور ساده که به ربات میگوید یک کار مشخص را انجام بده، مثلاً «برو»، «بایست»، «جمع کن».
2زبان مخصوص رباتها یا Robot Programming Language: مجموعهای از واژهها و قوانین که برای نوشتن برنامههای قابل فهم برای ربات استفاده میشود. مثال ساده: زبان سکوئنس3 در رباتهای آموزشی.
3سکوئنس یا Sequence به معنی ترتیب و دنبالهٔ دستورهاست. یعنی دستورها باید به ترتیب درست اجرا شوند.