رباتیک

رباتیک: نمای کلی

در این نوشته، تعریف ربات را مو به مو بررسی می‌کنیم تا اجزای آن را بشناسیم.

ربات ماشینی است که می‌تواند:
از محیط خود حس کند و با آن تعامل داشته باشد، تصمیم‌های آگاهانه بگیرد، و برای رسیدن به اهداف مشخص، کارهایی را انجام دهد.

ربات را می‌توان بر پایهٔ دو مؤلفهٔ اصلی‌اش تشخیص داد: سخت‌افزار و نرم‌افزار.

---

 مؤلفه‌های سخت‌افزاری یک سیستم رباتیک خودمختار

تعریف ربات، چند شرط اساسی دارد که یک سیستم مکانیکی باید داشته باشد تا رباتیک محسوب شود.

ربات ماشینی است که می‌تواند:

«در جهان فیزیکی وجود داشته باشد» به کمک:

ساختار مکانیکی: 
ساختار مکانیکی یعنی بدنه و چهارچوب فیزیکی ربات. این ساختار، نگهدارندهٔ سایر اجزا است، شکل و اندازهٔ ربات را مشخص می‌کند و روی توانایی‌ها و تحرک آن اثر می‌گذارد. بسته به کاربری مورد نظر، ساختارهای مکانیکی می‌توانند از طرح‌های ساده تا پیکربندی‌های بسیار پیچیده باشند.

ارتباطات و مفاصل (Links and Joints):  
اجزای ساختاری صلب ربات را «ارتباطات» می‌نامند. از دید مهندسی، ممکن است ارتباطات ویژه‌ای هم وجود داشته باشد، مثل «انجام‌دهندهٔ نهایی» (End Effector) در بازوهای رباتیک. ارتباطات در زنجیره‌های به اصطلاح «سینماتیکی» قرار می‌گیرند که می‌توانند باز یا بسته باشند. هر دو ارتباط مجاور در زنجیرهٔ سینماتیکی با یک «مفصل» به هم وصل می‌شوند، درست مثل آرنج انسان و تاندون‌های آن. انواع گوناگونی از مفاصل داریم که هر کدام دستهٔ خاصی از درجات آزادی سیستم را محدود می‌کنند. (فقط اشاره کنم که شاخه‌ای از رباتیک به ارتباطات غیرصلب می‌پردازد به نام «رباتیک نرم».)

عملگرها (Actuators): 
عملگرها مکانیسم‌هایی هستند که وظیفهٔ جابجا کردن یا به حرکت درآوردن بدن ربات را بر عهده دارند. حرکت مفاصل توسط عملگرها باعث می‌شود ربات حرکت کند و نیروهای دلخواه را اعمال نماید. موتورها، سرووها، عملگرهای بادی (پنوماتیک)، عملگرهای هیدرولیک و ... نمونه‌هایی از عملگرها هستند. عملگرها دستورهای سیستم کنترل ربات را به حرکت فیزیکی تبدیل می‌کنند.

### «از محیط حس کند» به کمک:

سنسورها:  
سنسورها دستگاه‌هایی هستند که ویژگی‌های فیزیکی را شناسایی و اندازه می‌گیرند. اگر ویژگی‌های درونی ربات را اندازه بگیرند، «درون‌گیر» (proprioceptive) و اگر محیط پیرامون را درک کنند، «برون‌گیر» (exteroceptive) نامیده می‌شوند. سنسورها ورودیِ سیستم کنترل را فراهم می‌کنند و به ربات امکان می‌دهند محیط اطرافش را ببیند و تصمیم آگاهانه بگیرد.

سنسورهای درون‌گیر شامل انکودر، پتانسیومتر، تاکومتر، ژیروسکوپ، شتاب‌سنج (IMU)، جی‌پی‌اس و رزولور هستند. این سنسورها می‌توانند مثلاً زاویهٔ مفصل، سرعت زاویه‌ای مفصل، سرعت موتور، بار چرخ‌ها و موقعیت چرخ نسبت به یک نقطهٔ مرجع را اندازه بگیرند.

سنسورهای برون‌گیر شامل دوربین، رادار و لیدار می‌شوند. این‌ها ویژگی‌هایی مثل نور، صدا، دما، نزدیکی، فاصله و ... را اندازه می‌گیرند. آنها هم ورودی سیستم کنترل را تأمین کرده و به ربات برای درک محیط و تصمیم‌گیری آگاهانه کمک می‌کنند.

### و «تصمیم آگاهانه بگیرد» و «کارها را انجام دهد» با کمک:

سخت‌افزار محاسباتی:  
ربات‌ها برای پردازش اطلاعات و تصمیم‌گیری دربارهٔ چگونگی رسیدن به هدف، به یک مغز نیاز دارند. این مغز، همان سخت‌افزار محاسباتیِ تعبیه‌شده درون ربات خودمختار است. از آردوینو و رزبری پای گرفته تا انویدیا جتسان قدرتمند.

یک ربات هوشمند، تواناییِ حس کردن، حرکت کردن و تصمیم‌گیریِ شبیه به انسان را مدیون تاریخچهٔ عظیمی از پیشرفت‌های ریاضی و مهندسی است. به‌طور تقریبی همهٔ شاخه‌های ریاضی در این حوزه نقش دارند: آنالیز دیفرانسیل، جبر خطی، توپولوژی، بهینه‌سازی توابع، و همچنین کاربردهای مهندسی و فیزیکی آنها مانند یادگیری ماشین، یادگیری عمیق، سینماتیک، دینامیک، نظریهٔ کنترل، SLAM، برنامه‌ریزی حرکت، هندسهٔ چندنمایی، بینایی دو بعدی، بینایی سه بعدی، یادگیری تقویتی و غیره. این فهرست تقریباً بی‌پایان است.

همهٔ این الگوریتم‌ها در پشتهٔ نرم‌افزاری ربات محاسبه می‌شوند.

---

 پشتهٔ نرم‌افزاری یک سیستم رباتیک خودمختار

پشتهٔ نرم‌افزاری شامل «سیستم‌عامل توکار» (firmware) که روی سخت‌افزار ربات نشسته، و همچنین نرم‌افزارهای سطح‌بالاتر برای همهٔ زیرسیستم‌هاست.

زیرسیستم‌ها مسئول مدیریت مجموعهٔ خاصی از قابلیت‌های رباتیک هستند:

سینماتیک و دینامیک:  
سینماتیک و دینامیک دو جنبهٔ بنیادی در حرکت و رفتار سامانه‌های رباتیک هستند.  
سینماتیک به مطالعهٔ حرکت اجسام بدون در نظر گرفتن نیروهای ایجادکنندهٔ حرکت می‌پردازد و بر توصیف موقعیت، سرعت و شتاب سیستم‌های رباتیک تمرکز دارد، بی‌آنکه نیروها و گشتاورهای تولیدکنندهٔ آن حرکات را در نظر بگیرد. برای تعیین کامل وضعیت (pose) یک ربات، باید موقعیت و جهت هر دستگاه مختصاتِ مربوط به یک «ارتباط» را نسبت به دستگاه پایه یا دستگاه مختصات جهانی بدانیم.  
در مورد یک بازوی رباتیک، محاسبهٔ سینماتیک به دو زیرمسئله تقسیم می‌شود:  
- با داشتن مقادیر متغیرهای مفصلی ربات، پیدا کردن وضعیت انجام‌دهندهٔ نهایی (دست) که سینماتیک مستقیم نام دارد.  
- با پیچیدگی بیشتر، محاسبهٔ مقادیر متغیرهای مفصلی ربات وقتی وضعیت انجام‌دهندهٔ نهایی را داریم که سینماتیک معکوس خوانده می‌شود.  

از سوی دیگر، دینامیک به نیروها و گشتاورهایی می‌پردازد که باعث حرکت در سیستم‌های رباتیک می‌شوند. دینامیک بررسی می‌کند که نیروها و گشتاورها چگونه روی حرکت ربات تأثیر می‌گذارند، از جمله شتاب‌ها و سرعت‌های حاصل از آنها.

ادراک (Perception):  
ادراک مسئول پردازش داده‌های دریافتی از سنسورها و استخراج اطلاعات مفید از آنهاست. به کمک ادراک می‌توانیم اشیا را کشف و دسته‌بندی کنیم، نواحی را بخش‌بندی کنیم، الگوها را پیدا کنیم، اشیا را ردیابی کنیم، موقعیت و سرعت را محاسبه کنیم و غیره. وقتی همزمان از چند سنسور استفاده می‌شود، خیلی مهم است که داده‌ها (که در سیستم‌های واقعی همیشه با نویز همراه‌اند) به شکلی قابل اعتماد با هم تلفیق شوند تا تا حد امکان اطلاعات مفید بدهند.

محلی‌سازی و نقشه‌سازی (Localization and Mapping):  
ربات برای تصمیم‌گیری نیاز دارد محیط و موقعیت خودش را بشناسد. این دقیقاً وظیفهٔ تکنیک‌های محلی‌سازی و نقشه‌سازی است.

برنامه‌ریزی سطح بالا یا رفتاری (High Level / Behavioral Planning):  
پشتهٔ برنامه‌ریزی سطح بالا، اهداف ربات را در هر مرحله از اجرا مدیریت می‌کند. منطق آن بر اساس چیزی به نام «درخت رفتاری» (Behavioral Tree) کار می‌کند. برای مثال، این بخش تصمیم می‌گیرد که حرکت بعدی یک ربات زباله‌جمع‌کن، ادامهٔ جمع‌آوری زباله باشد یا برگردد به جایگاه خود برای شارژ باتری.

برنامه‌ریزی مسیر (Path Planning): 
الگوریتم‌های برنامه‌ریزی مسیر، بر اساس هدفی که از سطح بالا تعیین شده، یک مجموعه مختصات فضاییِ ایمن، بدون برخورد و عملی (شدنی) را برای ربات پیدا می‌کنند تا دنبال کند (همان مسیر). برای این کار، آنها به نقشهٔ دقیقی از محیط، یک تخمین درست از موقعیت ربات در آن محیط، و همچنین موقعیت اشیای شناسایی‌شده‌ای که ممکن است در مسیر باشند، نیاز دارند. می‌توان گفت پشتهٔ برنامه‌ریزی، سطحی است که بیش از همه به مفهوم ذهنی ما از «مغز انسان» نزدیک است.

کنترل (Control):  
در نهایت، لایهٔ کنترل با ارسال سیگنال‌های فرمان به عملگرهای مفاصل، مسئول حرکت دادن ربات است. عملگرها (و در کل همهٔ اجزای سیستم‌های واقعی) دچار خطا و نویز می‌شوند. هدف پشتهٔ کنترل، اطمینان از رسیدن به وضعیت‌های مطلوب (موقعیت مطلوب، سرعت مطلوب و ... یعنی «وضعیت خواسته شدهٔ ربات») است؛ و اگر به آنها نرسید، متوجه شود و فرمان‌های کنترلی را بر آن اساس تغییر دهد. هدف دیگر الگوریتم‌های کنترل، تأمین الزامات عملکردی مثل ایمنی و شدنی‌بودن (feasibility) است؛ مثلاً تجاوز نکردن از محدودهٔ مجاز نیروها و گشتاورها، یا تضمین پیچ‌های نرم و لذت‌بخش در ربات‌های متحرک.

---

هدف تمام مقاله‌ها و آموزش‌هایی که در این وبلاگ قرار می‌گیرد، فشرده‌سازی دنیای بسیار گسترده و میان‌رشته‌ای رباتیک به اندازهٔ قابل درکی است که از مفیدترین و جالب‌ترین قضایا، الگوریتم‌ها و کاربردها تشکیل شده باشد.

در این پست، یک نمای کلی سطح بالا از سیستم‌های رباتیک ارائه کردیم.