เซ็นเซอร์ GPS#
การแนะนำ#
คลาส gps ใช้สำหรับควบคุมและเข้าถึงข้อมูลจากเซ็นเซอร์ V5 GPS (Game Positioning System™) เซ็นเซอร์นี้ให้การติดตามตำแหน่งและทิศทางที่แม่นยำสำหรับหุ่นยนต์ในสนาม VEX โดยใช้รหัสสนาม GPS รอบขอบเขตของสนามเพื่อคำนวณพิกัด X และ Y และทิศทางของหุ่นยนต์แบบเรียลไทม์
เซ็นเซอร์ GPS จะส่งคืนตำแหน่งของหุ่นยนต์โดยใช้จุดอ้างอิงที่คำนวณโดยอัตโนมัติจากค่าชดเชยที่ป้อนเมื่อกำหนดค่าเซ็นเซอร์ GPS ในหน้าต่างอุปกรณ์
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเซ็นเซอร์ GPS โปรดอ่าน การใช้เซ็นเซอร์ GPS กับ VEX V5 ในไลบรารี VEX
จุดอ้างอิงทำหน้าที่เป็นตำแหน่ง (0, 0) ของเซ็นเซอร์ GPS เอง โดยพิกัด ทิศทาง และการเคลื่อนที่ทั้งหมดที่ได้จากวิธีการ GPS จะสัมพันธ์กับจุดที่กำหนดค่าไว้จุดนี้

ตัวสร้างคลาส#
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();
พารามิเตอร์#
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
พอร์ตอัจฉริยะที่เชื่อมต่อกับเซ็นเซอร์ GPS จะเขียนในรูปแบบ |
|
|
พิกัด X ของตำแหน่งจุดกำเนิด |
|
|
พิกัด Y ของตำแหน่งจุดกำเนิด |
|
|
หน่วยวัดที่ใช้สำหรับ
|
|
|
ค่าชดเชยการหมุนของเซ็นเซอร์ GPS ในหน่วยองศา ตั้งแต่ 0.00 ถึง 359.99 ค่าเริ่มต้นคือ 0 |
|
|
ทิศทางที่จะให้ค่าหัวเป็นบวก:
|
ตัวอย่าง#
// 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— ปรับเทียบเซ็นเซอร์ GPSsetOrigin— กำหนดตำแหน่งจุดกำเนิดสำหรับระบบพิกัด GPSsetLocation— ตั้งค่าตำแหน่งปัจจุบันและทิศทางของเซ็นเซอร์ GPSxPosition— ส่งคืนตำแหน่ง 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 Functionsvoid calibrate();
ฟังก์ชันนี้ไม่รับพารามิเตอร์ใดๆ
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 Functions1 — กำหนดจุดกำเนิดไปยังตำแหน่ง X และ Y ที่ระบุ
void setOrigin( double x, double y, distanceUnits units = mm );
Parameters2 — กำหนดจุดกำเนิดให้อยู่ที่ตำแหน่งปัจจุบันของเซ็นเซอร์
void setOrigin();
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
พิกัด X ของตำแหน่งจุดกำเนิดใหม่ |
|
|
พิกัด Y ของตำแหน่งจุดกำเนิดใหม่ |
|
|
หน่วยวัดที่ใช้สำหรับ
|
ฟังก์ชันนี้ไม่ส่งค่ากลับ
NotessetLocation#
ตั้งค่าตำแหน่งและทิศทาง GPS ปัจจุบัน
Available Functions1 — กำหนดตำแหน่งปัจจุบันโดยใช้หน่วยระยะทางและการหมุนที่ระบุ
void setLocation( double x, double y, distanceUnits units = mm, double angle = 0, rotationUnits units_r = degrees );
Parameters2 — ตั้งค่าตำแหน่งปัจจุบันโดยใช้หน่วยมิลลิเมตรและองศา
void setLocation( double x, double y, double angle );
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
พิกัด X ของตำแหน่งปัจจุบัน |
|
|
พิกัด Y ของตำแหน่งปัจจุบัน |
|
|
หน่วยวัดที่ใช้สำหรับ
|
|
|
ค่าหัวเรื่องสำหรับตำแหน่งปัจจุบัน |
|
|
หน่วยวัดที่ใช้สำหรับมุม
|
ฟังก์ชันนี้ไม่ส่งค่ากลับ
NotesxPosition#
ส่งคืนตำแหน่ง X ปัจจุบันของเซ็นเซอร์ GPS
Available Functionsdouble xPosition( distanceUnits units = distanceUnits::mm );
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
หน่วยวัดสำหรับตำแหน่ง X ที่ส่งคืน:
|
ส่งคืนค่า double ซึ่งแสดงถึงค่าชดเชยตำแหน่ง x จากจุดกำเนิดในหน่วยที่ระบุ
ตำแหน่ง X จะวัดโดยเทียบกับจุดกำเนิดปัจจุบัน
สามารถเปลี่ยนจุดกำเนิดได้โดยใช้
setOrigin
// 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 Functionsdouble yPosition( distanceUnits units = distanceUnits::mm );
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
หน่วยวัดสำหรับตำแหน่ง Y ที่ส่งคืน:
|
ส่งคืนค่า double ซึ่งแสดงถึงค่าชดเชยตำแหน่ง Y จากจุดกำเนิดในหน่วยที่ระบุ
ตำแหน่ง Y จะวัดโดยเทียบกับจุดกำเนิดปัจจุบัน
สามารถเปลี่ยนจุดกำเนิดได้โดยใช้คำสั่ง
setOrigin()
// 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 Functionsdouble heading( rotationUnits units = rotationUnits::deg );
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
หน่วยวัดสำหรับค่าทิศทางที่ส่งคืน:
|
ส่งคืนค่า double ซึ่งแสดงถึงหัวข้อปัจจุบันในหน่วยที่ระบุ
ค่าหัวเรื่องจะถูกวนซ้ำระหว่าง 0 ถึง 360 องศา
ทิศทางการหมุนบวกจะถูกกำหนดโดยพารามิเตอร์
dirที่ระบุระหว่างการสร้าง
// 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 Functionsdouble acceleration(
axisType axis );
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
แกนที่จะส่งค่าความเร่งกลับมา:
|
ส่งคืนค่า double ซึ่งแสดงถึงความเร่งตามแกนที่ระบุในหน่วย G (หน่วยแรงโน้มถ่วง)
ค่าความเร่งจะรายงานในหน่วย G โดยที่ 1 G เท่ากับความเร่งเนื่องจากแรงโน้มถ่วงที่พื้นผิวโลก
gyroRate#
ส่งคืนค่าความเร็วเชิงมุมที่วัดได้จากเซ็นเซอร์ GPS ตามแกนที่ระบุ
Available Functionsdouble gyroRate(
axisType axis,
velocityUnits units );
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
แกนที่จะส่งค่าความเร็วเชิงมุมกลับมา:
|
|
|
หน่วยวัดความเร็วเชิงมุมที่ส่งคืน:
|
ส่งคืนค่า double ซึ่งแสดงถึงความเร็วเชิงมุมตามแกนที่ระบุในหน่วยที่เลือก
orientation#
ส่งคืนค่ามุมการวางแนวของเซ็นเซอร์ GPS สำหรับแกนที่ระบุ
Available Functionsdouble orientation(
orientationType axis,
rotationUnits units );
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
แกนการวางแนวที่จะดึงข้อมูล:
|
|
|
หน่วยวัดสำหรับค่าการวางแนวที่ส่งคืน:
|
ส่งคืนค่า double ซึ่งแสดงถึงทิศทางของแกนที่ระบุในหน่วยที่เลือก
quality#
ส่งคืนคุณภาพสัญญาณ GPS ที่รับรู้ได้
Available Functionsint32_t quality();
ฟังก์ชันนี้ไม่รับพารามิเตอร์ใดๆ
Return Valuesส่งคืนค่า int32_t ซึ่งแสดงคุณภาพสัญญาณ GPS เป็นเปอร์เซ็นต์:
ค่าที่เป็นไปได้ |
คำอธิบาย |
|---|---|
|
ข้อมูลตำแหน่งและทิศทางทั้งหมดที่ได้รับจากเซ็นเซอร์ GPS นั้นถูกต้อง |
|
ปัจจุบัน ข้อมูลตำแหน่งไม่ได้คำนวณโดยตรงจากรหัสสนาม GPS อีกต่อไป แต่จะถูกประมาณค่าด้วยวิธีการอื่นแทน |
|
เฉพาะค่าทิศทางเท่านั้นที่ถูกต้อง เมื่อเวลาผ่านไปโดยไม่ได้สแกนรหัสสนาม GPS อย่างเพียงพอ คุณภาพสัญญาณจะลดลงเรื่อยๆ จนถึง |
changed#
ลงทะเบียนฟังก์ชันเรียกกลับที่จะทำงานเมื่อค่าทิศทาง GPS เปลี่ยนแปลง
Available Functionsvoid changed(
void (* callback)(void) );
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
ตัวชี้ไปยังฟังก์ชันที่จะถูกเรียกเมื่อค่าทิศทาง GPS เปลี่ยนแปลง ฟังก์ชันนี้ต้องไม่มีพารามิเตอร์และส่งคืนค่า |
ฟังก์ชันนี้ไม่ส่งค่ากลับ