برمجيات الروبوت  برنامج الروبوت هو مجموعة من الأوامر أو التعليمات المشفرة التي تخبر الجهاز الميكانيكي والنظام الإلكتروني، المعروفين معًا باسم الروبوت، بالمهام التي يجب القيام بها. يستخدم برنامج الروبوت لأداء المهام المستقلة. تم اقتراح العديد من أنظمة وأطر البرامج لجعل روبوتات البرمجة أسهل.  تهدف بعض برامج الروبوت إلى تطوير أجهزة ميكانيكية ذكية. تشمل المهام الشائعة حلقات التغذية الراجعة، والتحكم، وتحديد المسار، وتصفية البيانات، وتحديد مواقع البيانات ومشاركتها.  في حين أنه نوع معين من البرامج، إلا أنه لا يزال متنوعًا تمامًا. كل مصنع لديه برنامج الروبوت الخاص به. في حين أن الغالبية العظمى من البرامج تدور حول معالجة البيانات ورؤية النتيجة على الشاشة، فإن برنامج الروبوت مخصص للتلاعب بالأشياء أو الأدوات في العالم الحقيقي.  يتكون برنامج الروبوتات الصناعية من كائنات البيانات وقوائم التعليمات، والمعروفة باسم تدفق البرنامج (قائمة التعليمات). فمثلا، هي تعليمات للإنسان الآلي بالذهاب إلى البيانات الموضعية المسماة Jig1. بالطبع، يمكن أن تحتوي البرامج أيضًا على بيانات ضمنية على سبيل المثال عادةً ما توجد البيانات والبرنامج في أقسام منفصلة من ذاكرة وحدة تحكم الروبوت. يمكن للمرء تغيير البيانات دون تغيير البرنامج والعكس صحيح. على سبيل المثال، يمكن للمرء كتابة برنامج مختلف باستخدام نفس Jig1 أو يمكن تعديل موضع Jig1 دون تغيير البرامج التي تستخدمه.  نظرًا لطبيعة الملكية العالية لبرامج الروبوت، فإن معظم الشركات المصنعة لأجهزة الروبوت توفر أيضًا برامجها الخاصة. في حين أن هذا ليس غريباً في أنظمة التحكم الآلي الأخرى، فإن الافتقار إلى توحيد أساليب البرمجة للروبوتات يشكل تحديات معينة. على سبيل المثال، هناك أكثر من 30 مصنعًا مختلفًا للروبوتات الصناعية، لذلك هناك أيضًا 30 لغة برمجة مختلفة للروبوتات المطلوبة. هناك أوجه تشابه كافية بين الروبوتات المختلفة بحيث يمكن اكتساب فهم واسع النطاق لبرمجة الروبوت دون الحاجة إلى تعلم لغة الملكية الخاصة بكل جهة تصنيع.  تتمثل إحدى طرق التحكم في الروبوتات من العديد من الشركات المصنعة في استخدام معالج Post وبرنامج برمجة خارج الخط (الروبوتات). باستخدام هذه الطريقة، من الممكن التعامل مع لغة برمجة الروبوت الخاصة بالعلامة التجارية من لغة برمجة عالمية، مثل بايثون (لغة البرمجة). ومع ذلك، فإن تجميع وتحميل التعليمات البرمجية الثابتة خارج الخط إلى وحدة تحكم الروبوت لا يسمح للنظام الآلي بأن يكون على دراية بالحالة، لذلك لا يمكنه تكييف حركته والتعافي مع تغير البيئة. أصبح التحكم التكيفي الموحد في الوقت الفعلي لأي روبوت ممكنًا حاليًا باستخدام عدد قليل من أدوات الطرف الثالث المختلفة.  بعض الأمثلة على لغات برمجة الروبوت المنشورة موضحة أدناه.  المهمة بلغة إنجليزية بسيطة: كانت VAL واحدة من أولى «لغات» الروبوتات وتم استخدامها في Unimate robots. تم استخدام متغيرات VAL من قبل الشركات المصنعة الأخرى بما في ذلك Adept Technology. يستخدم Stäubli حاليًا VAL3.  برنامج مثال: مثال على برنامج Stäubli VAL3: trAppro هو متغير تحول ديكارتي. إذا استخدمنا مع الأمر المناسب، فلن نحتاج إلى تعليم نقطة P2 land P4، لكننا نقوم بتحويل نهج ديناميكي إلى موضع الانتقاء والمكان لتوليد المسار.  Epson RC + (مثال على الالتقاط بالمكنسة الكهربائية)  ROBOFORTH (لغة تعتمد على FORTH). P1 P3 GRIP WITHDRAW P5 UNGRIP WITHDRAW P1  من الواضح أن الروبوت لا ينبغي أن يواصل الحركة التالية حتى يتم إغلاق القابض تمامًا. التأكيد أو الوقت المسموح به ضمني في الأمثلة المذكورة أعلاه لـ CLOSEI و GRIP بينما يتطلب الأمر On Vacuum تأخيرًا زمنيًا لضمان الشفط المرضي.  لغة البرمجة ليجو مايندستورمز اي في 3 هي لغة بسيطة يمكن لمستخدميها التفاعل معها. إنها واجهة مستخدم رسومية (GUI) مكتوبة باستخدام لابفيو. النهج هو البدء بالبرنامج بدلاً من البيانات. تم إنشاء البرنامج عن طريق سحب الرموز إلى منطقة البرنامج وإضافتها أو إدراجها في التسلسل. لكل رمز، يمكنك بعد ذلك تحديد المعلمات (البيانات). على سبيل المثال، بالنسبة لرمز محرك المحرك، فإنك تحدد المحركات ومقدار حركتها. عند كتابة البرنامج، يتم تنزيله في «لبنة» Lego NXT (متحكم دقيق) للاختبار.  لغة البرمجة النصية هي لغة برمجة عالية المستوى تُستخدم للتحكم في تطبيق البرنامج، ويتم تفسيرها في الوقت الفعلي، أو «تُترجم أثناء التنقل»، بدلاً من أن يتم تجميعها مسبقًا. قد تكون لغة البرمجة النصية لغة برمجة للأغراض العامة أو قد تكون مقصورة على وظائف محددة تستخدم لزيادة تشغيل تطبيق أو برنامج نظام. تحتوي بعض لغات البرمجة النصية، مثل RoboLogix، على كائنات بيانات مقيمة في السجلات، ويمثل تدفق البرنامج قائمة الإرشادات أو مجموعة التعليمات المستخدمة في برمجة الروبوت.  تم تصميم لغات البرمجة بشكل عام لبناء هياكل البيانات والخوارزميات من البداية، بينما تهدف لغات البرمجة النصية بشكل أكبر إلى توصيل المكونات والتعليمات معًا أو «لصقها». وبالتالي، عادةً ما تكون مجموعة تعليمات لغة البرمجة النصية عبارة عن قائمة مبسطة بأوامر البرنامج التي تُستخدم لتبسيط عملية البرمجة وتوفير التطوير السريع للتطبيق.  نهج آخر مثير للاهتمام جدير بالذكر. تحتاج جميع التطبيقات الروبوتية إلى التوازي والبرمجة القائمة على الأحداث. التوازي هو حيث يقوم الروبوت بعمل شيئين أو أكثر في نفس الوقت. هذا يتطلب أجهزة وبرامج مناسبة. تعتمد معظم لغات البرمجة على الخيوط أو فئات التجريد المعقدة للتعامل مع التوازي والتعقيد الذي يصاحبها، مثل الوصول المتزامن إلى الموارد المشتركة. يوفر URBI مستوى أعلى من التجريد من خلال دمج التوازي والأحداث في جوهر دلالات اللغة. سيقوم الكود أعلاه بتحريك موتورات codice_33 codice_34 بالتوازي لجعل رأس الروبوت يتبع الوجه البشري المرئي في الفيديو الذي تلتقطه الكاميرا كلما رأى الروبوت وجهًا.  بغض النظر عن اللغة المستخدمة، فإن النتيجة النهائية لبرامج الروبوت هي إنشاء تطبيقات آلية تساعد الأشخاص أو تسليهم. تشمل التطبيقات برامج القيادة والتحكم والمهام. يشتمل برنامج القيادة والتحكم على واجهات المستخدم الرسومية للتحكم في الروبوت للروبوتات التي يتم تشغيلها عن بُعد، وبرنامج أمر بنقرة ونقر للروبوتات المستقلة، وبرامج جدولة للروبوتات المتنقلة في المصانع. يتضمن برنامج المهام واجهات سحب وإفلات بسيطة لإعداد طرق التسليم ودوريات الأمن وجولات الزوار؛ كما يتضمن أيضًا برامج مخصصة مكتوبة لنشر تطبيقات محددة. يتم نشر برنامج تطبيق الروبوت للأغراض العامة على منصات روبوتية موزعة على نطاق واسع.  تمثل أخطاء البرمجة اعتبارًا خطيرًا للسلامة، خاصة في الروبوتات الصناعية الكبيرة. تعني قوة وحجم الروبوتات الصناعية أنها قادرة على إلحاق إصابات خطيرة إذا تمت برمجتها بشكل غير صحيح أو استخدامها بطريقة غير آمنة. نظرًا للكتلة والسرعات العالية للروبوتات الصناعية، فمن غير الآمن دائمًا بقاء الإنسان في منطقة عمل الروبوت أثناء التشغيل التلقائي. يمكن للنظام أن يبدأ الحركة في أوقات غير متوقعة ولن يكون الإنسان قادرًا على الاستجابة بسرعة كافية في العديد من المواقف، حتى لو كان مستعدًا للقيام بذلك. وبالتالي، حتى إذا كان البرنامج خاليًا من أخطاء البرمجة، فيجب توخي الحذر الشديد لجعل الروبوت الصناعي آمنًا للعاملين البشريين أو التفاعل البشري، مثل تحميل الأجزاء أو تفريغها، أو إزالة انحشار جزء منه، أو إجراء الصيانة. "معيار ANSI / RIA R15.06-1999 الأمريكي الوطني للروبوتات الصناعية وأنظمة الروبوت - متطلبات السلامة (مراجعة ANSI / R15.06-1992)" من جمعية الصناعات الروبوتية هو المعيار المقبول بشأن سلامة الروبوتات. يتضمن ذلك إرشادات لكل من تصميم الروبوتات الصناعية، وتنفيذ أو دمج واستخدام الروبوتات الصناعية في أرض المصنع. يتم تناول العديد من مفاهيم السلامة مثل أدوات التحكم في السلامة، والسرعة القصوى أثناء وضع التدريس، واستخدام الحواجز المادية.