روبات ها آغاز کار بصورت عملی (نه تئوری!)( قسمت 2 )

 
مهندس محمد ماجد اسدی
تیر ماه 84 شماره 13

اشاره :
همانطور که خوانندگان گرامی اطلاع دارند، در مقاله قبلی مجموعه رباتیک‏، به انواع مختلف این محصول و نحوه عملکرد کلی آنها اشاره شد. مطلبی که علاقمندان همیشه در پی آن هستند یافتن راهی برای گریز از مطالب تئوری و ورود به دنیای عملی هستند. برای این منظور برآن شدیم تا در این قسمت سنگ بنای فعالیت عملی را بنیان بگذاریم. مهمترین کار در زمینه فعالیت روباتیک، تسلط به یک زبان برنامه نویسی مناسب است. بسیاری از علاقمندان داخلی و خارجی در اجتماعات علمی خود در پی یافتن زبانی مناسب برای شروع کار هستند اما متأسفانه اغلب این جلسات بدون نتیجه به پایان می رسند، بنابر این مناسب می دانیم که بر اساس اطلاعات شخصی و تجربه عملی مطالبی را در این زمینه ارائه نماییم. مهمترین مسئله ای که باید از قبل مد نظر بگیرید این است که خلاقیت در کار، از زبان برنامه نویسی انتخاب شده مهم تر است.


زبان های برنامه نویسی:

 
خانواده  ( C ( C, MS Visual C++, Borland C++ Builder, …  :
این زبان ، از جا افتاده ترین و قدیمی ترین زبان های موجود می باشد. بیشتر افرادی که بصورت حرفه ای ( ونه تفننی ) در این زمینه فعالیت دارند، ‌این زبان را مورد استفاده قرار می دهند. از امتیازات این زبان سرعت بالا، ‌حجم کم و وجود منابع بیشمار در شبکه اینترنت می باشد. یکی از عمده ترین اشکالات این زبان این است که برنامه نویسی در این محیط از بسیاری از دیگر محیط های برنامه نویسی سنگین تر است. سنگین بودن استفاده از این زبان، دلیل بر ناتوانی طراحان آن نیست،‌ بلکه علت اصلی،‌ اهمیت نزدیکی این زبان با زبان های سطح پایین است که امکان کنترل دقیق سخت افزارهای، داده ها (بیت ها) را بصورت بسیار ظریفی فراهم می آورد‌.
بنابر این شروع کار برنامه نویسی با این زبان را برای افراد آماتور توصیه نمی کنیم.
زبان C توسط شرکت های متعددی طراحی و ساخته شده است از جمله این شرکت ها میتوان به شرکت Borland و Microsoft اشاره نمود. تفاوت های موجود میان محصولات این شرکت آنقدر زیاد و قابل توجه نیست وتنها نکته مهم این است که اگر فردی قبلا کار با Delphi را تجربه کرده باشد،‌استفاده از Borland C++ Builder را ساده تر از فعالیت با MS Visual Basic می یابد. از طرف دیگر اگر کسی قبلاً با MS Visual Basic کار کرده باشد، برنامه MS Visual C++ را مناسب تر وساده تر خواهد یافت.
یکی از نکاتی که باعث به دام افتادن (!) افراد غیر حرفه ای در تشویق به استفاده از این زبان وجود دارد، عامل روانی می باشد. بدین صورت که با اشاره به این مسئله که تمامی سیستم عامل های مطرح جهان (همچون UNIX, Linux, Windows ) را با این زبان برنامه نویسی و طراحی کرده اند. از آنجا که بیشتر افراد توانایی زمانی یا فنی فراگیری این زبان را تا سطوح بالا ندارند، در میانه راه، مسیر آمده را بازمی گردند. این نکته را مد نظر داشته باشید که فراگیری این زبان، همانند درختکاری، یک سرمایه گذاری بلند مدت است ونباید انتظار داشت که ره صد ساله را یک روزه بپیمایید.

• Delphi (یا Visual Pascal) :
دلفی یکی از محبوبترین زبان های موجود است که توجه افراد غیر حرفه ای و حرفه ای را به خود معطوف نموده است. یکی از اساسی ترین عوامل این محبوبیت علاوه بر داشتن توانایی های قدرتمند، آسان تر بودن فراگیری این زبان است. منابع بیشمار موجود در شبکه اینترنت و وجود Newsgroup های متعدد برای تمامی سطوح (مقدماتی، دانشجویی،‌حرفه ای، فوق حرفه ای) نیز یکی از مزایای استفاده از این زبان است. رسیدن به مرحله « فعالیت قابل قبول» در این زبان سریع تر از زبان های خانواده C می باشد و برای بیشتر افراد که با کمبود وقت مواجه هستند، این یک راه نجات ودریچه امید است! همانطور که قبلاً نیز اشاره نمودیم از مهمترین ایرادهایی که به این زبان گرفته می شود این است که نمی توان بکمک این زبان یک سیستم عامل همچون ویندوز یا یونیکس طراحی کرد! در جواب باید به این عزیزان گفت : صحبت شما کاملاً متین است واگر لطف کنید و یکی از سیستم عامل هایی را که خود طراحی نموده اید، به ما نشان دهید تا آخر عمر مدیون شما خواهم بود!

Microsoft Visual Basic  :
علی رقم محبوبیت فوق العاده این زبان در میان دختران و پسران برنامه نویس در ایران، توجه شایانی را از دیگر کشورهای پیشرفته به این زبان مشاهده نمی کنیم. در این مقاله در صدد آن نیستیم که تحلیلی دقیق بر این موضوع ودلیل اصلی آن داشته باشیم وعلاقمندان می توانند با مراجعه به شماره فروردین ماه ( مقاله اینترنت، فناوری و چت) اطلاعاتی را درباره دلیل گسترش محصولات شرکت Microsoft بیابند. اگر چه استفاده از MS Visual Basic به دلایلی توسط بسیاری از افراد توصیه می شود، اما اشاره به این نکته کافیست که از میان دانشگاه های معتبر جهان، تنها دانشگاه های آمریکایی از این زبان برنامه نویسی که محصول شرکت آمریکایی مایکروسافت است، استفاده می کنند. در اکثر دانشگاه های مطرح دنیا، زبان های C و Java بدلیل ساختار مناسب وهدفمند در کلاس های استاتید تدریس می شوند.
این مسئله وجه تشابه بسیاری با خودروی ملی سابق (وشاید فعلی) ما یعنی « پیکان » دارد. پیکان علاوه بر قیمت پایین تر، خدمات پس از فروش بیشتری نیز در سرتاسر کشور پهناورمان دارد و می توان به جرأت گفت که در هر یک از کوچه های ایران زمین حداقل سه تعمیرکار خبره پیکان داریم. این مسئله در مورد MS Visual Basic نیز مصداق دارد. متأسفانه علیرقم اذعان متخصص ترین برنامه نویسان به غیر علمی بودن این زبان، روز به روز، تبلیغات استفاده از این زبان بیشتر و علاقمندان به سوی این زبان کشیده می شوند. البته بمنظور رعایت انصاف باید بگویم که این زبان خالی از مزایا نیست. از جمله مزایای آن خدمات پس از فروش عالی این زبان، همچون خدمات پس از فروش پیکان است، همچنین بمنظور ارتباط هر چه بیشتر با سیستم عامل ویندوز، این شرکت قابلیت هایی را به این زبان می افزاید ( البته شرکت Borland نیز از روی ناچاری و بدلیل جلوگیری از مهاجرت مشتریان، تعدادی از این ماجول ها ( Modules ) را به محصول خود یعنی Delphi افزوده است.
حال از طرف دیگر اگر خودروی رویز رویز را در نظر بگیریم خواهیم دید که خبری از خدمات پس از فروش (در حد پیکان) وجود ندارد و جاده های آیینه مانند (!) میهن عزیزمان اجازه استفاده از این خودروی گرانبها را به ما نمی دهد و باید آنرا در جاهای مناسب و با احتیاط استفاده کنیم.

Java :
این زبان که در جلب مشتری از موفق ترین زبان های روز دنیا است کمتر در زمینه روباتیک مورد استفاده قرار می گیرد ومهمترین استفاده آن در طراحی صفحات وب است. جاوا و C ساختار بسیار مشابهی دارند و افرادی که به یکی از این دو زبان مسلط باشند می توانند ظرف مدت کوتاهی زبان دیگر را نیز فرا بگیرند. بسیاری از بازی های موجود در اینترنت که بصورت Online مورد استفاده قرار می کیرند بوسیله این زبان طراحی شده اند. یک برنامه نمونه که از قبل تهیه شده است و شکل آنرا در زیر مشاهده می کنید، می تواند برای شما جالب باشد. سری به سایت مجله بزنید. ممکن است از مشاهده برنامه پازل که به زبان جاوا نوشته شده است و تکنیک هایی از هوش مصنوعی در آن بکار رفته است، شگفت زده شوید.

شکل 1


MATLAB :
این زبان کمتر برای عموم شناخته شده است. چند سال پیش که نام این زبان برنامه نویسی را در لیست واحدهای دانشگاه لندن مشاهده نمودم، از یکی از دوستان قدیمی درباره آن جویا شدم (البته بدون اشاره به محل رؤیت!)، ایشان نیز با کمال اطمینان فرمودند: «احتمالا این زبان را بر و بچه های خودی دادن تو بازار. ولش کن ایرونیه، جواب نمیده!». جالب است بدانید که این تشابه اسمی به این دلیل است که واژه MATLAB، عبارت مختصر شده Matrix Laboratory (یعنی آزمایشگاه ماتریس) است و به معنی «مطلب» نیست! تمامی محاسبات داخلی این زبان، قبل از انجام به فرمت ماتریس تبدیل می شود و سپس مورد استفاده قرار می گیرد. بیشترین افرادی که از این زبان منحصر به فرد استفاده میکنند، دانشجویان رشته های مهندسی الکترونیک وکامپیوتر را شامل می شوند. از جمله امتیازات این زبان، امکان پیاده کردن الگوریتم برنامه اصلی، عیب یابی و ارتقای آن است. به این مدل، مدل Prototype اطلاق می شود که قبل از نوشتن برنامه در زبان اصلی (همچون C, Delphi, Java) از آن برای رفع خطا و ارتقا بهره می برند. این زبان برنامه نویسی گسترده شامل توابع مفید متعددی می باشد که اشاره به آنها را در اینجا ضرورتی ندارد.

Prolog / LISP :
این از جمله زبان های پیشرفته برنامه نویسان هوش مصنوعی به حساب می روند. هنگامی که تجربیات شما در زمینه رباتیک به حد مطلوب و پیشرفته ای برسد، از این دو زبان برنامه نویسی قدرتمند بی نیاز نخواهید بود. از آنجا که رباتیک ارتباط تنگاتنگی با هوش مصنوعی دارد، ضرورت استفاده از برنامه های تخصصی هوش مصنوعی امری الزامی است. اما در حال حاضر (و تا چند سال آینده)، نیازی به این دو زبان هوشمند ندارید.

Assembly :
ممکن است از اشاره به این زبان تعجب کرده باشید ولی باید این مسئله را بدانید که این زبان اولیه که مشکل تر از بقیه زبان هاست، در مواردی بسیار مفید است. این زبان بعنوان یک مکمل برای زبان های دیگر (مثل C++ یا Delphi) استفاده می شود. استفاده مستقل از این زبان مقرون به صرفه نیست اما در موقعیت هایی که تغییرات بسیار جزئی در حد بیت و بایت یا نیاز به دسترسی دقیق سخت افزاری وجود دارد، استفاده از این زبان قابل توجه است. در نوشتن برخی حلقه ها برای صرفه جویی در زمان اجرا از این زبان استفاده می شود.

نکته : در قسمت های بعدی متن خواهید دید که فراگیری این زبان مخصوصاً برای برنامه نویسی IC های قابل برنامه نویسی بسیار ضروری می باشد. بسیاری از این IC ها علاوه بر ساپورت کردن زبان اسمبلی از زبان C مخصوص خود نیز استفاده می کنند اما فراگیری زبان C این IC ها بدون آشنایی با زبان اسمبلی، شما را در آینده با مشکلاتی روبه رو خواهد نمود.

روبات های متحرک یا ثابت
یکی از مهمترین مسئله در انتخاب زبان مربوطه، موضوع ثابت یا متحرک بودن روبات می باشد. همانطور که در قسمت قبل نیز اشاره شد در مسابقات ربوکاپ، روبات ها متحرک هستند و بوسیله امواج ، اطلاعات مورد نیاز را از مرکز کنترل دریافت می کنند. از آنجا که همیشه امکان ارسال ودریافت اطلاعات به و از مرکز کنترل امکان پذیر یا مقرون به صرفه نیست، بسیاری از برنامه نویسان و فعالان عرصه روباتیک از متد Embed کردن برنامه به روبات بهره می گیرند (چسباندن یا پیوند دادن به جزء اصلی). در این شیوه برنامه را با استفاده از زبان مربوطه نوشته وپس از انتقال آن به آی سیِ قابل برنامه نویسی، آن را به ربات منتقل می کنید. در صورتیکه خوانندگان به این موضوع علاقمند باشند می توان مقالاتی را در این زمینه که حاصل تجربیات عملی و شخصی اینجانب و بسیاری از دوستان صاحبنظر داخلی و خارجی است در شماره های بعدی در اختیار شما عزیزان قرار داد. تنها به عنوان مثال می توان به IC های قابل برنامه نویسی خانواده 8051 محصول شرکت ATMEL اشاره نمود. این آی سی را می توان با زبان اسمبلی یا C ویژه خود برنامه نویسی کرد.

یکی از اعضای فعال این خانواده از IC ها، AT89C51 است.
AT: نمایانگر سازنده محصول (ATMEL).

 8: میکروکنترلر هشت بیتی.

 9: نمایانگر دارا بودن حافظه Flash برای برنامه نویسی.

C : تکنولوژی ساخت IC را نشان می دهد که از نوع CMOS است (نه TTL) . IC های CMOS در رایانه ها نیز استفاده می شوند که مصرف پایین تری نسبت به IC های TTL دارد.

51: شماره IC که قابلیت های زیر را دارا می باشد :
1ـ 4 KB حافظه Flash
2ـ 128 Bytes RAM
3ـ چهار پورت ورودی و خروجی هشت بیتی (32 پایه) برای ارسال و دریافت اطلاعات
4ـ چهل پایه

عموماً برنامه نویسی در این شرایط بدلیل محدودیت فضا و مشکل بودن برقراری ارتباط از راه دور است. اما یکی از مهمترین امتیازات استفاده از اینگونه IC ها، اعطای خود مختاری و استقلال (اگر چه برخی مواقع، نسبی) به ربات مربوطه می باشد. توجه به این نکته ضروری است که روبات های متحرک نیز برای ارسال و دریافت اطلاعات بصورت مطلوب نیاز به استفاده از این نوع IC ها دارند ولی در این مدل طراحی، IC ها تنها وظیفه انتقال فرمان ها را بعهده می گیرند و کار تحلیل را بعهده مرکز کنترل می گذارند. همانطور که در مقاله قبل نیز اشاره شد، مرکز کنترل می تواند کامپیوتری باشد که شرایط موجود را از سنسورهای نصب شده بر روی روبات ها دریافت کرده و فرمانه ای لازم را به روبات ها ابلاغ نماید.
شکل 2

رابط های مورد نیاز
یکی از اساسی ترین موضوعاتی که علاقمندان به دانش رباتیک باید در نظر داشته باشند این است که استفاده از رابطهای مناسب میتواند تأثیر شایانی در بهبود عملکرد فنی کار داشته باشد. رابطهای مورد نیاز عبارتند از :

• رابط کاربر به برنامه نوشته شده برای مدیریت ربات مرکزی (برنامه نوشته شده تحت MS Windows یا Linux )
• رابط مرکز کنترل به ربات های تحت امر (امواج یا سیم)
• رابط برنامه نوشته شده به ربات (آی سی)

کتاب های متعددی در زمینه رابط های کامپیوتری وجود دارد. از مهمترین موضوعات موجود، استفاده از کامپیوتر برای ارسال اطلاعات به Port ها واسلات ها ( Slots ) است.

امیدواریم بتوانیم بعنوان اولین مجله رایانه ای کشور که کار با روبات ها را بصورت عملی در اختیار شما خوانندگان عزیز قرار می دهد، توجه و رضایت شما را جلب کرده باشیم. منتظر قسمت های بعدی این مجموعه باشید.

  
نویسنده : ali gooliof ; ساعت ۱٢:۳۱ ‎ب.ظ روز ۱۳۸٧/٢/٢٤
تگ ها :