เซ็นเซอร์ 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 บน Smart Port ที่ระบุ โดยใช้จุดกำเนิดเริ่มต้น (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#

ส่งคืนตำแหน่ง 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 ซึ่งแสดงคุณภาพสัญญาณ 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

ฟังก์ชันนี้ไม่ส่งค่ากลับ