Skip to main content

GPS Navigation

قم بإنشاء خوارزمية لتوجيه الروبوت البطل إلى موقع محدد في الملعب. استخدم كتل [Drive for] و [Turn to heading]، ومستشعر GPS، ومحرك الذراع، ومحرك السحب لتوجيه الروبوت البطل إلى الموقع الموجود عند (1380، -1380) لالتقاط كرة Triball المميزة باللون الأحمر. ثم قم بقيادة الروبوت إلى الموقع الموجود عند (600، -300) وسجل الكرة الثلاثية في هدف التحالف الأحمر.

  • اختر مهارات VRC الافتراضية - ملعب فوق وتحت.
  • استخدم قائمة التحقق قبل المباراة لتحديد موقع البداية "H"، Sاتجاه البداية "شمال"، و التحميل المسبق للروبوت "لا" للروبوت.
  • قم بإنشاء خوارزمية لتوجيه الروبوت إلى موقع محدد.
  • قم ببرمجة الروبوت لتدوير محرك الذراع لخفض الذراع بالكامل لالتقاط كرة ثلاثية من الملعب.
  • استخدم الخوارزمية لتوجيه الروبوت إلى الإحداثيات (1380، -1380) وقم بتدوير الروبوت إلى اتجاه 135 درجة.
  • قم ببرمجة الروبوت لتدوير محرك السحب لالتقاط الكرة الثلاثية الخضراء المميزة باللون الأحمر.
  • استخدم الخوارزمية لتوجيه الروبوت إلى الإحداثيات (600، -300) وقم بتدوير الروبوت إلى اتجاه 90 درجة.
  • قم ببرمجة الروبوت لتدوير محرك السحب لإطلاق الكرة الثلاثية نحو هدف التحالف الأحمر. 

نصائح مفيدة

  • استخدم مستشعر نظام تحديد المواقع العالمي (GPS) لتحديد إحداثيات X و Y للروبوت البطل في الميدان. للحصول على مزيد من المعلومات حول استخدام مستشعر نظام تحديد المواقع العالمي (GPS) في ملعب VRC Over Under، يرجى النقر هنا
  • استخدم كتل المُبلِّغ من فئة الاستشعار للحصول على قيم الموقع من مستشعر نظام تحديد المواقع العالمي (GPS).

    كتلة تحديد موقع GPS VEXcode التي تقرأ 'موقع GPS X بالمليمتر'.

    كتلة تحديد موقع GPS من نوع VEXcode تقرأ 'موقع GPS Y بالمليمتر'.

    • أمر بايثون المطابق:

      gps.x_position(MM)
      gps.y_position(MM)
  • استخدم كتل set من فئة المتغيرات لتعريف متغيرين لتخزين إحداثيات X و Y الأصلية لـ Hero Bot.

    مجموعة من كتل VEXcode Set variable blocks. يقرأ الجزء الأول 'set X1 to GPS position X in mm'. يقرأ الجزء الثاني 'set Y1 to GPS position Y in mm'.

    • أمر بايثون المطابق:

      X1 = gps.x_position(MM)
      Y1 = gps.y_position(MM)
  • للحصول على مساعدة في تعريف متغير وتخزين البيانات في المشروع، يرجى تحديد زر "الدروس التعليمية" في VEXcode VR واختيار الدرس التعليمي تخزين البيانات.

    أيقونة الدروس التعليمية من شريط أدوات VEXcode VR.

    أيقونة برنامج تعليمي لتخزين البيانات في الواقع الافتراضي VEXcode.

  • للحصول على مزيد من المعلومات حول قواعد تسمية المتغيرات في VEXcode VR، الاطلاع على هذه المقالة.
  • استخدم إحداثيات الروبوت (x1,y1)، وإحداثيات موقع الهدف (x2,y2)، ودالة atan لإيجاد اتجاه القيادة.
    • احسب الزاوية θ للخط الواصل بين هاتين النقطتين.

      رسم تخطيطي لتعبيرين رياضيين. العبارة الأولى هي 'θ يساوي atan((y2 - y1) / (x2 - x1))'. العبارة الثانية هي 'سالب باي / 2 أقل من ثيتا، وهو أقل من باي / 2'.

      يوضح الرسم التخطيطي الرياضي من الأعلى إلى الأسفل الروبوت عند الإحداثيات (X1، Y1) ويشير خط إلى الإحداثيات (X2، Y2). يتم تحديد المسافة بالمتغير d، ويتم تحديد الزاوية بالمتغير theta. المسافة الأفقية بين النقاط ممثلة بـ 'x2 - x1'، والمسافة الرأسية ممثلة بـ 'y2 - y1'.

    • حوّل الزاوية θ إلى اتجاه القيادة.

      مثال على الشفرة الزائفة للتعبير الرياضي (اتجاه البداية: الشمال):

      إذا كانت X1 تساوي X2:
      	إذا > Y2 تساوي Y1:
      		الاتجاه = 0
      	وإلا:
      		الاتجاه = 180
      وإلا:
      	إذا كانت X2 > X1:
      		الاتجاه = 90 - atan((Y2 - Y1) / (X2 - X1))
      	وإلا:
      		الاتجاه = 270 - atan((Y2 - Y1) / (X2 - X1))
    • يُظهر الرسم التخطيطي من الأعلى الروبوت داخل دائرة عليها علامات تُشير إلى الدائرة'ثانية 360 درجة.
  • استخدم كتلة الدالة من فئة المعاملات ثم حدد الدالة الزاوية θ

    كتلة دالة VEXcode فارغة تقرأ 'atan من فراغ'.

    • أمر بايثون المطابق:

      math.atan() / math.pi * 180
  • استخدم إحداثيات الروبوت (x1,y1)، وإحداثيات موقع الهدف (x2,y2)، ونظرية فيثاغورس لإيجاد مسافة القيادة.

    الصيغة الرياضية هي: 'd = sqrt((X2 - X1) ^ 2 + (Y2 - Y1) ^ 2)'

    نفس الرسم التخطيطي من الأعلى إلى الأسفل كما في السابق يوضح الفرق بين إحداثيين. الروبوت موجود عند الإحداثيات (X1، Y1) وخط يشير نحو الإحداثيات (X2، Y2). يتم تحديد المسافة بالمتغير d، ويتم تحديد الزاوية بالمتغير theta. المسافة الأفقية بين النقاط ممثلة بـ 'x2 - x1'، والمسافة الرأسية ممثلة بـ 'y2 - y1'.

  • استخدم كتلة الدالة من فئة المشغلين وحدد الدالة جذر لحساب مسافة القيادة.

    كتلة دالة VEXcode فارغة تقرأ 'جذر القيمة' الفارغة.

    • أمر بايثون المطابق:

      math.sqrt()