
فرض کنید میخواهید به یک شهر جدید که تا به حال به آنجا مسافرت نکردهاید، بروید و شما در مورد این شهر هیچ اطلاعاتی ندارید. چطور میتوانید کارهای خود را انجام دهید، در حالی که نمیدانید هر چیزی یا مکانی در کجا قرار گرفته است. مثلا برای رسیدن به هتل از چه مسیری باید بروید. مشخصا شما به یک نقشه یا فردی نیاز دارید که به شما بگوید “هتل شما کجاست؟” یا “موزه در کجا قرار گرفته است؟” مشابه همین موضوع یک ربات هم باید برای فعالیت در محیط مجموعهای از اطلاعات کافی را داشته باشد، و هرچقدر این اطلاعات بیشتر باشد، احتمال اینکه ربات بتواند بهتر عمل کند و یا به هدفش برسد، بیشتر خواهد بود.
ربات، یک دستگاه ماشینی یا یک سیستم الکترونیکی میباشد، که با استفاده از مجموعه دستورات کد شده و دستورالعملها میتواند یک وظیفه (مانند حرکت کردن روی مسیر از قبل مشخص شده) را انجام دهد.
چالش اصلی ساخت تمامی ربات ها به صورت زیر میباشد:
“غیر ممکن است که یک ربات بتواند به طور قطع، حالت واقعی محیط اطراف خود را درک کند، آنها تنها میتوانند محیط دنیای واقعی را بر اساس اندازه گیریهایی که توسط حسگرهای خود به دست آوردهاند، حدس بزنند و تنها میتوانند دنیای واقعی را با استفاده از تولید سیگنالهای کنترلی تغییر دهند”.

در نتیجه یکی از اولین گامها در طراحی کنترل ربات ها، کنار آمدن با پیچیدگی زیاد محیط واقعی میباشد، که به آن مدل گفته میشود. این مدل باید بتواند ورودی حسگرها را که خوانده است، تفسیر کند و تصمیم مناسب را بگیرد. تا زمانی که دنیای واقعی بر اساس فرضیات مدل ما عمل میکند، ربات میتواند حدسهای درستی بزند و عمل کنترلی را اعمال کند (این شرایط تنها در محیط آزمایشگاه اتفاق میافتد). اما به محض اینکه از محیط کنترل شده خارج شود، دیگر ربات نمیتواند حدسهای درستی بزند. و همین موضوع از یکی از کلیدیترین دلایل سختی برنامه نویسی ربات میباشد.
ما همیشه فیلمهایی از آخرین رباتهای تحقیقاتی در محیط آزمایشگاه میبینیم، که چقدر با مهارت و با چابکی عمل میکند، و یا حتی کار تیمی انجام میدهد. و همیشه این سوال برایمان باقی میماند که “چرا از این ربات در دنیای واقعی استفاده نمیشود؟ اما دفعه بعدی که چنین فیلمی را دیدید به محیط آزمایشگاهی که کاملا کنترل شده است توجه کنید. در اغلب موارد، این رباتها میتوانند این عملکردهای شگفت انگیز را انجام دهند، تنها تا زمانی که شرایط محیط آزمایشگاهی بدون کمترین تغییر غیرقابل پیشبینی باقی بماند.
رباتها میتوانند دو نوع از حرکتها را اجرا نمایند:
1- توالی دلخواهی از حرکتهای از قبل ذخیره شده.
2- حرکتهایی که در نتیجه عملکرد ورودی حسگر محاسبه شدهاند.

حسگرها مانند یک واسط میان ربات ها و محیط واقعی عمل میکنند. و هر یک از این حسگرها اطلاعاتی را در رابطه با دنیای واقعی برای ربات فراهم میکنند. چهار حسگر متداول به صورت زیر میباشد:
1- حسگر صدا: دامنه صدای دریافت شده از طریق میکروفون
را دریافت میکند.
2- حسگر نور: میزان روشنایی نور را اندازهگیری میکند.
3- حسگر فاصله: فاصله از حسگر را تا یک شی نزدیک اندازه میگیرد.
4- حسگر تماس: آیا دکمه مورد نظر فشرده شده است یا خیر.
دو نوع از ربات های متداول در حوزه آموزش، ربات های همستر و تیمیو میباشد:
این ربات منبع باز است ( نرم افزارهای منبع باز، کدهای اولیه برنامه را در دسترس کاربر قرار میدهند و اجازه تغییر را نیز به کاربر میدهند) و حتی دارای پروژه سخت افزاری باز نیز میباشد. برای مثال با برنامه نویسی ربات تیمیو با استفاده از برنامه اسکرچ که در پستهای قبل توضیح داده شده است، میتوانیم به تیمیو دستوراتی را بدهیم:
– از برخورد با موانع جلوگیری کن.
– یک خط را دنبال کن و یا از افتادن از روی میز جلوگیری کن.
– بارکد را بخوان.
– صداها را ضبط و پخش کن.
– موقعیت خودت را با 3 شتاب سنج بر روی محورهایت به دست بیاور.
– دمای هوا را به دست بیاور.
– و یا مواردی دیگر …


ربات همستر با هدف آموزش نرم افزار ایجاد شده است. این ربات از اسکرچ، پایتون، جاوا اسکریپت، و زبانهای برنامه نویسی مانند C ،C++، جاوا، اندروید و … پشتیبانی میکند. این ربات دارای حسگرهای متنوعی مانند نور، دما و حسگرهای شتاب میباشد. حسگرهای تشخیص نزدیک شدن به اشیا نیز میتواند در شناسایی اشیا نزدیک به ربات کمک کند. حسگرهایی که در زیر این ربات وجود دارد برای دنبال کردن خطوط کمک میکنند. همچنین میتوان حسگرها و محرکهای خارجی نیز به پورتهای دیگر آن افزود و آن را به صورت دلخواه توسعه داد.


برای خواندن مقالات بیشتر در حوزه برنامه نویسی کودک و نوجوان به سایت آکادمی یاسان مراجعه کنید.