همه چیز درباره ی رباتیک

اول از هرچیزی یک تعریف مختصری از ربات داشته باشیم بدونیم ربات چیه و از چه چیز هایی ساخته میشود و اولین ربات چه زمانی ساخته شده و در آخر هم درمورد برنامه ریزی ربات براتون میگم , پس همراه من باشین تا آخر این مقاله .توی دنیای امروزه ما شاهد ربات های پیشرفته ای هستیم که قادر هستند با انسان هم تعامل برقرار کنندو دستورات راهم به صورت صوتی دریافت کنند و درعین حال پردازش کرده و پاسخ دهند و همچنین انجام وظیفه کنند . اما ربات های امروزی با اولین رباتی که ساخته شده خیلی پیشرفت کرده اند در واقع اولین رباتی که ساخته شد اینطوری پیشرفته نبود و خبری از هوش مصنوعی و یادگیری ماشین و سرعت پردازشی بالا نبود . ساخت اولین ربات ها به قبل از میلاد مسیح برمیگرده و حتی به هزاران سال پیش اجداد ما دنبال ساخت ماشین‌هایی مانند ربات‌های امروزی بودن و دوست داشتن کارها بصورت اتوماتیک انجام بشن . میتونم ربات را اینطوری تعریف کنم , ربات یک دستگاه الکترومکانیکی است که قادر است به روشهای مختلف به محیط واکنش نشان دهد ، به صورت مستقل تصمیم بگیرد یا طبق فرمانی یک وظیفه ی مشخص را انجام دهد و همچنین ربات ماشینی است که معمولاً قابل برنامه‌ریزی توسط رایانه بوده و قادر به انجام خودکار شماری از اعمال پیچیده است. همچنین بر پایه تعریفی از بریتانیکا ربات دستگاهی است که به صورت خودکار عمل می‌کند جایگزین تلاش انسانی می‌شود و ممکن است در ظاهر شبیه انسان‌ها نباشد . حالا ما در اطرافمان لوازم رباتی زیادی داریم که بعضی از انها ربات محسوب نمیشوند و ما فکر میکینم ربات هستند مانند یک توستر ، یک لامپ یا یک ماشین را نمی توان به عنوان یک ربات در نظر گرفت چرا که آنها نسبت به محیط اطراف خود عکس العملی نشان نمی دهند . اما یک جارو برقی با صفحه خورشیدی که در اطراف اتاق به دنبال نور خورشید می گردد ، می تواند یک ربات در نظر گرفته شود . ربات‌ها معمولاً در مواردی استفاده می‌شوند که بتوانند کاری رو بهتر از یک انسان انجام دهند یا در محیط پر خط فعالیت کنند مثل اکتشافات در مکان‌های خطرناک مانند آتش‌فشان‌ها که می‌توان بدون به خطر انداختن انسان‌ها انجام داد . علم رباتیک درا صل در صنعت به‌کار می‌رود و ما تأثیر آن را در محصولاتی که هر روزه استفاده می‌کنیم ، می‌بینیم . حالا میخوام بهتون اولین ربات رو معرفی کنم که حدود اوایل قرن یکم , پیش از میلاد مسیح چنین مکانیزمی را طراحی و ساخته شده است . اولین ربات توسط باستان شناسان پیدا شده و اولین ربات اسمش ماشین آنتیکیترا هستش . ماشین آنتیکیترا برای انجام محاسبات اخترشناسی طراحی شده بود . ماشین آنتیکیترا شاید اولین دستگاهی بود که در آن چرخ‌دنده به کار رفته است .ماشین آنتیکیترا در سال ۲۰۰۷ بازسازی شده .دومین ربات اسمش هست لئوناردو, که توسط اقای لئوناردو داوینچی در تاریخ ۱۴۹۵ میلادی ربات لئوناردو را طراحی کرده بوده که در یاداشت‌های ایشان پیدا شده . و این نشان می‌دهد که انسان و بخصوص افراد متفکر جامعه در گذشته نیز دنبال مفهموم ربات و ساخت آن بودند , و مدلی از ربات لئوناردو همراه لوازم اجزای داخلیش در برلین قرار دارد .در زمان های قدیم ربات های زیادی ساخته شده اند که البته چند موردی هم شبیه ربات بودن , یکی از آنها The Steam Manکه یک ماشین شبیه انسان بود با موتور بخار که توسط Zadoc Dederick در سال ۱۸۶۸ میلادی ساخته شد . هزینه ساخت نمونه اولیه این ربات ۲۰۰۰ دلار معادل در ۳۹۴۵۸ دلار در سال ۲۰۲۰ شده بود .بعدا ربات‌هایی مثل Eric در سال ۱۹۲۸ و Elektroدر سال ۱۹۳۸ ساخته شدن که Elektro ربات انسان‌نما بود که می‌توانست راه برود ، حرف بزند و همچنین سیگار بکشد.ولی بنظر تا این زمان از تاریخ‌ ربات‌ها خیلی هم کاربردی و مهمتر از همه قابل برنامه‌ریزی هم نبودن .حالا بریم سراغ ربات های جدید و صنعتی و ببینیم اولین بار این ربات های امروزی توسط چه کسی ساخته شدن و برای چه کاری خلق شدن .ربات Unimate: این اولین ربات صنعتی بود که در خط تولید از آن استفاده شد . ربات Unimate توسط George Devol ( جورج دوول ) در سال ۱۹۵۴ طراحی و ساخته شد , واژه اتوماسیون به معنای خودکار سازی اولین بار توسط ( جورج دوول ) در جهان مطرح شد . ربات یونیمیت با هدف جا به جایی قطعات بین چند نقطه , ساخته شد بود که توسط جک های هیدرولی حرکت میکرد و تنها فقط از سه درجه آزادی برخودار بودش و بعد از دوسال یعنی در سال 1956 توسط جورج دوول با همکاری ژوزف انگلبرگر ( Joseph Engelberger ) , شرکت یونیمیشن ( Unimation ) را تاسیس تاسیس کردند و لقب اولین شرکت سازنده ربات های صنعتی در جهان را از آن خود کردند . در سال 1962 , اولین ربات صنعتی شرکن یونیمیشن در کارخانه خودرو سازی جنرال موتورز ( GMC) برای انجام فرایند جوش نقطه ای و ریخته گری نصب گردید .در سال های بعد شرکت های زیادی برای تولید ربات های صنعتی اقدام نمودند از جمله شرکت های : ABB , KUKA , FUNUC و ...شرکت آلمانی , KUKAدر سال 1973 اولی ربات شش محوره جهان را طراحی و تولید کرد که نامش Famulus است . که سال بعدش شرکت ASEA که امروزه به نام ABBمعروف است , اولین ربات صنعتی خودش را که از کنترلر میکروپروسسوری به منظور پردازش برنامه ربات استفاده میشود را با عنوان IRB6 به بازار معرفی و عرضه کرد . فدراسیون بین المللی رباتیک ( IFR ) , تعدا ربات های نصب شده در سر تا سر جهان را در سال 2015 حدود 1,664,000 دستگاه پیش بینی نموده است . میشه گفت که 90 درصد از ربات های نصب شده در جهان , ربات های صنعتی هستند که حدود نیمی از آنها در کارخانجات خودروسازی به کار گرفته شده اند .میدونین اولین بار واژه ربات در چه زمانی و و توسط کی گفته شده ؟شاید براتون جالب باشه واژه « ربات » یا “ robot ” اولین بار سال ۱۹۲۱ توسط آقای « کارل چاپک » از نویسندگان کشور جمهوری چک در یکی از آثارش با عنوان « کارخانه ربات‌سازی روسوم » به کار برده شد . واژه ربات را او در کتاب کارخانه ربات‌سازی روسوم ( . R . U . R ) معرفی کرد و مفهوم آن را تبیین کرد .حالا میدوین ربات ها از چه لوازمی ساخته شده؟با من در این مقاله همراه باش تا با هم یاد بگیریم لوازم ربات ها از چیست . از وسایل مکانیکى و الکتریکى: شاسى ها ، موتورها ، منبع تغذیه و باقی وسایل . .– حسگرها ( که براى شناسایى محیط ) دوربین ها– عملکردها ( براى انجام اعمال لازم ) بازوى ربات ، چرخ ها ، پاها و…– قسمت تصمیم گیرى ( برنامه اى براى تعیین اعمال لازم ) : حرکت در یک جهت خاص ، دورى از موانع ، برداشتن اجسام و…– قسمت کنترل ( براى راه اندازى و بررسى حرکات ربات ) : نیروها و گشتاورهاى موتورها براى سرعت مورد نظر ، جهت مورد نظر ، کنترل مسیر و …به نظرتون چطوری میتونیم ساخت ربات را یادبگیریم؟طراحی و ساخت ربات ها شامل رشته‌های مختلفی هستش از جمله مکانیک ، الکترونیک ، علوم کامپیوتر ، برنامه‌نویسی و در سطح پیشرفته هوش مصنوعی هم درگیر می‌شود .در واقع برنامه نویسی ربات آخرین مرحله در ساخت ربات است . میشه گفت که در مراحل اولیه باید موتورهای محرک ، الکترونیک ، سنسورها و فریم ربات را تهیه کرد و همچنین قطعات را جایگذاری کرده و بعد برنامه نویسی ربات را انجام داد و اما ربات بدون برنامه نویسی ، ربات فقط یک وسیله معمولی خواهد بود. حالا برای برنامه نویسی ربات از چه زبان هایی میشه استفاده کرد ؟ برای کد نویسی میکروکنترلرها زبان های برنامه نویسی بسیاری وجود دارد که در ادامه بهتون معرفی میکنم : زبان Java : زبان Java جدید تر از C می باشد و به دلیل اینکه برنامه های جاوا در داخل سیستم عامل مجازی ماشین مجازی اجرا می شوند از امنیت بالایی برخوردارند . برخی از شرکتها مثل Parallax میکروکنترلر های خود را به گونه ای می سازد که با زبان Java قابل کدنویسی هستند . زبان Basic : میتونم بگم که یکی از اولین زبان های برنامه نویسی که به طور گسترده استفاده می شد و البته هنوز هم در برخی از میکروکنترلرها (Basic Micro ، BasicX ، Parallax) برای ساخت ربات های آموزشی استفاده می شود . زبان های C / C++ : C یکی از محبوب ترین زبان های برنامه نویسی است و یک زبان سطح بالا می باشد که برای برنامه نویسی سطوح پایین سیستم (مثلا در سطح سیستم عامل یا نرم افزار) مناسب هستش .زبان #NET / C. : زبان اختصاصی شرکت مایکروسافت می باشد که از آن برای توسعه برنامه های کاربردی خود در Visual Studio استفاده می کند . Netduino و FEZ Rhino نمونه هایی از کاربرد آن می باشد .زبان Processing (Arduino) : یک نوع از زبان ++C است که البته برنامه نویسی با آن نسبت به زبان ++C ساده تر شده است . زبان Assembly : یکی از زبان های برنامه نویسی هستش که بسیار نزدیک به زبان ماشین است ، به همین دلیل استفاده از آن بسیار خسته کننده است . زبان Assembly زمانی کاربرد دارد که نتوان با استفاده از زبان های سطح بالا کد خاصی را نوشت و البته دقت و سرعت بالاتری نسبت به زبان های سطح بالا نیز دارد . معمولاً برای برنامه نویسی در سطح CPU کاربرد دارد . زبان Python : و اما زبان برنامه نویسی پایتون یکی از محبوب ترین زبان های برنامه نویسی می باشد . یک زبان سطح بالا است و یادگیری آن بسیار ساده می باشد .در بخش برنامه نویسی می ‌توانید خلاقیت‌ های بیشتری داشته باشید و کدهای پیچیده‌ تری را بنویسید تا ربات شما کار های زیادی را انجام بدهد . ولی خب برای شروع ابتدا نیازه شما با مبانی برنامه نویسی آشنا بشید و ببینید اصلا برنامه چیه و ذهنیت یک برنامه نویس را پیدا کنید , و البته اگر مبانی برنامه نویسی را خوب یاد بگرید هر زبان برنامه نویس باشد برای شما آسان خواهد شد. ولی برای شروع زبان‌هایی مانند C یا پایتون خوب هستن اما چون در آردوینو با C و ++Cکد مینویسن شاید مفید باشه این دو را برای شروع انتخاب کنید . ابتدا C را یاد بگرید و بعد شی‌گرایی را در ++C یاد بگیرید و با مفاهیمی مانند شی و کلاس آشنا بشید . ولی اگر بخواهید متخصص رباتیک شوید و در سطح پیشرفته فعالیت کنید قطعا باید برنامه‌‌نویسی را خوب یاد بگیرید ولی هر مسیری را شروع کنید خود مسیر راه را نشون میده .میتونم بگم معمولاً ، هر میکروکنترلر به یک زبان خاصی برنامه نویسی می شود , که در ادامه چند مثال براتون معرفی میکنم :میکروکنترلر آردوینو ( Arduino ) : که از نرم افزار آردوینو استفاده می کند و با استفاده از زبان Processing قابل برنامه نویسی است .میکروکنترلر Basic Stamp : که از زبان PBasic استفاده می کند .میکروکنترلر Basic Atom : که از زبان Basic Micro استفاده می کند .میکروکنترلر Javelin Stamp از شرکت Parallax : که از زبان Javaاستفاده می کند .برای برنامه نویسی میکروکنترلر به طور خلاصه باید مراحل زیر طی شوند :دفترچه راهنمای کاربر را بررسی کنید .forum یا انجمن سازنده میکروکنترلر را بررسی کنید .برای پیدا کردن نمونه کدها ، اینترنت را بررسی کنید .برای درک نحوه کد نویسی ، دفترچه راهنما ( manual ) را بخوانید .نکات کلیدیکدها را به صورت بخش بخش و خوانا بنویسید و در یک فایل مشخص روی کامپیوتر ذخیره کنید تا به راحتی قابل دسترس باشد .هر بخش را با توضیحات یا comment گذاری شرح دهید : با comment گذاری به راحتی می توان فهمید که هر خط کد چه کاری انجام می دهد. هر چقدر که در برنامه نویسی پیشرفته تر شوید ، می توانید به جای comment گذاری برای هر خط کد برای مجموعه ای از کدها comment بگذارید .نسخه های مختلف کد را ذخیره کنید و بر روی همان فایل کپی نکنید : زیرا اگر که روزی متوجه شوید که 200+ خط کد شما کامپایل نمی شود ، دیگر نیازی نیست که کدها را خط به خط چک کنید و در عوض می توانید به نسخه ذخیره شده قبلی برگردید و در صورت لزوم آن را تغییر دهید . کد ، فضای زیادی از حافظه را اشغال نمی کند ، پس می توانید با خیال آسوده چندین نسخه کد را ذخیره کنید .هنگام debug کردن کدها ، ربات را روی زمین یا میز قرار ندهید تا ربات از لبه میز پرت نشود یا بر روی زمین وارونه نشود و اگر دیدید که ربات در حال نابودی خودش است آن را از برق بکشید .اگر کدی درست کار نمی کند ، برق را خاموش کنید زیرا هیچ اشکالی خود به خود رفع نمی شود و اگر ربات را از برق خارج نکنید ممکن است بخشی از آن خراب شود .یادگیری توابع و درک عملکرد آنها کمی مشکل است ولی اگر در برنامه ای یک قطعه کد دائما در حال تکرار باشد بهتر است که از توابع استفاده کرد تا برنامه ، ساده تر و بهینه شود .خب بریم سراغ برنامه نویسی کنترلر موتور کد نویسی این بخش کمی سخت تر هستش ، چونکه هیچ نمونه کدی مخصوص آردوینو در دسترس نیستش . کنترلر به پین Tx ( سریال ) آردوینو متصل شده و قبل از هر اقدامی منتظر یک “ بایت شروع ” است .0x 80 ( بایت شروع )0x 00 ( فقط مخصوص این کنترلر موتور می باشد ، اگر مقداری غیر از بایت شروع به کنترلر برسد ، هیچ اقدامی نمی کند ) .سیگنال هر موتور را به یک پین دیجیتال در آردوینو وصل کنید . ( موتورها را مستقیماً به آردوینو وصل نکنید چونکه هنگام آپلود کدها در آردوینو ، مشکل پیدا می کنند ) .سرعت موتورها از ( 0 تا 127 هگزا دسیمال است ) .من برای پیاده سازی این قسمت قطعه کدی به صورت زیر نوشتم :پس در نتیجه قرار دادن تک تک کدها در کنار هم سبب می شود که ربات به حرکت در بیاید . شاید تا اینجای کار یاد گرفته باشید که میکروکنترلر Arduino ( مغز ربات ) هستش . خوشبختانه برای برنامه نویسی سنسور فاصله که ربات با استفاده از این سنسور ها بچرخد یا به بالا و پایین , جلو و عقب حرکت کند , در نرم افزار آردوینو نمونه کد آماده وجود دارد که آدرس آنFile - > Examples - > Analog - > AnalogInOutSerial می باشد و همچنین برای حرکت سروو موتور ( چرخش و بالا و پایین رفتن ) نیز نمونه کد آماده وجود دارد و آدرس آن File - > Examples - > Servo - > Sweep می باشد . در زیر کدهای این بخش نوشته شده است . توجه کنید که نوشته های بعداز علامت ( // ) به معنی توضیحات یا comment است .نویسنده:حانیه خمسهاستاد:دکتر مریم حاجی اسمعیلی.دکترای علوم کامپیوتر از دانشگاه کینگستون لندن