المشاركات في السلسلة:
8. نحن نتحكم من الهاتف ROS Control ، GPS العقدة7. توطين الروبوت: gmapping ، AMCL ، النقاط المرجعية على خريطة الغرفة6. المسافات مع ترميز عجلة ، خريطة الغرفة ، ليدار5. نحن نعمل في rviz وشرفة المراقبة: xacro ، أجهزة استشعار جديدة.4. قم بإنشاء محاكاة روبوت باستخدام محرري rviz و gazebo.3. تسريع ، تغيير الكاميرا ، إصلاح المشية2. البرمجيات1. الحديدآخر
مرة ، من خلال العمل مع OpenCV و ROS (نظام التشغيل الآلي) ، باستخدام كل قوة التوت pi 3b + ، تمكنا من الركوب على طول الخط ، ورؤية البسمة على وجوه الناس ، وكمامة حزينة من القطط وحتى الذهاب لمقابلتها.
لكن إلى جانب الخطوات الأولى المشجعة في مجال الروبوتات هذا ، اضطررت إلى مواجهة مجموعة من المهام الصغيرة: بطيئة التوت ، ومسافة صغيرة من الكاميرا ، والتي تعرفت على الوجه ، وانتقلت إلى الجانب أثناء القيادة ، وغيرها. سيتم وصف كيفية حلها ، بما في ذلك فتح آفاق صغيرة جديدة في تطوير ROS ، لاحقًا.
1. من خلال تشغيل كافة العقد (البرامج النصية في ROS) من مشروع تم تجميعه مسبقًا ، وبدء العمل مع مجموعات Haar ، أصبح من الواضح أن أداء جهاز كمبيوتر ذي لوحة واحدة لمثل هذه المهام لا يزال ضعيفًا إلى حد ما. على الرغم من أن حمل المعالج لم يصل إلى ذروته وتختلف خلال 80٪ ، إلا أن الروبوت فكر لفترة طويلة عندما رأى وجه شخص أو وجه قطة ، كان عليه اتباعها.
كان الشيء الأكثر حزناً هو أنه بعد خروج الوجه أو الوجه من مجال رؤية الكاميرا ، بدأ الروبوت يتحرك ، "التفكير" في أنه ذاهب إلى الكائن. بشكل عام ، كما هو الحال في M.Yu. يرمونتوف:
"المنبوذ منذ فترة طويلة تجولت
في صحراء العالم بلا مأوى ... ".
كانت المحاولات الأولى لتصحيح الموقف على النحو التالي:
- في عقدة إطلاق الكاميرا (على التوت بي) ، تم تقليل حجم الصورة الملتقطة من 640 × 480 60 إطارًا في الثانية إلى 320 × 240 15 إطارًا في الثانية.
cd /home/pi/rosbots_catkin_ws/src/rosbots_driver/scripts/rosbots_driver nano pi_camera_driver.py
أعطى هذا زيادة معينة في الإنتاجية ، لكن الصورة ككل ظلت بعيدة عن المثالية.
علاوة على ذلك ، في البرنامج النصي لبدء متابعة وجه شخص (follow_face.py) أو قطة (follow_cat2.py) ، تم تعليق الاستنتاجات على شاشة opencv نفسها. هذا هو كل شيء cv.imshow. الآن ، عند بدء الرحلة ، كان من المستحيل ملاحظة ما إذا كان الروبوت يرى صورة يتحرك إليها أم لا. حسنًا ، كان علي التضحية بالوضوح.
أيضًا ، تم تعليق مخرجات معلومات ROS نفسها في البرامج النصية: # rospy.loginfo.
هذا يقلل قليلا من الحمل وزيادة سرعة العمل.
ولكن ... كان من الضروري الخروج بشيء آخر.
2. بالإضافة إلى ذلك ، كان الروبوت قصر النظر بشكل رهيب. بعد تجربتنا وتوصياتنا السابقة في هذا المجال ، تم استخدام كاميرا عين السمكة:

توفر هذه الكاميرا زاوية عرض واسعة إلى حد ما وتتيح لك التقاط جزء كبير من الغرفة.
ومع ذلك ، كما اتضح فيما بعد ، فإن نتائجها في مجال جودة التعرف على الوجه لم تكن مثيرة للإعجاب ... لم يكن معجبًا بمكايلا ... نظرًا لنفس زاوية المشاهدة الواسعة التي تستخدمها الكاميرا ، فإنها تشوه في نفس الوقت الكائن القابل للتعريف نفسه. لهذا السبب ، لا تعمل شلالات Haar المستخدمة جيدًا. للإضاءة أيضًا تأثير كبير ؛ فعند التظليل ، تنخفض الجودة أكثر.
3. ولأعلى مستوى له ، افتقر الروبوت إلى السرعة الزاوية للالتواءات الواضحة ، وحتى على العتبات (وليس تلك التي تحتاج إلى تجاوزها) والسجاد ، كان عالقًا تمامًا. هنا ، أضاف الفلفل الفرق في قوة محركات "القوة نفسها" ، والتي لا تكاد تكون متساوية أبدًا ، حتى بعد ترك الدفعة نفسها. وبسبب هذا ، جنح الروبوت بشكل كبير إلى اليسار.
تحسين "الأداء".
حسنًا ، مع الأداء ، بدأ الموقف يتحسن بشكل ملحوظ عندما تم إنقاذ الميزة الرئيسية لـ ROS كنظام ، وهي: القدرة على توزيع الحمل على أجهزة مختلفة.
أي أنه يكفي تشغيل عقد الحركة والكاميرات والعقدة الرئيسية على التوت نفسه ، ويمكن وضع العقد الأخرى المحملة بشدة على أكتاف أنظمة أكثر قوة.
على سبيل المثال ، تثبيت ROS على جهاز كمبيوتر محمول أو نشر جهاز افتراضي.
في هذه الحالة ، تم اختيار الخيار الثاني.
من أجل عدم وصف كيفية تثبيت Ubuntu ، ROS على جهاز افتراضي ، نستخدم عبارة catch الخاصة بـ Winnie Jones "
نحن بحاجة إلى متطوع هامد ." قمنا بإعداده ... - يمكن تنزيل آلة افتراضية مع جميع الحشوات
هنا .
فيما يلي معلمات الجهاز الظاهري المقترح استخدامها:

من المعلوم أنك تقوم بنشر (تشغيل) على محطة عمل VMware.
كلمة المرور: التوت
الآن يمكنك تقييم الأداء عند هضم شلالات Haar على الحديد ، أقوى من التوت بي!
من أجل بدء تشغيل نظام ROS ، المقسم الآن إلى قسمين ، تحتاج إلى تحديد الجهاز الظاهري الذي تعمل فيه العقدة الرئيسية (ويبدأ تشغيله على التوت مباشرة بعد إقلاع النظام).
للقيام بذلك ، قم بتحرير bashrc في جهاز افتراضي:
sudo nano ~/.bashrc
في السطور الموجودة في نهاية الملف ، حدد عناوين IP:
export ROS_MASTER_URI=http://192.168.1.120:11311 export ROS_HOSTNAME=192.168.1.114
عنوان IP الأول هو عنوان p التوت ، أما عنوان IP الثاني فهو عنوان الجهاز الظاهري.
* يجب أن يكون الجهاز الظاهري والتوت على نفس الشبكة المحلية.
على التوت ، نفس bashrc سيكون مختلفا:
<source lang="bash">export ROS_MASTER_URI=http://192.168.1.120:11311 export ROS_HOSTNAME=192.168.1.120
اثنين من عناوين بروتوكول الإنترنت على مباراة التوت.
* لا تنسى إعادة التشغيل بعد تغيير bashrc.
كيف تبدأ نظام توزيع ROS؟
هناك نوعان من المحطات على التوت.
في الحركة الأولى:
rosrun rosbots_driver part2_cmr.py
في كاميرا التوت الثانية:
sudo modprobe bcm2835-v4l2 roslaunch usb_cam usb_cam-test.launch
في المجموع ، ستعمل عقدتان على التوت: واحدة تنتظر أمرًا يتحرك ، والثاني يرسل فيديو من الكاميرا إلى الشبكة.
للاتصال بالسيد والتحكم في الروبوت من لوحة المفاتيح ، الآن في الجهاز الظاهري ، تحتاج إلى تشغيل:
rosrun teleop_twist_keyboard teleop_twist_keyboard.py /cmd_vel:=/part2_cmr/cmd_vel
بنفس الطريقة ، بدلاً من الإدارة من جهاز افتراضي ، يمكنك تشغيل عقدة - تتبع وجه شخص:
cd /home/pi/rosbots_setup_tools/rpi_setup python follow_face.py
الآن إحصاءات جافة قليلاً حول النتائج التي توصلت إليها مع كاميرا pi التوت في عين السمكة في إعدادات مختلفة من الصورة الملتقطة من الكاميرا.
320 × 240 ، 30 إطارًا في الثانية:
وجه الرجل. 80-100 سم - تأثيرات الإضاءة ، من الناحية العملية لا ترى في الظل. من الأفضل توجيه المصباح نحو الوجه للتحسين. Smile ، بابتسامة ، يتعرف على الوجه بشكل أسرع.
وجه القط على ورقة A4. 15-30 سم.
عند 800 × 600 و 60 إطارًا في الثانية - يرى الوجه على مسافة 2-3 أمتار.
عند 1280 × 720 و 60 إطارًا في الثانية - يرى الوجه على مسافة 3-4 أمتار ، ولكن هناك إيجابيات كاذبة - ترى ساعة الحائط كوجه ، إلخ.
يتعرف القط على A4 بتأخير مدته 1-2 ثوانٍ ، على مسافة 1-1.5 متر.
تحميل الجهاز الظاهري 77-88 ٪.كما ترون ، عندما يتم تكبير نافذة الصورة الملتقطة من الكاميرا ، يزداد الحمل على الجهاز الظاهري والمسافة التي يرى فيها الروبوت الكائن. الحمل على التوت ينمو ، ولكن ليس بشكل ملحوظ. زادت سرعة التعرف مقارنة بتشغيل جميع العقد فقط على التوت بشكل ملحوظ.
علاج قصر النظر
أظهرت الإحصائيات أعلاه أنه من أجل تحسين الرؤية ، من الضروري زيادة دقة و fps للكاميرا ، ودفع أداء الجهاز الظاهري. ومع ذلك ، حتى في 1280 × 720 و 60 إطارًا في الثانية ، فإن المسافة إلى الكائن ليست كبيرة جدًا.
جاء حل هذه المشكلة بشكل غير متوقع.
كما تعلمون ، هناك مجموعة كاملة من الكاميرات متاحة للتوت. وبالنسبة لحالتنا كان واحد منهم مثاليًا ، وهو:

نتائجها هي كما يلي:
مع إضاءة صناعية في الغرفة يرى وجهه على مسافة 7-8 م! ليس من الضروري الابتسام)
800 × 600 و 60 إطارًا في الثانية - تنزيل. آلة افتراضية - 70-80 ٪ ، توت العليق - 21 ٪ (لا يوجد سوى العقد من الحركة والبدء في بث الكاميرا).
يتعرف القط على A4 بتأخير يتراوح بين 1-2 ثوانٍ ، ومسافة تتراوح بين 2 و 2.3 متر.كما ترون ، القطط تعاني مرة أخرى ، والتي يتم تحديدها على مسافات أقصر. ولكن السبب هنا على الأرجح في إعدادات شلالات هار ، وليس الكاميرا.
* تأتي هذه الكاميرا ، كقاعدة عامة ، كاملة مع آذان IR. ليس من الضروري استخدامها في ضوء النهار:

وهكذا ، أظهرت كاميرا التوت بي ، تختلف عن عين السمكة ، أفضل النتائج عند العمل مع الأشياء ، حتى في الإضاءة الاصطناعية ذات الجودة الرديئة. ومع ذلك ، لزيادة المسافة من الكاميرا ، كان علي أن أدفع بزوايا المشاهدة ويجب أخذ ذلك في الاعتبار.
الآن حول تحسين الهيكل وهدم الروبوت إلى الجانب
كما ذكر أعلاه ، لا يوجد عملياً أي محرك مزدوج ، والروبوت محكوم عليه بالقيادة إما إلى اليمين أو إلى اليسار ، وهذا يتوقف على كيفية تحول المحرك إلى أن يكون أكثر قوة ، وكل الأشياء الأخرى متساوية.
عادة ما يكون الفرق في الحركة متساويًا باستخدام برامج التشفير ، لأنها جيدة في مشروعنا. حول كيفية عمل هذا هناك
فيلم جيد.
ومع ذلك ، يمكنك هنا تبسيط كل شيء والقيام بخدعة صغيرة عن طريق تصحيح البرنامج النصي فقط لمتابعة وجه شخص ما (follow_face.py) أو قطة (follow_cat2.py) في جهاز افتراضي.
نحن مهتمون بالخطوط التالية:
اعتمادًا على مكان ومقدار ضربات الروبوت ، تحتاج إلى ضبط قيم z. في الكود أعلاه ، يتم تحديد القيم عند تشغيل برنامج تشغيل المحرك 12V.
من الممكن زيادة خصائص التشغيل الخاصة بالروبوت (السرعة وإمكانية المناورة) من خلال تطبيقه على برنامج تشغيل المحرك ، والذي يستخدم في المشروع (L9110s) بدلاً من 8 V - 12V. لكن من الأفضل عدم القيام بذلك دون تثبيت مثبت طاقة أو مكثف على الأقل ، لأن L9110s رقائق H- جسر حرق غرامة ، كما اتضح فيما بعد. ربما هذا يجعلهم رخيصة جدا. ومع ذلك ، فإن الروبوت يقود 12 فولت بمنتهى الروعة والغبطة.
بدلا من الاستنتاج
حسنًا ، الآن بعد توقف الروبوت عن العمل وتحسنت رؤيته ، يمكنك لعب الغميضة معه على سبيل المثال. أو لإجبار شيء ما على إحضاره من الطرف الآخر للغرفة. بالطبع ، أنتقل إلى مواجهة له ، كما بالنسبة للشخص.
أن تستمر.