الالتقاط الروبوتي من الحاويات (Bin Picking) بالرؤية ثلاثية الأبعاد: كيف يعمل من البداية إلى النهاية
كيف يعمل نظام التقاط القطع من الحاويات بالرؤية الحاسوبية، من الكاميرا ثلاثية الأبعاد إلى الروبوت: التجزئة، وتقدير الوضعية مقابل نموذج CAD، واختيار نقطة الإمساك، وROS 2.
يبدو الالتقاط من الحاويات (bin picking) بسيطًا: روبوت ينظر في صندوق قطع ملقاة عشوائيًا ويخرجها واحدة تلو الأخرى. الإنسان يفعل ذلك دون تفكير. أما للآلة، فهو من المشكلات الكلاسيكية الصعبة في الأتمتة الصناعية، لأن كل عملية التقاط تبدأ من مشهد مختلف وفوضوي.
كنت مسؤولًا عن برمجيات PickNet، منظومة الرؤية والتحكم لخلية التقاط صناعية بناها فريق AutoMates. الخلية الروبوتية والأجهزة والتكامل كانت عملًا جماعيًا، والمنظومة من الكاميرا إلى نقطة الإمساك كانت مسؤوليتي. إليك كيف يعمل نظام كهذا، مرحلة بمرحلة، وأين تكمن الصعوبة الحقيقية.
ما الذي يجب أن يحله الالتقاط الروبوتي
لالتقاط قطعة واحدة، يجب أن يجيب النظام عن أربعة أسئلة في كل مرة:
- أين القطع؟ أي بكسلات وأي نقاط ثلاثية الأبعاد تنتمي إلى أي جسم.
- ما اتجاه كل قطعة؟ وضعيتها الكاملة بست درجات حرية (6D): الموقع والدوران في الأبعاد الثلاثة.
- أي قطعة أختار، ومن أين أمسكها؟ نقطة إمساك يصل إليها الماسك دون أن يصطدم بالحاوية أو بالقطع الأخرى.
- كيف يصل الروبوت إليها؟ حركة خالية من التصادم من موضع الذراع إلى نقطة الإمساك ثم الخروج.
خطأ واحد في أي منها، فيخطئ الروبوت القطعة أو يسقطها أو يصطدم بجدار الحاوية.
المنظومة مرحلة بمرحلة
هكذا يعمل PickNet.
1. كاميرا ثلاثية الأبعاد تنظر في الحاوية
تلتقط كاميرا Zivid ثلاثية الأبعاد صورة الحاوية. بدل صورة مسطحة، تحصل على سحابة نقاط: لكل بكسل قيمة عمق. وهذا العمق هو ما يجعل الالتقاط ثلاثي الأبعاد ممكنًا. فالصورة ثنائية الأبعاد قد تخبرك بوجود قطعة، لكنها لا تخبرك بدقة كيف هي مائلة.
2. التجزئة: قناع لكل قطعة
النموذج الأول يفصل المشهد إلى قطع منفردة. يستخدم PickNet نموذج FastSAM، وهو نموذج تجزئة تأسيسي، على عامل GPU مخصص. ويُرجع قناعًا لكل قطعة في الصورة خلال ثانية تقريبًا.
ميزة النموذج التأسيسي هنا أنك لا تحتاج إلى تدريب شبكة تجزئة من الصفر لكل قطعة جديدة، فهو يعرف أصلًا كيف يفصل الأجسام بشكل عام.
3. تقدير الوضعية مقابل نموذج CAD
القناع يحدد النقاط التي تنتمي إلى القطعة، لكنه لا يحدد وضعيتها. لذلك يُقتطع كل قناع من سحابة النقاط ويُطابَق مع نموذج CAD للقطعة.
هذه هندسة ثلاثية الأبعاد كلاسيكية، مبنية بمكتبة Open3D:
- RANSAC يجد محاذاة أولية بين نموذج CAD والنقاط المرصودة، حتى مع كثير من الضوضاء والبيانات الناقصة.
- ICP (أقرب نقطة تكرارية) يحسّن المحاذاة حتى ينطبق النموذج على السطح المرصود.
- VSD (تباين السطح المرئي) يقيّم جودة المطابقة، فلا تمر إلا الوضعيات الموثوقة.
لهذه الخطوة الأخيرة أهمية أكبر مما تبدو. وضعية خاطئة بثقة عالية هي أسوأ نتيجة ممكنة. الأفضل تخطي قطعة على إرسال الروبوت إلى مكان ليست فيه.
4. اختيار نقطة الإمساك
مع وضعية موثوقة، يعرف النظام بالضبط أين القطعة وكيف هي موجهة، فيضع عليها نقطة إمساك يستطيع الماسك استخدامها فعلًا. وإلى جانب الهندسة، عملت أيضًا على نماذج لتقييم جودة الإمساك (شبكات CNN وVision Transformers)، دُرّبت جزئيًا على بيانات اصطناعية لتغطية الحالات النادرة.
5. التسليم إلى الروبوت
جسر ROS 2 يحوّل نقطة الإمساك إلى الإطار المرجعي لقاعدة الروبوت وينشرها إلى آلة حالات في MoveIt 2. ويخطط MoveIt الحركة، مع نمذجة الماسك لكشف التصادم، حتى لا تصطدم الذراع بالحاوية أو بالقطع المجاورة.
كيف تُنظَّم البرمجيات
تعمل المنظومة على شكل خمس خدمات Docker على شبكة مشتركة، تربط بينها Redis. التجزئة تُقدَّم كخدمة مصغّرة على GPU عبر Redis، وباقي المنظومة موزع على الخدمات الأخرى.
لهذا التقسيم فوائد عملية:
- كل جزء يُطوَّر ويُعاد تشغيله ويُستبدل وحده. تغيّر نموذج التجزئة دون لمس شيفرة الروبوت.
- عمل GPU معزول. النموذج الثقيل في مكان واحد، والباقي خفيف.
- كل شيء قابل للقياس. كل تشغيل يكتب خطًا زمنيًا وتقرير أداء، وهكذا قيس الزمن الكلي، نحو 3.3 ثانية من صورة الكاميرا إلى وضعية الإمساك، وجرى تحسينه.
القياس من اليوم الأول هو العادة التي أنصح بها أكثر من غيرها. لا يمكنك جعل منظومة أسرع أو أكثر موثوقية دون أن تعرف أين يذهب الوقت وأين تحدث الأخطاء.
العمل على البيانات
النماذج لا تكون أفضل من بياناتها. وخلف المنظومة جزء أقل ظهورًا: وسم الصور الحقيقية، وتوليد بيانات اصطناعية، والتدريب، والاستدلال، ونشر النماذج.
والبيانات الاصطناعية تستحق ذكرًا خاصًا. الحاويات الحقيقية نادرًا ما تعطيك أمثلة كافية للحالات الصعبة: قطع واقفة على حافتها، أو نصف مدفونة، أو إضاءة غير معتادة. وتوليد هذه المشاهد اصطناعيًا يتيح التدريب على حالات قد يستغرق جمعها يدويًا أسابيع.
الصعوبات في الالتقاط ثلاثي الأبعاد
مشكلات تتكرر في كل مشروع تقريبًا:
- القطع اللامعة والعاكسة. المعدن يعكس الضوء بطريقة تترك ثقوبًا أو ضوضاء في سحابة النقاط. إعدادات الكاميرا وزاوية الرؤية والإضاءة كلها مهمة.
- الحجب. القطع المتراكمة لا يظهر منها إلا جزء، ما يصعّب التجزئة وتقدير الوضعية.
- القطع المتشابكة أو المتداخلة. التقاط واحدة قد يسحب أخرى معها.
- القطع الأخيرة. الملتصقة بجدران الحاوية أو زواياها يصعب الوصول إليها دون تصادم.
- معرفة متى تتوقف. يحتاج النظام إلى قاعدة واضحة عندما لا يوجد التقاط موثوق: هز الحاوية، أو إعادة التصوير، أو طلب المساعدة، بدل التخمين.
لا شيء من هذا يُحل بنموذج أفضل وحده، بل بعمل النظام كله معًا: الكاميرا والرؤية والتقييم وتخطيط الحركة والبدائل المعقولة.
متى يستحق الالتقاط من الحاويات العناء
يكون الالتقاط الروبوتي منطقيًا عندما تصل القطع بكميات كبيرة، والمهمة متكررة، والبديل شخص يغذي آلة طوال اليوم، أو تجهيزات ومغذّيات مكلفة لكل نوع قطعة. ويصعب تبريره عندما تكون القطع متنوعة جدًا، أو صغيرة جدًا، أو يسهل ترتيبها في مرحلة سابقة من العملية.
وأفضل طريقة للمعرفة هي اختبار جدوى بقطعك الحقيقية وكاميرا ثلاثية الأبعاد قبل الالتزام بخلية كاملة.
والمبادئ نفسها تنطبق على أنظمة ذكاء اصطناعي أخرى: قِس كل شيء، وفضّل التخطي الآمن على التخمين الخاطئ. اطّلع على كيف أصمم الأنظمة متعددة الوكلاء والذكاء الاصطناعي الخاص على أجهزتك.
لنعمل معًا
أنا إدريس بريكسين، مهندس برمجيات وتعلّم آلة مقيم في المغرب. أبني أنظمة الرؤية الحاسوبية والإدراك ثلاثي الأبعاد والذكاء الاصطناعي من البداية إلى النهاية، من البيانات والتدريب إلى برمجيات الإنتاج. اطّلع على دراسة حالة PickNet وباقي أعمالي.
إذا كنت تدرس مشروع التقاط من الحاويات أو مشكلة رؤية أخرى، أرسل لي وصفًا موجزًا وسأخبرك بصراحة بما هو ممكن.