روبوتمقالات

برمجة الروبوتات باستخدام نظام تشغيل الروبوت ROS: المواضيع Topics

استعرضنا في المقالين السابقين ماهو نظام الـROS إضافة لمكوناته وقد تعرفنا أنه أحد ميزات النظام هي إمكانية فصل كل مهمة من مهام الروبوت إلى عقدة حتى لا يتم إيقاف كافة مهام الروبوت عن العمل في حال تواجد خطأ أو توقف أحد أجزاء الكود ولكن لا بدّ لهذه العقد من التواصل مع بعضها البعض وإرسال معلومات فيما بينها لإجراء تكامل في عمل الروبوت. يتم التواصل بين العقد بواسطة الـTopics وهذا ما سنتطرق إليه في هذا المقال.

 

ما هي الـ Topics؟

 

يمكننا تشبيه الـTopics كقناة تنتقل عبرها المعلومات من عقدة إلى عقدة أخرى، كما يمكننا نشر المعلومات و قراءتها عبر هذا الموضوع. كما استعرضنا في الدرس السابق، حيث قمنا بإرسال رسالة عبر rostopic وتم استقبالها من قبل قارئ(subscriber).

يتوفر في ROS حزمة package مخصصّة لفهم الأدوات وتعلّم النظام بشكل أكثر بساطة تُدعَى بـturtlesim.

بداية نشغل العقدة الرئيسية في ROS عبر التعليمة:

لاستعراض قائمة بالمواضيع الموجودة في النظام:

ولاستعراض قائمة بالعقد المفعلة:

توفّر Turtlesim محاكي بسيط لتعليم مفاهيم الـROS الأساسية، ولتشغيل المحاكي:

حيث:

  • rosrun:تسمح بإجراء تنفيذ لعقدة ما.
  • Turtlesim:اسم الـpackage.
  • turtlesim_node:اسم العقدة التي سنقوم بتنفيذها.

عند تنفيذ التعليمة السابقة نلاحظ انبثاق النافذة التالية:

لنستعرض من جديد قائمة العقد المفعلة وقائمة المواضيع، لنرى هل طرأ أي تغيير عليها؟

نجد المواضيع التالية: /turtle1/cmd_vel،/turtle1/color_sensor،/turtle/pose جديدة!، بالإضافة إلى وجود عقدة جديدة في قائمة العقد تدعى turtlesim. من أين أتت هذه المواضيع؟ أتت من المحاكي turtlesim التي قمنا بتشغيله.

ولكن ماذا إذا أردنا معرفة معلومات عن هذه العقدة؟ بكل بساطة عن طريق التعليمة:

نلاحظ بأنها تقوم بإجراء نشر لموضوعين: Color_sensor & pose وأن هناك قارئ يدعى cmd_vel وهو يمثل السرعة المطلوبة. ولكن ماهو الـ cmd_vel؟ لمعرفة معلومات أكثر عنه نكتب:

أول خيار هو type حيث يمثّل الـ geometry_msgs اسم الحزمة(package) والتي تحوي مجموعة من أنواع الرسائل ومنها Twist فهو يمثل نوع الرسائل التي تُرسَل إلى الروبوت ليقوم بالحركة وهو متواجد داخل الحزمة geometry_msgs ولا يوجد أي ناشر لهذا الموضوع.  للتعرّف على مضمون رسالة الـTwist نكتب :

فنرى أنها مكونة من شعاعين:السرعة الخطية والسرعة الزاوية على المحاور x وy وz. إضافة إلى أن لهذا الموضوع قارئ وحيد وهو الـturtlesim .

كما يمكننا أيضا رؤية مضمون رسالة الموضوع الثاني عن طريق:

فنرى أنها تحوي على الإحداثيات x,y إضافة إلى الاتجاه theta و السرعة الخطية والسرعة الزاوية.

لنقم الآن بتحريك الروبوت، ولكن كيف ذلك!! وذلك بإجراء تفعيل للعقدة المسؤولة عن تحريك الروبوت بواسطة لوحة المفاتيح وتُدعَى هذه العقدة بـ turtle_teleop_key حيث تسمح بإرسال أوامر السرعة إلى الروبوت عبر الموضوع cmd_vel.

يتم التحكم بالسلحفاة عن طريق الأسهم في لوحة التحكم. للتأكد من أن العقدة turtle_teleop_key ترسل أوامر السرعة عبر الموضوع cmd_vel نضع التعليمة:

نجد بأنه قد أصبح هناك ناشر للموضوع وهي العقدة التي قمنا بإجراء تفعيل لها لتحريك الروبوت.

نذهب الآن لنافذة الـturtle_teleop_key  ونحرّك أسهم لوحة المفاتيح ونرى بأن الروبوت بدأ بالحركة.ومن الممكن أيضاً رؤية قيم السرعة التي يتحرك بها الروبوت :

هذا يعني أن السلحفاة تتحرك إلى الأمام بسرعة خطية قدرها. 2m/sec ومن الممكن أيضاً رؤية موضع الروبوت وذلك:

وهناك طريقة أخرى لإرسال قيم السرعة إلى الروبوت بواسطة نافذة سطر الأوامر :

  • rostopic pub:تعليمة الإرسال.
  • /turtle1/cmd_vel:اسم الموضوع.
  • geometry_msgs/Twist: نوع الرسالة التي سيتم إرسالها.

تتمة التعليمة هي قيمة الرسالة المراد إرسالها للعقدة المحددة بالنوع المحدّد.

ملاحظة: نستطيع عرض كل العقد والمواضيع الفعالة على النظام بشكل مخطط باستخدام rqt_graph:

يمكننا ملاحظة أن العقدتين teleop_turtle و turtlesim متصلتين مع بعضهما البعض بواسطة موضوع يُدعَى turtle1/cmd_vel/.

في النهاية وكتلخيص لقد تعرّفنا على أحد الطرق التي يمكن للعقد أن تتواصل عن طريقها وهي الـtopics حيث يمكننا بواسطتها إرسال معلومات للروبوت وأخذ معلومات عن طريق الحساسات الموجود عليه.ولكن ليست هذه الطريقة الوحيدة للتواصل بين العقد وإنما هناك طريقتين أخرتين سنتعرّف عليها في المقالات اللاحقة. يمكنك أيضاً في هذه الأثناء الاطلاع على كيفية بناء يد روبوتية من الصفر باستخدام ROS.

 

المراجع

 

http://wiki.ros.org/ROS/Tutorials/UnderstandingTopics

Maisa jazba

مهندسة ميكاترونيك من جامعة حلب في سوريا تعمل كمحاضرة في جامعة حلب. ميسة تؤمن بأنه يجب إعطاء الشباب المعلومة العلمية الصحيحة وإفادتهم بالشكل العملي من خلال لمس العتاد والتفاعل معه والابتعاد عن فكرة أن كل شيء محاكاة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.