مرحبًا يا من هناك! بصفتي مورد AGV ، لدي الكثير من الخبرة في برمجة هذه المركبات الموجهة الآلية الأنيقة. اليوم ، سأمشي لك خلال عملية برمجة AGV ، ومشاركة بعض النصائح والحيل على طول الطريق.
فهم أساسيات برمجة AGV
أول الأشياء أولاً ، دعنا نتحدث عن ماهية AGV. ومركبة موجهة الآليةهي مركبة تنقل الذات التي تنقل المواد حول منشأة دون الحاجة إلى مشغل بشري. يتم استخدامها في جميع أنواع الصناعات ، من التصنيع إلى المستودعات ، لتحسين الكفاءة وتقليل تكاليف العمالة.
قبل البدء في البرمجة ، تحتاج إلى فهم أجهزة AGV. عادة ما يتكون من الهيكل والمحركات وأجهزة الاستشعار ووحدة التحكم. المستشعرات حاسمة لأنها تساعد AGV "رؤية" بيئتها. تشمل أجهزة الاستشعار الشائعة ماسحات الضوئية بالليزر والكاميرات وأجهزة استشعار القرب.


اختيار لغة البرمجة المناسبة
هناك العديد من لغات البرمجة التي يمكنك استخدامها لبرمجة AGV. يعتمد الاختيار على تعقيد المهام وقدرات نظام التحكم في AGV.
- بيثون: إنه خيار شائع لأنه من السهل التعلم ولديه عدد كبير من المكتبات. على سبيل المثال ، يمكنك استخدام
numpyمكتبة للحسابات العددية وOpenCVلمهام رؤية الكمبيوتر إذا كان AGV مجهزًا بكاميرات. - C/C ++: هذه اللغات منخفضة المستوى وتوفر أداء أفضل. إنها رائعة للمهام التي تتطلب التحكم الحقيقي في الوقت ، مثل التحكم في المحرك ومعالجة بيانات المستشعر.
تحديد مهام AGV
والخطوة التالية هي معرفة المهام التي يحتاجها AGV إلى القيام بها. قد يكون هذا شيئًا بسيطًا مثل الانتقال من النقطة A إلى النقطة B أو معقدة مثل التقاط العناصر وإسقاطها في مواقع متعددة.
دعنا نقول أنك تريد أن تتحرك AGV على طول مسار محدد مسبقًا. ستحتاج إلى تحديد إحداثيات المسار. يمكنك استخدام نظام إحداثيات بناءً على تخطيط منشأتك. على سبيل المثال ، إذا كانت منشأتك مستودعًا ، فيمكنك استخدام صفوف وأعمدة رفوف التخزين كمرجع.
برمجة حركة AGV
تخطيط المسار
يعد تخطيط المسار جزءًا رئيسيًا من برمجة AGV. تحتاج إلى العثور على أقصر وأكثر مسار لـ AGV للوصول إلى وجهتها. هناك العديد من الخوارزميات التي يمكنك استخدامها لتخطيط المسار:
- أخوارزمية*: هذه خوارزمية شعبية للعثور على أقصر مسار في الرسم البياني. يأخذ في الاعتبار المسافة بين العقد والتكلفة المقدرة للوصول إلى الهدف. يمكنك تمثيل تخطيط منشأتك كرسوم بيانية ، حيث تكون العقد نقاطًا على الأرض والحواف هي المسارات المحتملة بين النقاط.
- Dijkstra's Algorithm: على غرار خوارزمية A* ، لكنها لا تستخدم التكلفة المقدرة للهدف. إنه ببساطة يجد أقصر مسار من عقدة البداية إلى جميع العقد الأخرى في الرسم البياني.
إليك مثال بسيط على كيفية تنفيذ خوارزمية A* في Python:
استيراد eyspq def eyricistic (a ، b): return abs (a [0] - b [0]) + abs (a [1] - b [1]) def a_star (array ، start ، الهدف): الجيران = [(0 ، 1) ، (0 ، -1) ، (1 ، 0) ، (-1 ، 0)] {start: eyuristic (ابدأ ، الهدف)} oheap = [] heapq.heapsush (oheap ، (fscore [start] ، start)) بينما oheap: current = heapq.heappop (Oheap) = Current [0] + i ، current [1] + j trumm_g_score = gscore [current] + eyuristic (الحالي ، الجار) إذا كان 0 <= جار [0] <len (صفيف): إذا كان 0 <= جار [1] <len (صفيف [0]): إذا كان الجار [0] trummred_g_score> = gscore.get (جار ، 0): متابعة إذا remtistive_g_score <gscore.get (جار ، 0) أو الجار ليس في [i [1] لأني في oheap]: comef_from [heauristic] (fscore [الجار] ، الجار)) لا شيء
السيطرة على المحرك
بمجرد التخطيط لك ، تحتاج إلى التحكم في محركات AGV لمتابعة المسار. يحتوي نظام التحكم في AGV عادةً على برنامج تشغيل محرك يمكن التحكم فيه عن طريق إرسال الأوامر.
إذا كنت تستخدم متحكمًا للسيطرة على AGV ، فيمكنك استخدام تعديل عرض النبض (PWM) للتحكم في سرعة المحركات. تعمل PWM من خلال تغيير عرض النبضات المرسلة إلى برنامج تشغيل المحرك ، والذي بدوره يتحكم في متوسط الجهد المطبقة على المحرك.
إليك مثال بسيط على كيفية التحكم في محرك باستخدام PWM في Arduino (والذي يستخدم C/C ++):
const int motorpin = 9 ؛ setup void () {pinmode (motorpin ، output) ؛ } void loop () {// قم بتعيين سرعة المحرك إلى 50 ٪ analogwrite (motorpin ، 128) ؛ التأخير (1000) ؛ // قم بتعيين سرعة المحرك إلى 100 ٪ التناظرية (Motorpin ، 255) ؛ التأخير (1000) ؛ }
التعامل مع العقبات
أحد التحديات في برمجة AGV هو التعامل مع العقبات. يجب أن تكون AGV قادرة على اكتشاف العقبات في طريقها وإما تجنبها أو التوقف بأمان.
اكتشاف العقبات
كما ذكرنا سابقًا ، يمكن استخدام أجهزة استشعار مثل ماسحات الليزر والكاميرات للكشف عن العقبات. ينتشر ماسح الضوئي بالليزر عوارض الليزر ويقيس الوقت الذي يستغرقه الحزم لترتد. إذا كانت هناك عقبة في المسار ، فسيكون وقت الرحلة أقصر.
يمكن أيضًا استخدام الكاميرات للكشف عن العقبات. يمكنك استخدام تقنيات رؤية الكمبيوتر لتحليل الصور التي التقطتها الكاميرا وتحديد الكائنات في المشهد.
تجنب العقبات
بمجرد اكتشاف عقبة ، يحتاج AGV إلى تجنبها. طريقة واحدة للقيام بذلك هي إعادة - التخطيط للمسار. يمكنك استخدام خوارزميات تخطيط المسار نفسها المذكورة سابقًا ، ولكن مع معلومات محدثة حول العقبة.
نهج آخر هو استخدام استراتيجية التحكم التفاعلية. على سبيل المثال ، إذا اكتشف AGV عقبة على يسارها ، فيمكن أن يتجنب ذلك لتجنب ذلك.
برمجة للمهام المتخصصة
معالجة الحمل
إذا تم تصميم AGV الخاص بك للتعامل مع الأحمال ، مثل أمركبة مرشد بالليزر الثقيلة، تحتاج إلى برمجة آلية معالجة الحمل. هذا يمكن أن يتضمن التحكم في ذراع روبوتية أو حزام ناقل.
ستحتاج إلى تحديد الإجراءات لالتقاط الحمل. على سبيل المثال ، إذا كانت AGV تستخدم ذراعًا آلية ، فأنت بحاجة إلى برمجة حركة مفاصل الذراع للوصول إلى الحمل والقبض عليها.
التواصل مع الأنظمة الأخرى
في سيناريو العالم الحقيقي ، قد تحتاج AGV إلى التواصل مع الأنظمة الأخرى في المنشأة ، مثل نظام إدارة المستودعات (WMS). يمكنك استخدام البروتوكولات مثل Modbus أو Ethernet/IP للتواصل.
على سبيل المثال ، يمكن لـ WMS إرسال المهام إلى AGV ، ويمكن لـ AGV إرسال حالتها إلى WMS.
خاتمة
برمجة AGV مهمة معقدة ولكنها مجزية. يتضمن فهم الأجهزة ، واختيار لغة البرمجة المناسبة ، وتحديد المهام ، ومسارات التخطيط ، والسيطرة على المحركات ، والتعامل مع العقبات ، والبرمجة للمهام المتخصصة.
إذا كنت تبحث عن دمج AGV في عملياتك ، فنحن هنا للمساعدة. سواء كنت بحاجة إلى AGV أساسي للتعامل مع المواد البسيطة أو الثقيلةمركبة مرشد بالليزر الثقيلة، لدينا الخبرة لبرمجة وتخصيص AGVs لتلبية احتياجاتك الخاصة. اتصل بنا لبدء مناقشة حول متطلباتك ومعرفة كيف يمكننا تحسين سير العمل الخاص بك مع حلول AGV الخاصة بنا.
مراجع
- "الذكاء الاصطناعي: نهج حديث" بقلم ستيوارت راسل وبيتر نورفيج
- "برمجة الروبوتات مع روس" من تأليف مورغان كويغلي ، براين جيركي ، وويليام دي سمارت
- وثائق Arduino: https://www.arduino.cc/reference/en/




