3. كيف تعمل عجلات الomni للروبوت

نبذة:

تستخدم عجلات الomni في الروبوت لانها تسمح للروبوت التحرك في ثمانية اتجاهات عكس العجلات العادية التي تسمح فقط بالتحرك في لتجاهين الامامي و الخلفي. في هذي الورشة ساقوم بتغيير كيفية تحرك عجلات الomni بحيث يستطيع الروبوت التحرك في ثمانية اتجاهات بالاضافة الى الدوران الى اليمين و الخلف. كل الادوات التي ساستخذمها هي نفسها كما في الورش السابقة في جزء 1 و 2.

تعريف عجلات الomni

الروبوت يستخدم اربع عجلات (ثلاث عجلات ايضا ممكن, لاكن لن اشرحها هنا). اذا تغييرت اتجاهات العجلات الاربع يستطيع الروبوت التحرك في ثمانية اتجاهات. بالاضافة الى قدرة الروبوت على الدوران كما موضح في الصور. الاتجاهات هي:

  1. امام
  2. خلف
  3. يمين
  4. يسار
  5. امام يمين
  6. امام خلف
  7. خلف يمين
  8. خلف يسار
  9. الدوران الى اليمين و اليسار

كتابة كود عجلات الomni

يجب برمجة كل اتجاه في الكود. تستطيعون تحميل الكود هنا. البرمخة سهلة و قد تم شرحها في الورش السابقة الجزء 1 و 2.

// RoboCup Junior Navigation Basics

#include <AFMotor.h>

AF_DCMotor motor_A(1);
AF_DCMotor motor_B(2);
AF_DCMotor motor_C(3);
AF_DCMotor motor_D(4);

const int MIN_SPEED = 80;
const int AVG_SPEED = 90;
const int MAX_SPEED = 100;

void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps

}

void loop() {
ROBOT_FORWARD();
delay(2000);
ROBOT_BACKWARD();
delay(2000);
ROBOT_LEFT();
delay(2000);
ROBOT_RIGHT();
delay(2000);
ROBOT_FORWARD_RIGHT();
delay(2000);
ROBOT_BACKWARD_LEFT();
delay(2000);
ROBOT_FORWARD_LEFT();
delay(2000);
ROBOT_BACKWARD_RIGHT();
delay(2000);
ROBOT_TURN_RIGHT();
delay(2000);
ROBOT_TURN_LEFT();
delay(2/ f000);
}

void ALL_MOTORS_OFF(){
motor_A.setSpeed(10);
motor_B.setSpeed(10);
motor_C.setSpeed(10);
motor_D.setSpeed(10);

motor_A.run(RELEASE);
motor_B.run(RELEASE);
motor_C.run(RELEASE);
motor_D.run(RELEASE);
}

void ROBOT_FORWARD(){
motor_A.setSpeed(MAX_SPEED);
motor_B.setSpeed(MAX_SPEED);
motor_C.setSpeed(MAX_SPEED);
motor_D.setSpeed(MAX_SPEED);

motor_A.run(BACKWARD);
motor_B.run(FORWARD);
motor_C.run(BACKWARD);
motor_D.run(FORWARD);
}

void ROBOT_BACKWARD(){
motor_A.setSpeed(MAX_SPEED);
motor_B.setSpeed(MAX_SPEED);
motor_C.setSpeed(MAX_SPEED);
motor_D.setSpeed(MAX_SPEED);

motor_A.run(FORWARD);
motor_B.run(BACKWARD);
motor_C.run(FORWARD);
motor_D.run(BACKWARD);
}

void ROBOT_LEFT(){
motor_A.setSpeed(MAX_SPEED);
motor_B.setSpeed(MAX_SPEED);
motor_C.setSpeed(MAX_SPEED);
motor_D.setSpeed(MAX_SPEED);

motor_A.run(BACKWARD);
motor_B.run(BACKWARD);
motor_C.run(BACKWARD);
motor_D.run(BACKWARD);
}

void ROBOT_RIGHT(){
motor_A.setSpeed(MAX_SPEED);
motor_B.setSpeed(MAX_SPEED);
motor_C.setSpeed(MAX_SPEED);
motor_D.setSpeed(MAX_SPEED);

motor_A.run(FORWARD);
motor_B.run(FORWARD);
motor_C.run(FORWARD);
motor_D.run(FORWARD);
}

void ROBOT_TURN_RIGHT(){
motor_A.setSpeed(MAX_SPEED);
motor_B.setSpeed(MAX_SPEED);
motor_C.setSpeed(MAX_SPEED);
motor_D.setSpeed(MAX_SPEED);

motor_A.run(FORWARD);
motor_B.run(FORWARD);
motor_C.run(BACKWARD);
motor_D.run(BACKWARD);
}

void ROBOT_TURN_LEFT(){
motor_A.setSpeed(MAX_SPEED);
motor_B.setSpeed(MAX_SPEED);
motor_C.setSpeed(MAX_SPEED);
motor_D.setSpeed(MAX_SPEED);

motor_A.run(BACKWARD);
motor_B.run(BACKWARD);
motor_C.run(FORWARD);
motor_D.run(FORWARD);
}

void ROBOT_FORWARD_RIGHT(){
motor_A.setSpeed(0);
motor_B.setSpeed(MAX_SPEED);
motor_C.setSpeed(0);
motor_D.setSpeed(MAX_SPEED);

motor_A.run(RELEASE);
motor_B.run(FORWARD);
motor_C.run(RELEASE);
motor_D.run(FORWARD);
}
void ROBOT_BACKWARD_LEFT(){
motor_A.setSpeed(0);
motor_B.setSpeed(MAX_SPEED);
motor_C.setSpeed(0);
motor_D.setSpeed(MAX_SPEED);

motor_A.run(RELEASE);
motor_B.run(BACKWARD);
motor_C.run(RELEASE);
motor_D.run(BACKWARD);
}

void ROBOT_BACKWARD_RIGHT(){
motor_A.setSpeed(MAX_SPEED);
motor_B.setSpeed(0);
motor_C.setSpeed(MAX_SPEED);
motor_D.setSpeed(0);

motor_A.run(FORWARD);
motor_B.run(RELEASE);
motor_C.run(FORWARD);
motor_D.run(RELEASE);
}

void ROBOT_FORWARD_LEFT(){
motor_A.setSpeed(MAX_SPEED);
motor_B.setSpeed(0);
motor_C.setSpeed(MAX_SPEED);
motor_D.setSpeed(0);

motor_A.run(BACKWARD);
motor_B.run(RELEASE);
motor_C.run(BACKWARD);
motor_D.run(RELEASE);
}

تشغيل الروبوت

بعد ان قمتوا بفهم ميزات عجلات الomni , و كتابة الكود, حان وقت تشغيل الكود كي يتحرك الروبوت. ستلاحظون تحرك الروبوت في الجهات المذكورة.

هذا الفيديو يوضح كيف تعمل عجلات ال omni:

 

و هكذا تم تغيير (و تطوير) تحرك عجلات الروبوت لمسابقة الروبوكوب. و الى الورشة القادمة (الجزء 4 هنا)…..

 

الكاتب: Zeenat Al-Kassim
محبوب
كاتب

المشاركات (5)

أضف مشاركة