بسم الله الرحمن الرحيم
من اشهر المسابقات العالمية في مجال الروبوتات بين الهواة هي مصارعة السومو , وتقام سنوياً العديد من الفعاليات المحلية و الدولية لهذه المسابقة.
السومو ( sumo ) هي بالأصل رياضة يابانية يتبارى فيها شخصان في حلبة، و يحـاول كل منهمـا إخـراج منافسـه من الحلبة .
و مسابقة السومو للروبوتات لها نفس المبدأ , حيث يوضع روبوتـين على الحلبة و يحاول كل منهم اخراج الآخر .
• قوانين مسابقة السومو للروبوت :
هذه بعض القوانين الخاصة بتصميم الروبوت التي يجب مراعتها عند عمل الروبوت الخاص بك .
-
يجب
أن يكون حجم الروبوت محدد
بعرض 20 سم، وطول 20 سم , وارتفاع غير محدد .
- يمكن أن يتغير حجم الروبوت بعد بدء السباق ولكن دون أن ينفصل إلى أجزاء ويحافظ على كونه جسما مركزيا واحدا، والروبوت الذي يخالف هذه القوانين يخسر المصارعة في حال سقوط بعض أجزاء الروبوت التي تقل في وزنها عن 5 جرام مثل البراغي أو الأجزاء الساقطة (القليلة) نتيجة التصادم لا يتسبب في خسارة المباراة.
- يجب
أن لا يتعدي الوزن الكلي للروبوت عند بداية المسابقة عن 3 كجم.
- يجب
أن تكون الروبوتات ذاتية التحكم ويمنع التحكم بها من قبل المتسابقين عن بعد بأي
طريقة بعد بدء المسابقة.
- يجب
أن ينتظر الروبوت عند بدء تشغيله مدة 5 ثواني قبل أن يبدأ بالتحرك ليسمح
للمتسابقين الخروج من الحلبة.
- لا
يسمح باستعمال أجهزة التشويش أو الكبح مثل (IR LEDs)
التي قد تسبب في عجز أجهزة الاستشعار للفريق الآخر.
- لا
يسمح بالأجزاء التي يمكن أن تتسبب في كسر أو أضرار للحلبة ولا يسمح باستخدام
الأجزاء التي يمكن أن تسبب ضرراً للروبوت أو اللاعب المنافس ولا تعتبر الإصتدامات
العادية تعمد للضرر.
- لا
يسمح باستعمال الأجهزة التي تخزن السوائل، البودرة، الغازات أو غيرها من المواد
التي قد تستعمل في القذف على الروبوت المنافس.
-
لا
يسمح بأي أداة قابلة للاشتعال أو تسبب الوهج الناري.
-
لا
يسمح بالأجهزة التي تقذف أشياء ضد الفريق المنافس.
-
لايسمح
باستخدام أجهزة تساعد على زيادة قوة تثبيت الروبوت مثل وضع الشفاطة والمغناطيس.
( باقي القوانين الخاصة بشكل الحلبة و طريقة اللعب و النقاط و المخالفات .. الخ , يمكن الاطلاع عليها من هــنــا )
ماذا احتاج لبناء الروبوت ؟
- متحكم اردوينو ( من أي نوع ).
- محركات + علبة تروس + مجسم ( حسب التصميم ).( يمكنك شراء محركات ومجسم جاهز من هـنـا ) .
- بطاريات .
- حساس ألتراسونك (يمكنك شراؤه من هنا ).
- حساس IR TCRT5000 عدد2 (يمكنك شراؤه من هنا ).
- (H-bridge (L298N (يمكن شراؤه من هنا )
- اسلاك توصيل.
لنبدأ بتجهيز اجزاء الروبوت ثم نقوم بتجميعها معاً ...
• حساس الـ IR :
حتى نتأكد من ان الروبوت لن يخرج عن الحلبة نضيف حساس الـ IR في الامام و من الخلف .
حساس الـIR يمكنه التمييز بين اللونين ( الابيض و الأسود ) و يمكن ان نستفيد منه لأن لون الحبة اسود و محيطها أبيض .
[ عند اللون الابيض تكون اشارة الحساس HIGH .. و LOW للون الاسود , أو العكس حسب تصميم الموديول ]
و بالتالي اذا كانت قراءة الحساس تشير للون الابيض , يكون الروبوت على وشك الخروج من الحلبة , و يجب ان يقوم الروبوت بتعديل طريقة حركته حتى يتجنب الخروج !
عادة ما يكون الحساس في موديول جاهز-كما في الصورة- و يوصل مباشرة مع احد المداخل التناظرية ( Analog) .
اذا كان لديك الحساس منفصل ,يمكن عمل دارة بسيطة لتوصيله بالاردوينو ...
اضغط على الصورة لتكبيرها |
• حساس الالتراسونك :
سنستخدم حساس الالتراسونك لتحديد مكان الروبوت الخصم ..
نوصل الحساس كما في الصورة :
[ للتعرف اكثر على حساس الالتراسونك يمكنك قراءة هذا المقال المفصل للزميل مهند الرواشدة ( من هنا ) ]
• توصيل المحركات :
نقوم بتوصيل المحركات مع الـ H-bridge و مع الاردوينو و البطاريات كما في الشكل :
اضغط على الصورة لتكبيرها |
- نصل مفتاح (switch) مع تغذية الاردوينو لتشغيل و ايقاف الروبوت !
نضع كل القطع على مجسم الروبوت و نثبتها جيداً .
• تصميم مجسم الروبوت :
سنقوم بعمل تصميم بسيط للروبوت و هو من اسهل التصاميم , يكون باضافة قطعة بلاستيكية الى مقدمة الروبوت و تميل بزاوية معينة .
[ يمكنك عمل اي تصميم تريد , حاول ان تفكر بتصاميم اكثر ابداعاً ]
وليكون الروبوت اكثر ثباتاً , سنضع البطاريات في مقدمة الروبوت (لأن وزنها اكبر من القطع الاخرى ) و نضع باقي القطع في الخلف .
و يجب ان نتأكد من ابعاد الروبوت و وزنه بما تحدده قوانين اللعبة..
ليكون شكل الروبوت النهائي كالتالي :
البرمجة :
يمكن برمجة الروبوت بأكثر من طريقة , حسب الطريقة التي تريد ان يلعب فيها الروبوت على الحلبة .
طــريقــة اللـعب :
- سنجعل الروبوت يدور حول نفسه بشكل مستمر .
- يقوم الروبوت بقياس المسافة بشكل متواصل اثناء الدوران .
- في حال قلت المسافة المقاسة عن قيمة معينة (10سم مثلاً ), يعني ذلك وجود الروبوت الخصم امام الروبوت الخاص بنا مباشرة .
- يتوقف الروبوت مباشرة عن الدوران . ثم يبدأ بالهجوم ( التحرك للأمام باقصى سرعة).
- يجب ان يأخذ الروبوت القراءات من حساسي الـIR دائمــاً .
- في حال اشارت قراءة الـIR لوجود اللون الابيض , يجب ان يتحرك الروبوت مباشرة في عكس اتجاه الحساس ( مثلا : اذا كان الحساس الامامي الذي اعطى اشارة للون الابيض يتحرك الروبوت للخلف ) !
كـود الأردوينــو :
#include "Ultrasonic.h" Ultrasonic ultrasonic(4,3);//المداخل الموصولة مع الحساس const int IN1=5; const int IN2=6; const int IN3=9; const int IN4=10; #define IR_sensor_front A0 // الحساس الامامي #define IR_sensor_back A1 // الحساس الخلفي int distance ; void setup() { Serial.begin(9600); delay (5000); // حسب قوانين السومو } void loop() { int IR_front = analogRead(IR_sensor_front); int IR_back = analogRead(IR_sensor_back); distance = ultrasonic.Ranging(CM) ; ROTATE(200); // يبدأ الروبوت بالدوران if (distance < 20){ Stop(); while (distance < 20 ) { FORWARD(255); distance = ultrasonic.Ranging(CM); IR_front = analogRead(IR_sensor_front); IR_back = analogRead(IR_sensor_back); if ( IR_front > 650 || IR_back > 650 ) { break;} delay(10); } } if (IR_front < 650 ) // اذا كانت القراءة اقل من 650 يعني اللون ابيض { Stop(); delay (50); BACKWARD(255); delay (500); } if (IR_back < 650 ) // { Stop(); delay (50); FORWARD(255); delay (500); } /* ----------- debugging ---------------- Serial.print(ultrasonic.Ranging(CM)); Serial.println("cm"); Serial.println("IR front :"); Serial.println(IR_front); Serial.println("IR back :"); Serial.println(IR_back); */ -------------------------------------- } //-------------------------------------------- void FORWARD (int Speed){ //When we want to let Motor To move forward, // just void this part on the loop section . analogWrite(IN1,Speed); analogWrite(IN2,0); analogWrite(IN3,0); analogWrite(IN4,Speed); } //-------------------------------------------- void BACKWARD (int Speed){ //When we want to let Motor To move forward, // just void this part on the loop section . analogWrite(IN1,0); analogWrite(IN2,Speed); analogWrite(IN3,Speed); analogWrite(IN4,0); } //-------------------------------------------- void ROTATE (int Speed){ //When we want to let Motor To Rotate , // just void this part on the loop section . analogWrite(IN1,Speed); analogWrite(IN2,0); analogWrite(IN3,Speed); analogWrite(IN4,0); } //-------------------------------------------- void Stop(){ //When we want to Motor To stop , // just void this part on the loop section . analogWrite(IN1,0); analogWrite(IN2,0); analogWrite(IN3,0); analogWrite(IN4,0); }
تكون النتيجة النهائية كما في الفيديو التالي :
حاول ان تطبق هذا الروبوت و تجربه لتتعرف على نقاط الضعف فيه , ثم حاول ان تفكر بطريقة لعب اخرى , او ان تعدل تصميم الروبوت , يمكنك مثلاً الاستفادة من القانون الذي يسمح بزيادة ابعاد الروبوت بعد بدء المباراة , بعض التصاميم يزيد عرضها الـى 60سم بعد بدء المباراة !
هذه بعض التصاميم :
------------------------
------------------------
------------------------
------------------------
صور من مسابقة السومو في الجامعــة الهاشميـــة (الأردن) :
شكراً علي التدوينه الرائعه
ردحذفو اعتقد انه مجال ممتع جداً و يمكن تنفيذه لا اقول بسهولة لكنه ليس بذلك التعقيد
و يمكن عمل الكثير من مثل هذه المسابقات الجميله و الممتعه في ارجاء الوطن العربي
السلام عليكم
ردحذفاخي انا محتاج للمساعدة
اين تكون مسايقات سومو روبوت
ردحذفقبل كم يوم كنت اشاهدها مصارعه السومو في بغداد
ردحذفعمل رائع هل يمكنك عمل روبوت يتتبع الضوء و شكرا
ردحذفبارك الله جهودكم وجعلها في موازين حسناتكم
ردحذفالى الامام يا أمة الاسلام
For the best sumo robot kits you can visit. www.sumozade.com
ردحذفأزال المؤلف هذا التعليق.
ردحذفالبرمجه خطء
حذفماهو الصح
حذفمن أفضل المقالات على الإطلاق صراحة تستحق التعمق أكثر واكثر لقد سعدت بقراءة مقالك وانا فخور بك وبما تقدمه في مدونتك ف انت مثال للمدونات التي تقدم محتوي مفيد
ردحذفرحلات الي شرم الشيخ
حجز رحلات شرم الشيخ
رحلات شرم
فنادق في شرم الشيخ
حجوزات شرم الشيخ
حجز فنادق شرم
ارخص رحلات شرم الشيخ
دليل شرم الشيخ
حجز فنادق شرم الشيخ
افضل فنادق شرم الشيخ
فندق الحياة شرم
شرم
حجز فنادق شرم الشيخ