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

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

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

مقدمة عدل

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

برنامج الروبوت الصناعي عدل

يتكون برنامج الروبوتات الصناعية من كائنات البيانات وقوائم التعليمات، والمعروفة باسم تدفق البرنامج (قائمة التعليمات). فمثلا،

Go to Jig1

هي تعليمات للإنسان الآلي بالذهاب إلى البيانات الموضعية المسماة Jig1. بالطبع، يمكن أن تحتوي البرامج أيضًا على بيانات ضمنية على سبيل المثال

Tell axis 1 move 30 degrees.

عادةً ما توجد البيانات والبرنامج في أقسام منفصلة من ذاكرة وحدة تحكم الروبوت. يمكن للمرء تغيير البيانات دون تغيير البرنامج والعكس صحيح. على سبيل المثال، يمكن للمرء كتابة برنامج مختلف باستخدام نفس Jig1 أو يمكن تعديل موضع Jig1 دون تغيير البرامج التي تستخدمه.

أمثلة على لغات البرمجة للروبوتات الصناعية عدل

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

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

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

المهمة بلغة إنجليزية بسيطة:

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.[3] تم استخدام متغيرات 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:

begin
   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)
end

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).

: PICKPLACE
P1
P3 GRIP WITHDRAW
P5 UNGRIP WITHDRAW
P1
;

(باستخدام Roboforth، يمكنك تحديد مواضع الاقتراب للأماكن بحيث لا تحتاج إلى P2 و P4.)

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

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

لغة البرمجة المرئية عدل

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

لغات البرمجة عدل

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

لغات البرمجة في الروبوتات الصناعية [4]
ماركة الروبوت اسم اللغة
ABB RAPID
كومو PDL2
فانوك Karel
كاواساكي AS
كوكا KRL
ستوبلي VAL3
ياسكاوا Inform

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

اللغات الموازية عدل

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

 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) من جمعية الصناعات الروبوتية هو المعيار المقبول بشأن سلامة الروبوتات. يتضمن ذلك إرشادات لكل من تصميم الروبوتات الصناعية، وتنفيذ أو دمج واستخدام الروبوتات الصناعية في أرض المصنع. يتم تناول العديد من مفاهيم السلامة مثل أدوات التحكم في السلامة، والسرعة القصوى أثناء وضع التدريس، واستخدام الحواجز المادية.

انظر أيضًا عدل

مراجع عدل

  1. ^ "The future of robot off-line programming". CoRo Blog. 25 أكتوبر 2015. مؤرشف من الأصل في 2021-02-26. اطلع عليه بتاريخ 2017-01-03.
  2. ^ RoboDK. "Offline programming - RoboDK". www.robodk.com. مؤرشف من الأصل في 2021-04-02. اطلع عليه بتاريخ 2017-01-03.
  3. ^ O. Nnaji، Bartholomew (1993). Theory of Automatic Robot Assembly and Programming (ط. 1993). Springer. ص. 5. ISBN:978-0412393105. مؤرشف من الأصل في 2021-08-16. اطلع عليه بتاريخ 2015-02-08.
  4. ^ "Robot programming languages". Fabryka robotów. مؤرشف من الأصل في 2018-07-17. اطلع عليه بتاريخ 2015-02-08.

 

روابط خارجية عدل