برمجيات الروبوت

**برنامج الروبوت** هو مجموعة من الأوامر أو التعليمات المشفرة التي تخبر الجهاز الميكانيكي والنظام الإلكتروني، المعروفين معًا باسم الروبوت، بالمهام التي يجب القيام بها. يستخدم برنامج الروبوت لأداء المهام المستقلة. تم اقتراح العديد من أنظمة وأطر البرامج لجعل روبوتات البرمجة أسهل.

تهدف بعض برامج الروبوت إلى تطوير أجهزة ميكانيكية ذكية. تشمل المهام الشائعة حلقات التغذية الراجعة، والتحكم، وتحديد المسار، وتصفية البيانات، وتحديد مواقع البيانات ومشاركتها.

## مقدمة
في حين أنه نوع معين من البرامج، إلا أنه لا يزال متنوعًا تمامًا. كل مصنع لديه برنامج الروبوت الخاص به. في حين أن الغالبية العظمى من البرامج تدور حول معالجة البيانات ورؤية النتيجة على الشاشة، فإن برنامج الروبوت مخصص للتلاعب بالأشياء أو الأدوات في العالم الحقيقي.

## برنامج الروبوت الصناعي
يتكون برنامج الروبوتات الصناعية من كائنات البيانات وقوائم التعليمات، والمعروفة باسم تدفق البرنامج (قائمة التعليمات). فمثلا،
 Go to Jig1
هي تعليمات للإنسان الآلي بالذهاب إلى البيانات الموضعية المسماة Jig1. بالطبع، يمكن أن تحتوي البرامج أيضًا على بيانات ضمنية على سبيل المثال
 Tell axis 1 move 30 degrees.
عادةً ما توجد البيانات والبرنامج في أقسام منفصلة من ذاكرة وحدة تحكم الروبوت. يمكن للمرء تغيير البيانات دون تغيير البرنامج والعكس صحيح. على سبيل المثال، يمكن للمرء كتابة برنامج مختلف باستخدام نفس Jig1 أو يمكن تعديل موضع Jig1 دون تغيير البرامج التي تستخدمه.

## أمثلة على لغات البرمجة للروبوتات الصناعية
نظرًا لطبيعة الملكية العالية لبرامج الروبوت، فإن معظم الشركات المصنعة لأجهزة الروبوت توفر أيضًا برامجها الخاصة. في حين أن هذا ليس غريباً في أنظمة التحكم الآلي الأخرى، فإن الافتقار إلى توحيد أساليب البرمجة للروبوتات يشكل تحديات معينة. على سبيل المثال، هناك أكثر من 30 مصنعًا مختلفًا للروبوتات الصناعية، لذلك هناك أيضًا 30 لغة برمجة مختلفة للروبوتات المطلوبة. هناك أوجه تشابه كافية بين الروبوتات المختلفة بحيث يمكن اكتساب فهم واسع النطاق لبرمجة الروبوت دون الحاجة إلى تعلم لغة الملكية الخاصة بكل جهة تصنيع.

تتمثل إحدى طرق التحكم في الروبوتات من العديد من الشركات المصنعة في استخدام معالج Post وبرنامج برمجة خارج الخط (الروبوتات). باستخدام هذه الطريقة، من الممكن التعامل مع لغة برمجة الروبوت الخاصة بالعلامة التجارية من لغة برمجة عالمية، مثل بايثون (لغة البرمجة). ومع ذلك، فإن تجميع وتحميل التعليمات البرمجية الثابتة خارج الخط إلى وحدة تحكم الروبوت لا يسمح للنظام الآلي بأن يكون على دراية بالحالة، لذلك لا يمكنه تكييف حركته والتعافي مع تغير البيئة. أصبح التحكم التكيفي الموحد في الوقت الفعلي لأي روبوت ممكنًا حاليًا باستخدام عدد قليل من أدوات الطرف الثالث المختلفة.

بعض الأمثلة على لغات برمجة الروبوت المنشورة موضحة أدناه.

المهمة بلغة إنجليزية بسيطة:
 Move to P1 (a general safe position) 
 Move to P2 (an approach to P3)
 Move to P3 (a position to pick the object)
 Close gripper
 Move to P4 (an approach to P5)
 Move to P5 (a position to place the object)
 Open gripper
 Move to P1 and finish
كانت VAL واحدة من أولى «لغات» الروبوتات وتم استخدامها في Unimate robots. تم استخدام متغيرات VAL من قبل الشركات المصنعة الأخرى بما في ذلك Adept Technology. يستخدم Stäubli حاليًا VAL3.

برنامج مثال:
 `PROGRAM PICKPLACE`
 `   1. MOVE P1`
 `   2. MOVE P2`
 `   3. MOVE P3`
 `   4. CLOSEI 0.00`
 `   5. MOVE P4`
 `   6. MOVE P5`
 `   7. OPENI 0.00`
 `   8. MOVE P1`
 `.END`
مثال على برنامج Stäubli VAL3:
 b`egin`
 `   movej(p1,tGripper,mNomSpeed)`
 `   movej(appro(p3,trAppro),tGripper,mNomSpeed)`
 `   movel(p3,tGripper,mNomSpeed)`
 `   close(tGripper)`
 `   movej(appro(p5,trAppro),tGripper,mNomSpeed)`
 `   movel(p5,tGripper,mNomSpeed)`
 `   open(tGripper)`
 `   movej(p1,tGripper,mNomSpeed)`
 `en`d
trAppro هو متغير تحول ديكارتي. إذا استخدمنا مع الأمر المناسب، فلن نحتاج إلى تعليم نقطة P2 land P4، لكننا نقوم بتحويل نهج ديناميكي إلى موضع الانتقاء والمكان لتوليد المسار.

Epson RC + (مثال على الالتقاط بالمكنسة الكهربائية)
 `Function PickPlace`
 `        Jump P1`
 `        Jump P2`
 `        Jump P3`
 `        On vacuum`
 `      Wait.1`
 `        Jump P4`
 `        Jump P5`
 `        Off vacuum`
 `        Wait.1`
 `        Jump P1`
 `Fend`

ROBOFORTH (لغة تعتمد على FORTH).
```forth
: PICKPLACE
P1
P3 GRIP WITHDRAW
P5 UNGRIP WITHDRAW
P1
;
```
(باستخدام Roboforth، يمكنك تحديد مواضع الاقتراب للأماكن بحيث لا تحتاج إلى P2 و P4.)

من الواضح أن الروبوت لا ينبغي أن يواصل الحركة التالية حتى يتم إغلاق القابض تمامًا. التأكيد أو الوقت المسموح به ضمني في الأمثلة المذكورة أعلاه لـ CLOSEI و GRIP بينما يتطلب الأمر On Vacuum تأخيرًا زمنيًا لضمان الشفط المرضي.

## لغات برمجة الروبوت الأخرى

### لغة البرمجة المرئية
لغة البرمجة ليجو مايندستورمز اي في 3 هي لغة بسيطة يمكن لمستخدميها التفاعل معها. إنها واجهة مستخدم رسومية (GUI) مكتوبة باستخدام لابفيو. النهج هو البدء بالبرنامج بدلاً من البيانات. تم إنشاء البرنامج عن طريق سحب الرموز إلى منطقة البرنامج وإضافتها أو إدراجها في التسلسل. لكل رمز، يمكنك بعد ذلك تحديد المعلمات (البيانات). على سبيل المثال، بالنسبة لرمز محرك المحرك، فإنك تحدد المحركات ومقدار حركتها. عند كتابة البرنامج، يتم تنزيله في «لبنة» Lego NXT (متحكم دقيق) للاختبار.

### لغات البرمجة
لغة البرمجة النصية هي لغة برمجة عالية المستوى تُستخدم للتحكم في تطبيق البرنامج، ويتم تفسيرها في الوقت الفعلي، أو «تُترجم أثناء التنقل»، بدلاً من أن يتم تجميعها مسبقًا. قد تكون لغة البرمجة النصية لغة برمجة للأغراض العامة أو قد تكون مقصورة على وظائف محددة تستخدم لزيادة تشغيل تطبيق أو برنامج نظام. تحتوي بعض لغات البرمجة النصية، مثل RoboLogix، على كائنات بيانات مقيمة في السجلات، ويمثل تدفق البرنامج قائمة الإرشادات أو مجموعة التعليمات المستخدمة في برمجة الروبوت.

تم تصميم لغات البرمجة بشكل عام لبناء هياكل البيانات والخوارزميات من البداية، بينما تهدف لغات البرمجة النصية بشكل أكبر إلى توصيل المكونات والتعليمات معًا أو «لصقها». وبالتالي، عادةً ما تكون مجموعة تعليمات لغة البرمجة النصية عبارة عن قائمة مبسطة بأوامر البرنامج التي تُستخدم لتبسيط عملية البرمجة وتوفير التطوير السريع للتطبيق.

### اللغات الموازية
نهج آخر مثير للاهتمام جدير بالذكر. تحتاج جميع التطبيقات الروبوتية إلى التوازي والبرمجة القائمة على الأحداث. التوازي هو حيث يقوم الروبوت بعمل شيئين أو أكثر في نفس الوقت. هذا يتطلب أجهزة وبرامج مناسبة. تعتمد معظم لغات البرمجة على الخيوط أو فئات التجريد المعقدة للتعامل مع التوازي والتعقيد الذي يصاحبها، مثل الوصول المتزامن إلى الموارد المشتركة. يوفر URBI مستوى أعلى من التجريد من خلال دمج التوازي والأحداث في جوهر دلالات اللغة.
```urbiscript
whenever(face.visible)
 {
  headPan.val += camera.xfov * face.x
  &
  headTilt.val += camera.yfov * face.y
 }
```
سيقوم الكود أعلاه بتحريك موتورات `headPan و` `headTilt` بالتوازي لجعل رأس الروبوت يتبع الوجه البشري المرئي في الفيديو الذي تلتقطه الكاميرا كلما رأى الروبوت وجهًا.

## برنامج تطبيق الروبوت
بغض النظر عن اللغة المستخدمة، فإن النتيجة النهائية لبرامج الروبوت هي إنشاء تطبيقات آلية تساعد الأشخاص أو تسليهم. تشمل التطبيقات برامج القيادة والتحكم والمهام. يشتمل برنامج القيادة والتحكم على واجهات المستخدم الرسومية للتحكم في الروبوت للروبوتات التي يتم تشغيلها عن بُعد، وبرنامج أمر بنقرة ونقر للروبوتات المستقلة، وبرامج جدولة للروبوتات المتنقلة في المصانع. يتضمن برنامج المهام واجهات سحب وإفلات بسيطة لإعداد طرق التسليم ودوريات الأمن وجولات الزوار؛ كما يتضمن أيضًا برامج مخصصة مكتوبة لنشر تطبيقات محددة. يتم نشر برنامج تطبيق الروبوت للأغراض العامة على منصات روبوتية موزعة على نطاق واسع.

### اعتبارات السلامة
تمثل أخطاء البرمجة اعتبارًا خطيرًا للسلامة، خاصة في الروبوتات الصناعية الكبيرة. تعني قوة وحجم الروبوتات الصناعية أنها قادرة على إلحاق إصابات خطيرة إذا تمت برمجتها بشكل غير صحيح أو استخدامها بطريقة غير آمنة. نظرًا للكتلة والسرعات العالية للروبوتات الصناعية، فمن غير الآمن دائمًا بقاء الإنسان في منطقة عمل الروبوت أثناء التشغيل التلقائي. يمكن للنظام أن يبدأ الحركة في أوقات غير متوقعة ولن يكون الإنسان قادرًا على الاستجابة بسرعة كافية في العديد من المواقف، حتى لو كان مستعدًا للقيام بذلك. وبالتالي، حتى إذا كان البرنامج خاليًا من أخطاء البرمجة، فيجب توخي الحذر الشديد لجعل الروبوت الصناعي آمنًا للعاملين البشريين أو التفاعل البشري، مثل تحميل الأجزاء أو تفريغها، أو إزالة انحشار جزء منه، أو إجراء الصيانة. *معيار ANSI / RIA R15.06-1999 الأمريكي الوطني للروبوتات الصناعية وأنظمة الروبوت - متطلبات السلامة (مراجعة ANSI / R15.06-1992)* من جمعية الصناعات الروبوتية هو المعيار المقبول بشأن سلامة الروبوتات. يتضمن ذلك إرشادات لكل من تصميم الروبوتات الصناعية، وتنفيذ أو دمج واستخدام الروبوتات الصناعية في أرض المصنع. يتم تناول العديد من مفاهيم السلامة مثل أدوات التحكم في السلامة، والسرعة القصوى أثناء وضع التدريس، واستخدام الحواجز المادية.

## انظر أيضًا

* الروبوتات القائمة على السلوك وبنية الامتصاص
* الروبوتات التنموية
* الروبوتات اللاجينية
* الروبوتات التطورية
* روبوت صناعي
* الروبوتات المعرفية
* التحكم في الروبوت
* RoboLogix
* التخطيط والجدولة الآلية
* علم التحكم الذاتي
* الذكاء الاصطناعي
* جناح الروبوتات
* الروبوتات عن بعد / التواجد عن بعد
* برنامج التشغيل الآلي الروبوتي
* منصات الروبوتات سرب

## مراجع

 

## روابط خارجية

*  أجهزة Linux.
* ANSI / RIA R15.06-1999 المعيار الوطني الأمريكي للروبوتات الصناعية وأنظمة الروبوت - متطلبات السلامة (مراجعة ANSI / RIA R15.06-1992)

تصنيف:برمجيات روبوتيات
تصنيف:روبوتات