GPS-сенсор#

Вступ#

Клас gps використовується для керування та доступу до даних із датчика V5 GPS (Game Positioning System™). Цей датчик забезпечує точне відстеження положення та орієнтації робота на полі VEX. Він використовує код поля GPS по периметру поля для обчислення координат X та Y робота та його напрямку в режимі реального часу.

GPS-датчик повертає положення робота, використовуючи опорну точку, автоматично розраховану на основі зміщень, введених під час налаштування GPS-датчика у вікні «Пристрої».

Щоб отримати додаткові відомості про GPS-датчик, прочитайте статтю Використання GPS-датчика з VEX V5 у бібліотеці VEX.

Опорна точка діє як власна позиція (0, 0) GPS-датчика, де всі координати, напрямки та рухи, що повертаються методами 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

X-координата початкової позиції.

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-датчик (відповідно до його кутового зміщення) як поточний напрямок руху трансмісії.

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

X-координата нового початкового положення.

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

X-координата поточного місцезнаходження.

y

double

Y-координата поточного місцезнаходження.

units

distanceUnits

Одиниця вимірювання, що використовується для x та y:

  • mm (за замовчуванням) — міліметри
  • distanceUnits::in / inches — дюйми
  • distanceUnits::cm — сантиметри

angle

double

Значення курсу для поточного місцезнаходження.

units_r

rotationUnits

Одиниця вимірювання, що використовується для кута angle:

  • deg (за замовчуванням) — градуси
  • rev — обертів

Return Values

Ця функція не повертає значення.

Notes

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#

Повертає поточну позицію GPS-датчика по осі Y.

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
  • Значення заголовка охоплюється в діапазоні від 0 до 360 градусів.

  • Позитивний напрямок обертання визначається параметром dir заданим під час побудови.

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 , яке представляє якість сигналу 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

Ця функція не повертає значення.