GPS-датчик#

Введение#

Класс gps используется для управления и доступа к данным с датчика GPS V5 (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 на указанном Smart Port и определяет пользовательскую исходную позицию.

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, 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#

Возвращает текущее положение 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

Эта функция не возвращает значения.