أساسياتُ برمجةِ الروبوتاتِ
بعد ان تعلمنا في الدرس السابق على مكونات الروبوت ،سوف نتعرف سويا على كيفية برمجة الروبوت من خلال بيئة افتراضية حتى نمكنه من التفاعل مع البيئة واتخاذ القرارات اللازمة .
أي انّ برمجة روبوت صناعي تختلف عن روبوت تنظيف المنازل، حيث أنّ الأول يتطلب تعليمات دقيقة لتنفيذ مهام متكررة بدقة عالية،بينما الثاني يتطلب خوارزميات للتنقل وتجنب العقبات.
ولنتذكر دومًا:
- تختلف مكونات الروبوتات وما يملكه من مستشعرات(حساسات) باختلاف المهمة التي سوف يؤديها.
- يجب تحديد المكونات الأساسية للروبوت ، المهام المتوقع من إنجازها والمهام التي سوف ينفذها قبل البدء بعملية البرمجة.
لماذا البرمجة في بيئة افتراضية؟
إنّ عملية البرمجة عملية دورية مستمرة،في كل مرة تُكتب فيها التعليمات،يتم اختبارها ومن ثم تعديلها إذا لزم الامر الى ان يتم الحصول على النتائج المطلوبة.
وعندما يتم برمجة الروبوت،يمكن للخلل أن يكون ناتجاً عن مصدر مختلف غير الخطأ في التعليمات. وهذا الأمر ممكن أن يؤدي الى اصطدام الروبوت أو سقوطه مما يسبب في تدميره أو كسره وبالتالي هدر في المال وتكلفة زائدة.
من هنا كان لا بد من برمجة الروبوت في مراحله الأولى وفحصه من خلال بيئة افتراضية تحاكي الواقع (Virtual Robotics Simulator) وذلك يوفر العديد من المزايا أثناء عملية تطوير الروبوتات وبرمجتها منها:
- السلامةُ.
- سهولةُ الوصولِ والتجريبِ.
- القدرةُ على التَّكرارِ السريعِ للتجاربِ.
- تقليلُ الكلفةِ.
- سهولةُ تطويرِ بيئاتِ عملٍ بظروفٍ وتحدياتٍ مختلفةٍ.
ولنتذكر أيضا:
إن البيئة الافتراضية تختلف عن الواقع،لأن هناك ظروفا ومتغيرات أخرى قد لا تؤخذ لااعتبار أثناء العمل على البيئة الافتراضية(وزن الروبوت،الاحتكاك،مستوى الإضاءة).لذا فإن نجاح عمل الروبوت في البيئة الافتراضية قد لا يعني بالضرورة بأن الروبوت سوف يعمل بذات الكفاءة في البيئة الحقيقية.
مُحاكي الروبوتاتِ الافتراضيُّ (Virtual Robotics Simulator)
إن محاكي الروبوتات الافتراضية هي بيئة محاكاة يمكن للأفراد فيها تصميم الآلات الروبوتية والتحكم فيها والتفاعل معها باستخدام مهارات برمجة الكمبيوتر. وتعتبر مفيدة بشكل خاص للعمل التعليمي وللتعلم عن الروبوتات من قبل الصغار،حيث تكون بيئة آمنة لممارسة وتجريب واكتساب المفاهيم التي ستصبح لاحقًا قابلة للتطبيق في بيئة حقيقية.
ويعد محاكي (VEX) ومن أشهر المحاكيات الفعالة التي يمكن الاعتماد عليها لبرمجة الروبوتات من نوع (VEX) والذي ممكن العمل عليه من خلال الموقع التالي:
بواسطة استخدام لغة البرمجة (Python) أو من خلال استخدام اللبنات الجاهزة الموجودة في الموقع والتي كل لبنة منها تمثل مجموعة من التعليمات والاوامر التي تم برمجتها سابقاً.
والآن دعنا نتعرف على بيئة العمل الخاصة بالمحاكي (VEX):
بمجرد الدخول الى الموقع https://vr.vex.com/
سوف تظهر معنا الصفحة التالية والتي تمثل الصفحة الرئيسة لمحاكي (VEX).
ويظهر في منتصفها صندوق الترحيب،والذي من خلال الضغط على (Next) تستطيع التعرف على خصائص الموقع من خلال جولة تعريفية حوله. (التعرف على صندوق الأدوات(ToolBox) والتعرف على وظائف بعض اللبنات الجاهزة بالإضافة الى التعرف على آلية البدء بالمشروع الخاص بك.
ومن ثم يمكنك البدء بالعمل على الشاشة الرئيسة التالية والتي تمثل:
بيئةُ العملِ (Playground)
يمكن التحكم في بيئة العمل الخاصة بك من خلال الضغط على الأمر (SELECT PLAYGROUND) والذي تحيط به دائرة صفراء ويشير له السهم الاحمر في الصورة التالية:
بعد الضغط على الامر (Select Playground) سوف تظهر لك العديد من بيئات العمل التي يمكنك العمل عليها حسب المشروع الخاص بك،مثل المتاهة، تحطيم القلعة،تتبع الأشكال،خريطة الارقام،... وغيرها من البيئات كما يظهر في الصورة التالية:
وعند اختيار بيئة العمل التي نريد العمل عليها، سوف يتم تحميلها في الشاشة الرئيسة التي تعرفنا عليها بالأعلى.ولنفترض أننا قمنا باختيار بيئة العمل التي تحمل الاسم (Dynamic Wall Maze)، سوف تظهر لدينا الشاشة التالية:
حيث تظهر رسمة المتاهة وهناك مجسم يمثل جسم الروبوت موجود عند نقطة البداية. و سوف يتم برمجة الروبوت ليقوم بالخروج من هذه المتاهة بأقصر وقت ممكن.
وحتى نستطيع اخراج الروبوت من هذه المتاهة،لا بد من القيام بتحريكه بالشكل الذي نراه مناسباً.
وتتم هذه الحركات من خلال ما يسمى بـ "اللبنات" أو ما يعرف في عالم الكمبوتر بـ (Blocks) والتي كما سبق وتعرفنا عليها عبارة عن مجموعة من الجمل البرمجية التي تم جمعها مع بعض للقيام بتنفيذ أمر معين ويتم معاملتها كوحدة واحدة .
وهناك العديد من اللبنات المتوافرة في بيئة العمل والتي تختلف باختلاف الوظيفة التي سوف تؤديها، وللتسيهل على المتعلم،تم إعطاء كل نوع من هذه اللبنات لون مختلف للتميز بينها أثناء بناء برنماج حركة الروبوت.
والآن دعنا نتعرف على بعض من أنواع اللبنات في بيئة العمل والتي تتمثل في الشكل التالي:
أنواع اللبنات في بيئة العمل:
لبناتُ الحركةِ (Movement Blocks)
هي اللبنات التي تساعد على التحكم بحركة الروبوت أثناء مساره، وتتضمن :
لبنات الإتجاه: الذي سوف يتحرك فيه الروبوت (أمام،خلف) مع المسافة التي سوف يقطعها
لبنات السرعة: التي سوف يتحرك بها الروبوت
لبنات الزاوية: التي سوف يتم فيها تغيير اتجاه الروبوت(90 درجة، 45 درجة،180 درجة،...)
ويمثل الجدول التالي بعض من هذه اللبنات (لونها أزرق ملكي) ووظيفة كل منها:
لبِناتُ العرضِ (Display Blocks)
وهي اللبنات التي من خلالها نستطيع التحكم بالروبوت لرسم خط حسب المسار المخصص له مع إمكانية تحديد لون الخط،حجمه وغيرها من الأامور بالمرتبطة برسم الخط.
وتظهر في بيئة العمل باللون البنفسجي، حيث يمثل الجدول التالي بعض من هذه اللبنات ووظيفة كل منها:
لبناتُ الاستشعارِ(Sensing Blocks)
وهي اللبنات التي نستطيع من خلالها التحكم بالروبوت.حيث تساعد المستشعرات (الحساسات) الموجودة في جسم الروبوت على معرفة إدراك والبيئة المحيطة بالروبوت، حيث يستطيع الروبوت من خلالها إدراك وجود جسم من عدمه،خصائص الجسم الذي في بيئته،بالإضافة الى إمكانيات تحديد إحداثياته.
وتظهر في بيئة العمل باللون االتركواز المائل للإخضرار، حيث يمثل الجدول التالي بعض من هذه اللبنات(المستشعرات) ووظيفة كل منها:
لبِنةُ الجذبِ (Magnet Block)
يتم استخدام هذه اللبنة لغايات التعامل مع الاجسام المعدنية القابلة للجذب والتي تتواجد في البيئة التي يتحرك فيها الروبوت. حيث يمكن تفعل خاصية الجذب من خلال الخيار(boost) أو ايقاف هذه الخاصية من خلال الأمر (drop).
ويظهر الشكل التالي شكل اللبنة الخاصة بالجذب: