مستشعر نظام تحديد المواقع العالمي (GPS)#

مقدمة#

تُستخدم فئة gps للتحكم في بيانات مستشعر نظام تحديد المواقع العالمي (GPS) V5 والوصول إليها. يوفر هذا المستشعر تتبعًا دقيقًا لموقع الروبوت واتجاهه في ساحة VEX. ويستخدم رمز حقل GPS المحيط بالساحة لحساب إحداثيات X وY للروبوت واتجاهه في الوقت الفعلي.

يقوم مستشعر نظام تحديد المواقع العالمي (GPS) بإرجاع موقع الروبوت باستخدام نقطة مرجعية يتم حسابها تلقائيًا من الإزاحات التي تم إدخالها عند تكوين مستشعر نظام تحديد المواقع العالمي (GPS) في نافذة الأجهزة.

للحصول على مزيد من المعلومات حول مستشعر GPS، اقرأ استخدام مستشعر GPS مع VEX V5 في مكتبة VEX.

تعمل نقطة المرجع كموقع (0، 0) الخاص بمستشعر نظام تحديد المواقع العالمي (GPS) حيث تكون جميع الإحداثيات والاتجاهات والحركات التي يتم إرجاعها بواسطة طرق نظام تحديد المواقع العالمي (GPS) نسبية إلى هذه النقطة المُكوّنة.

مستشعر تحديد المواقع العالمي VEX V5.

مُنشئات الفئات#

1 — يقوم بإنشاء كائن gps على المنفذ الذكي المحدد باستخدام الأصل الافتراضي (0، 0).

gps(
  int32_t  index,
  double   heading_offset = 0,
  turnType dir = right );

2 — يقوم بإنشاء كائن gps على المنفذ الذكي المحدد ويحدد موقع الأصل المخصص.

gps(
  int32_t       index,
  double        ox,
  double        oy,
  distanceUnits units = mm,
  double        heading_offset = 0,
  turnType      dir = right );

مُدمِّر الفئة#

يقوم بتدمير الكائن gps ويحرر الموارد المرتبطة به.

~gps();

حدود#

المعلمة

يكتب

وصف

index

int32_t

المنفذ الذكي الذي يتصل به مستشعر GPS، مكتوبًا على النحو التالي: PORTx، حيث x هو رقم المنفذ (على سبيل المثال، PORT1).

ox

double

الإحداثي السيني لموقع الأصل.

oy

double

إحداثي Y لموقع الأصل.

units

distanceUnits

وحدة القياس المستخدمة لـ ox و oy:

  • mm (افتراضي) — مليمترات
  • distanceUnits::in / inches — بوصة
  • distanceUnits::cm — سنتيمترات

heading_offset

double

إزاحة دوران مستشعر نظام تحديد المواقع العالمي (GPS) بالدرجات، من 0.00 إلى 359.99. القيمة الافتراضية هي 0.

dir

turnType

الاتجاه الذي يُعيد قيمًا موجبة:

  • right (افتراضي)
  • left

أمثلة#

// Create the gps instance
gps GPS1 = gps(
    PORT1,      // Smart Port 1
    180);       // heading_offset


// Create the gps instance
gps GPS1 = gps(
    PORT1,   // Smart Port 1
    50.00,   // ox
    100.00,  // oy
    mm,      // units
    180 );   // heading_offset

الدوال الأعضاء#

تتضمن الفئة gps الدوال الأعضاء التالية:

  • calibrate — معايرة مستشعر نظام تحديد المواقع العالمي (GPS).

  • setOrigin — يحدد موضع الأصل لنظام إحداثيات GPS.

  • setLocation — يحدد الموقع الحالي واتجاه مستشعر نظام تحديد المواقع العالمي (GPS).

  • xPosition — تُرجع موضع X الحالي.

  • yPosition — تُرجع موضع Y الحالي.

  • heading — إرجاع العنوان الحالي.

  • acceleration — تُرجع التسارع الخطي على طول المحور المحدد.

  • gyroRate — تُرجع السرعة الزاوية للمحور المحدد.

  • orientation — تُرجع هذه الدالة اتجاه المحور المحدد.

  • quality — تُرجع جودة إشارة GPS الحالية.

  • changed — يسجل دالة رد نداء يتم تشغيلها عند تغيير بيانات نظام تحديد المواقع العالمي (GPS).

قبل استدعاء أي من الدوال الأعضاء gps ، يجب إنشاء مثيل gps ، كما هو موضح أدناه:

/* This constructor is required when using VS Code.
GPS Sensor configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */

// Create the gps instance in Smart Port 1
gps GPS1 = gps(PORT1);

أساليب الفئة#

calibrate#

يقوم هذا الإجراء بمعايرة مستشعر نظام تحديد المواقع العالمي (GPS). سيؤدي ذلك إلى ضبط اتجاه نظام تحديد المواقع العالمي (وفقًا لانحراف الزاوية) ليكون هو الاتجاه الحالي لنظام نقل الحركة.

يجب أن يبقى مستشعر نظام تحديد المواقع العالمي (GPS) ثابتًا أثناء عملية المعايرة.

Available Functions
void calibrate();

Parameters

لا تأخذ هذه الدالة أي معلمات.

Return Values

هذه الدالة لا تُرجع قيمة.

Examples
// Turn to face the lower Field wall using data from the GPS Sensor.
GPS1.calibrate();
Drivetrain.turnToHeading(180, degrees)

setOrigin#

يحدد نقطة الأصل لنظام إحداثيات GPS.

Available Functions

1 — يحدد نقطة الأصل عند الموضع X و Y المحدد.

void setOrigin( 
  double        x, 
  double        y, 
  distanceUnits units = mm );

2 — يحدد نقطة الأصل إلى الموضع الحالي للمستشعر.

void setOrigin();

Parameters

المعلمة

يكتب

وصف

x

double

الإحداثي السيني لموقع الأصل الجديد.

y

double

إحداثيات Y لموقع الأصل الجديد.

units

distanceUnits

وحدة القياس المستخدمة لـ x و y:

  • mm (افتراضي) — مليمترات
  • distanceUnits::cm — سنتيمترات
  • distanceUnits::in — بوصات

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • يؤثر تغيير الأصل على القيم التي يتم إرجاعها بواسطة xPosition و yPosition.

setLocation#

يحدد موقع واتجاه نظام تحديد المواقع العالمي (GPS) الحاليين.

Available Functions

1 — يحدد الموقع الحالي باستخدام وحدات المسافة والدوران المحددة.

void setLocation(
  double        x,
  double        y,
  distanceUnits units = mm,
  double        angle = 0,
  rotationUnits units_r = degrees );

2 — يحدد الموقع الحالي باستخدام المليمترات والدرجات.

void setLocation( double x, double y, double angle );

Parameters

المعلمة

يكتب

وصف

x

double

الإحداثي السيني للموقع الحالي.

y

double

إحداثيات الموقع الحالي على المحور الصادي.

units

distanceUnits

وحدة القياس المستخدمة لـ x و y:

  • mm (افتراضي) — مليمترات
  • distanceUnits::in inches — بوصة
  • distanceUnits::cm — سنتيمترات

angle

double

قيمة العنوان للموقع الحالي.

units_r

rotationUnits

وحدة القياس المستخدمة للزاوية angle:

  • deg (افتراضي) — درجات
  • rev — دورات

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • يؤدي استدعاء هذه الوظيفة إلى تحديث قيم الموضع والاتجاه الداخلية التي تم الإبلاغ عنها بواسطة xPosition، yPosition، و heading.

xPosition#

يُعيد موضع X الحالي لمستشعر نظام تحديد المواقع العالمي (GPS).

Available Functions
double xPosition( distanceUnits units = distanceUnits::mm );

Parameters

المعلمة

يكتب

وصف

units

distanceUnits

وحدة قياس موضع X المُعاد:

  • mm (افتراضي) — مليمترات
  • distanceUnits::cm — سنتيمترات
  • distanceUnits::in — بوصات

Return Values

تُرجع قيمة double تمثل الإزاحة الموضعية x من نقطة الأصل بالوحدات المحددة.

Notes
  • يتم قياس موضع X بالنسبة إلى نقطة الأصل الحالية.

  • يمكن تغيير الأصل باستخدام setOrigin.

Examples
// Drive slowly towards the center of the Field
Drivetrain.setDriveVelocity(20.0, percent);
Drivetrain.drive(forward);
// Stop driving when the GPS returns an x position
// near the center of the Field
waitUntil((GPS1.xPosition(mm) < 0.0));
Drivetrain.stop();

yPosition#

يُعيد موضع Y الحالي لمستشعر GPS.

Available Functions
double yPosition( distanceUnits units = distanceUnits::mm );

Parameters

المعلمة

يكتب

وصف

units

distanceUnits

وحدة قياس موضع Y المُعاد:

  • mm (افتراضي) — مليمترات
  • distanceUnits::cm — سنتيمترات
  • distanceUnits::in — بوصات

Return Values

تُرجع قيمة double تمثل الإزاحة الموضعية Y من نقطة الأصل بالوحدات المحددة.

Notes
  • يتم قياس موضع Y بالنسبة إلى نقطة الأصل الحالية.

  • يمكن تغيير نقطة الأصل باستخدام setOrigin().

Examples
// Drive slowly towards the center of the Field
Drivetrain.setDriveVelocity(20.0, percent);
Drivetrain.drive(forward);
// Stop driving when the GPS reports an y position
// near the center of the Field
waitUntil((GPS1.yPosition(mm) < 0.0));
Drivetrain.stop();

heading#

يُعيد الاتجاه الحالي (زاوية الانحراف) لمستشعر نظام تحديد المواقع العالمي (GPS).

Available Functions
double heading( rotationUnits units = rotationUnits::deg );

Parameters

المعلمة

يكتب

وصف

units

rotationUnits

وحدة قياس قيمة الاتجاه المُعادة:

  • deg (افتراضي) — درجات
  • rev — دورات

Return Values

تُرجع قيمة double تمثل العنوان الحالي بالوحدات المحددة.

Notes Examples
// Turn slowly to face the right wall
Drivetrain.setTurnVelocity(20.0, percent);
Drivetrain.turn(right);
// Stop turning when the GPS reports a heading 
// greater than 90 degrees
waitUntil((GPS1.heading() > 90.0));
Drivetrain.stop();

acceleration#

يُعيد التسارع الخطي الذي يقيسه مستشعر نظام تحديد المواقع العالمي (GPS) على طول المحور المحدد.

Available Functions
double acceleration( 
  axisType axis );

Parameters

المعلمة

يكتب

وصف

axis

axisType

المحور الذي سيتم حساب التسارع له:

  • xaxis
  • yaxis
  • zaxis

Return Values

تُرجع قيمة double تمثل التسارع على طول المحور المحدد بوحدة G (وحدات الجاذبية).

Notes
  • يتم الإبلاغ عن قيم التسارع بوحدات G، حيث يساوي 1 G التسارع الناتج عن الجاذبية على سطح الأرض.

gyroRate#

يعيد السرعة الزاوية التي يقيسها مستشعر نظام تحديد المواقع العالمي (GPS) على طول المحور المحدد.

Available Functions
double gyroRate( 
  axisType      axis, 
  velocityUnits units );

Parameters

المعلمة

يكتب

وصف

axis

axisType

المحور الذي ستُعاد عنده السرعة الزاوية:

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

وحدة قياس السرعة الزاوية العائدة:

  • dps — درجة في الثانية
  • rpm — دورة في الدقيقة

Return Values

تُرجع قيمة double تمثل السرعة الزاوية على طول المحور المحدد بالوحدات المختارة.

orientation#

يُعيد زاوية توجيه مستشعر نظام تحديد المواقع العالمي (GPS) للمحور المحدد.

Available Functions
double orientation( 
  orientationType axis, 
  rotationUnits   units );

Parameters

المعلمة

يكتب

وصف

axis

orientationType

محاور التوجيه المراد استرجاعها:

  • roll
  • pitch
  • yaw

units

rotationUnits

وحدة قياس قيمة التوجيه المُعادة:

  • deg — درجات
  • rev — دورات

Return Values

تُرجع قيمة double تمثل اتجاه المحور المحدد بالوحدات المختارة.

quality#

يُعيد جودة إشارة نظام تحديد المواقع العالمي (GPS) المُدركة.

Available Functions
int32_t quality();

Parameters

لا تأخذ هذه الدالة أي معلمات.

Return Values

تُرجع الدالة قيمة من نوع int32_t int32_t تمثل جودة إشارة نظام تحديد المواقع العالمي (GPS) كنسبة مئوية:

القيم المحتملة

وصف

100

جميع بيانات الموقع والاتجاه المُبلغ عنها من مستشعر نظام تحديد المواقع العالمي (GPS) صحيحة.

~90

لم تعد بيانات الموقع تُحسب مباشرة من رمز حقل نظام تحديد المواقع العالمي (GPS)، بل يتم تقديرها بدلاً من ذلك من خلال وسائل بديلة.

0 – 80

لا تُعتبر سوى قيم الاتجاه صالحة. ومع مرور الوقت دون مسح كافٍ لرمز حقل نظام تحديد المواقع العالمي (GPS)، تستمر جودة الإشارة في التدهور حتى تصل إلى 0، وعندها تُجمّد بيانات نظام تحديد المواقع العالمي (GPS) فعليًا وتصبح غير صالحة.

changed#

يسجل دالة رد نداء يتم تشغيلها عند تغيير قيمة اتجاه نظام تحديد المواقع العالمي (GPS).

Available Functions
void changed( 
  void (* callback)(void) );

Parameters

المعلمة

يكتب

وصف

callback

void (*)(void)

مؤشر إلى دالة سيتم استدعاؤها عند تغير قيمة اتجاه نظام تحديد المواقع العالمي (GPS). يجب ألا تأخذ الدالة أي معلمات وأن تُرجع القيمة void

Return Values

هذه الدالة لا تُرجع قيمة.