ระบบขับเคลื่อน#

การแนะนำ#

The drivetrain class controls how a robot drives and turns. A drivetrain is made of motors and wheels that work together to move the robot.

ระบบขับเคลื่อน drivetrain ไม่ใช้ เซ็นเซอร์ความเฉื่อย หรือ เซ็นเซอร์ไจโร สำหรับการเลี้ยวตามทิศทางหรือการหมุน มันสามารถขับเคลื่อนไปข้างหน้าหรือถอยหลัง และเลี้ยวซ้ายหรือขวาได้ แต่ไม่สามารถเลี้ยวไปยังทิศทางหรือการหมุนที่เฉพาะเจาะจงได้ สำหรับการเลี้ยวตามทิศทางและการหมุน ให้ใช้คลาส smartdrive

คลาสที่สืบทอดมา#

คลาส drivetrain ทำหน้าที่เป็นคลาสพื้นฐานสำหรับคลาสที่สืบทอดต่อไปนี้:

  • smartdrive - คลาสนี้เพิ่มการรองรับเซ็นเซอร์เฉื่อยหรือเซ็นเซอร์ไจโรเพื่อเปิดใช้งานการเลี้ยวตามทิศทางและการหมุน

ตัวสร้างคลาส#

1 - สร้างระบบขับเคลื่อนโดยใช้วัตถุ motor_group ที่มีอยู่ ชิ้นสำหรับด้านซ้าย (&l) และด้านขวา (&r)

drivetrain(
    motor_group      &l,
    motor_group      &r,
    double           wheelTravel = 320,
    double           trackWidth = 320,
    double           wheelBase = 130,
    distanceUnits    unit = mm,
    double           externalGearRatio = 1.0 );

2 - สร้างระบบขับเคลื่อนโดยใช้มอเตอร์ motor ที่มีอยู่สำหรับด้านซ้าย (&l) และด้านขวา (&r)

drivetrain(
    motor            &l,
    motor            &r,
    double           wheelTravel = 320,
    double           trackWidth = 320,
    double           wheelBase = 130,
    distanceUnits    unit = mm,
    double           externalGearRatio = 1.0 );

ตัวทำลายคลาส#

ทำลายอ็อบเจ็กต์ drivetrain และปล่อยทรัพยากรที่เกี่ยวข้อง

virtual ~drivetrain();

พารามิเตอร์#

พารามิเตอร์

พิมพ์

คำอธิบาย

&l / &r

motor_group / motor

มอเตอร์ซ้ายและขวา หรือกลุ่มมอเตอร์ พารามิเตอร์ทั้งสองต้องใช้ประเภทเดียวกัน: อย่างใดอย่างหนึ่งคือ วัตถุ motor_group สองตัวที่ หรือวัตถุ motor สองตัวที่เป็น

wheelTravel

double

เส้นรอบวงของล้อระบบขับเคลื่อน ค่าเริ่มต้นคือ 320

trackWidth

double

ระยะห่างระหว่างล้อซ้ายและล้อขวา ค่าเริ่มต้นคือ 320

wheelBase

double

ระยะห่างระหว่างล้อหน้าและล้อหลัง ค่าเริ่มต้นคือ 130

unit

distanceUnits

หน่วยสำหรับ wheelTravel, trackWidthและ wheelBaseคือ mm (มิลลิเมตร ค่าเริ่มต้น) หรือ inches

externalGearRatio

double

อัตราทดเกียร์ที่ใช้ปรับระยะทางการขับเคลื่อนหากมีการใช้เกียร์ ค่าเริ่มต้นคือ 1.0

ตัวอย่าง#

// Create the left and right motor objects
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);

// Create the drivetrain object
drivetrain myDrivetrain = drivetrain(
    leftMotor,  // left motor object
    rightMotor, // right motor object
    259.34,     // wheelTravel
    320,        // trackWidth
    40,         // wheelBase
    mm,         // unit
    1.0 );      // externalGearRatio

ฟังก์ชันสมาชิก#

There are many ways to code the drivetrain. Below is a list of all drivetrain member functions:

การกระทำ - ขยับและหมุนหุ่นยนต์

  • drive - เคลื่อนหุ่นยนต์ไปข้างหน้าหรือถอยหลังตลอดไป

  • driveFor - เคลื่อนหุ่นยนต์ไปข้างหน้าหรือถอยหลังตามระยะทางที่กำหนด

  • turn - หมุนหุ่นยนต์ไปทางซ้ายหรือขวาตลอดไป

  • turnFor - หมุนหุ่นยนต์ไปทางซ้ายหรือขวาตามจำนวนองศาที่กำหนด

  • stop - หยุดการเคลื่อนที่ของหุ่นยนต์

ตัวปรับแต่ง - ปรับการตั้งค่าระบบขับเคลื่อน

  • setDriveVelocity - บอกหุ่นยนต์ว่าจะขับเร็วแค่ไหน

  • setTurnVelocity - บอกหุ่นยนต์ว่าจะเลี้ยวเร็วแค่ไหน

  • setStopping - บอกวิธีที่หุ่นยนต์จะหยุดเคลื่อนที่: โดยการเบรก การปล่อยให้ไหลไปเอง หรือการหยุดนิ่ง

  • setTimeout - กำหนดจำนวนวินาทีที่หุ่นยนต์จะพยายามทำการเคลื่อนไหวให้เสร็จสิ้น

ผู้รับสินค้า - ตรวจสอบสถานะการเคลื่อนย้าย

  • isDone - ส่งคืนค่าบูลีนว่าหุ่นยนต์เคลื่อนที่เสร็จแล้วหรือไม่

  • isMoving - ส่งคืนว่าหุ่นยนต์กำลังเคลื่อนที่หรือไม่ ในรูปแบบค่าบูลีน

  • velocity - ส่งคืนความเร็วในการขับเคลื่อนของหุ่นยนต์

  • current - ส่งคืนกระแสไฟฟ้าที่ระบบขับเคลื่อนใช้

  • power - ส่งคืนอัตราการใช้พลังงานของระบบขับเคลื่อน

  • torque - ส่งคืนค่าแรงบิดที่ระบบขับเคลื่อนใช้

  • efficiency - ส่งคืนประสิทธิภาพการใช้พลังงานของระบบขับเคลื่อน

  • temperature - ส่งคืนอุณหภูมิของระบบขับเคลื่อน

  • voltage - ส่งคืนแรงดันไฟฟ้าที่จ่ายให้กับระบบขับเคลื่อน

ก่อนเรียกใช้ฟังก์ชันสมาชิก drivetrain ใดๆ จะต้องสร้างอ็อบเจ็กต์ drivetrain ก่อน ดังแสดงด้านล่าง:

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

// Create the left and right motor objects
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);

// Create the drivetrain object
drivetrain myDrivetrain = drivetrain(
    leftMotor,  // left motor object
    rightMotor, // right motor object
    259.34,     // wheelTravel
    320,        // trackWidth
    40,         // wheelBase
    mm,         // unit
    1.0 );      // externalGearRatio

การกระทำ#

ขับ#

drive จะทำให้หุ่นยนต์เคลื่อนที่ไปข้างหน้าหรือถอยหลังอย่างไม่มีที่สิ้นสุด หุ่นยนต์จะเคลื่อนที่ต่อไปจนกว่าจะได้รับคำสั่งอื่น เช่น การเลี้ยวหรือการหยุด สำหรับ RPM หรือ DPS ขีดจำกัดจะเปลี่ยนแปลงไปตามอัตราทดเกียร์ของระบบขับเคลื่อน

Available Functions

1 - ขับเคลื่อนโดยใช้ ความเร็วไดรฟ์ที่กำหนดค่าไว้ในปัจจุบัน

void drive(
    directionType dir );

2 - ขับเคลื่อนด้วยความเร็วที่กำหนด

void drive(
    directionType dir,
    double        velocity,
    velocityUnits units );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

dir

directionType

ทิศทางการเคลื่อนที่ของหุ่นยนต์: forward หรือ reverse

velocity

double

The velocity to drive with from 0% to 100% when using velocityUnits::pct, from 0 to 600 rpm when using rpm, or from 0 to 3600 degrees per second when using dps. If no velocity is provided, the robot drives at the current drive velocity.

units

velocityUnits

หน่วยความเร็ว: velocityUnits::pct (เปอร์เซ็นต์), rpm (รอบต่อนาที), หรือ dps (องศาต่อวินาที)

Return Values

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

Notes
  • drive เป็นคำสั่งที่ไม่รอการทำงาน โปรเจกต์จะดำเนินการโค้ดบรรทัดถัดไปทันทีหลังจากเรียกใช้คำสั่งนี้

  • ระบบขับเคลื่อนจะยังคงเคลื่อนที่ต่อไปจนกว่าจะมีการเรียก stop หรือมีการเรียกใช้ฟังก์ชันการเคลื่อนที่ของระบบขับเคลื่อนอื่น (เช่น driveFor หรือ turn)

  • ฟังก์ชันต่างๆ เช่น isDone และ isMoving ไม่สามารถใช้ได้กับ driveเนื่องจากไม่ได้ใช้การเคลื่อนที่ตามเป้าหมาย (ไม่มีพารามิเตอร์ distance)

Examples
// Drive forward and back
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();

ไดรฟ์ฟอร์#

คำสั่ง driveFor จะเคลื่อนหุ่นยนต์ไปข้างหน้าหรือถอยหลังเป็นระยะทางที่กำหนด โดยค่าเริ่มต้น โปรเจ็กต์จะรอจนกว่าหุ่นยนต์จะหยุดเคลื่อนที่ก่อนที่โค้ดบรรทัดถัดไปจะทำงาน สำหรับค่า RPM หรือ DPS ขีดจำกัดจะเปลี่ยนแปลงไปตามอัตราทดเกียร์ของระบบขับเคลื่อน

Available Functions

1 - Drives in the specified direction for a distance using the currently configured drive velocity.

bool driveFor(
    directionType dir,
    double        distance,
    distanceUnits units,
    bool          waitForCompletion = true );

2 - ขับเคลื่อนไปในทิศทางที่ขึ้นอยู่กับระยะทางโดยใช้ ความเร็วในการขับเคลื่อนที่กำหนดค่าไว้ในปัจจุบัน

bool driveFor(
    double        distance,
    distanceUnits units,
    bool          waitForCompletion = true );

3 - ขับเคลื่อนไปในทิศทางที่ขึ้นอยู่กับระยะทางด้วยความเร็วที่กำหนด

bool driveFor(
    double        distance,
    distanceUnits units,
    double        velocity,
    velocityUnits units_v,
    bool          waitForCompletion = true );

4 - ขับเคลื่อนไปในทิศทางที่กำหนด เป็นระยะทางที่กำหนด ด้วยความเร็วที่กำหนด

bool driveFor(
    directionType dir,
    double        distance,
    distanceUnits units,
    double        velocity,
    velocityUnits units_v,
    bool          waitForCompletion = true );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

dir

directionType

ทิศทางการเคลื่อนที่ของหุ่นยนต์: forward หรือ reverse

distance

double

ระยะทางที่หุ่นยนต์ขับเคลื่อนไปได้

units

distanceUnits

หน่วยวัดระยะทาง: mm (มิลลิเมตร), inchesหรือ cm (เซนติเมตร)

velocity

double

The velocity to drive with from 0% to 100% when using velocityUnits::pct, from 0 to 600 rpm when using rpm, or from 0 to 3600 degrees per second when using dps. If no velocity is provided, the robot drives at the current drive velocity.

units_v

velocityUnits

หน่วยความเร็ว: velocityUnits::pct (เปอร์เซ็นต์), rpm (รอบต่อนาที), หรือ dps (องศาต่อวินาที)

waitForCompletion

bool

true (ค่าเริ่มต้น) จะทำให้โปรเจ็กต์รอจนกว่าหุ่นยนต์จะเคลื่อนที่เสร็จก่อนที่โค้ดบรรทัดถัดไปจะทำงาน false จะทำให้โค้ดบรรทัดถัดไปทำงานทันที

Return Values

ส่งคืนค่าบูลีนว่าหุ่นยนต์ไปถึงระยะทางเป้าหมายหรือไม่

  • true - หุ่นยนต์ไปถึงระยะทางเป้าหมายแล้ว

  • false - หุ่นยนต์ไม่ได้ทำการเคลื่อนไหวจนเสร็จสิ้น หรือฟังก์ชันส่งค่ากลับก่อนที่การเคลื่อนไหวจะเสร็จสมบูรณ์ เนื่องจาก waitForCompletion ถูกตั้งค่าเป็น false

Notes
  • การดำเนินการฟังก์ชันการเคลื่อนที่ของระบบขับเคลื่อนอื่น (เช่น drive หรือ turnFor) ในขณะที่ driveFor กำลังดำเนินการอยู่ จะขัดจังหวะการเคลื่อนที่ปัจจุบัน

  • เนื่องจาก driveFor เป็นแบบกำหนดเป้าหมาย (ใช้พารามิเตอร์ distance ) ฟังก์ชันต่างๆ เช่น isDone และ isMoving จึงทำงานร่วมกับ driveFor

Examples
// Drive 200 mm, then back 200 mm
myDrivetrain.driveFor(forward, 200, mm);
myDrivetrain.driveFor(reverse, 200, mm);

เปลี่ยน#

การหมุน turn จะทำให้หุ่นยนต์หมุนไปทางซ้ายหรือขวาไปเรื่อยๆ จนกว่าจะได้รับคำสั่งอื่น เช่น การขับเคลื่อนหรือการหยุด สำหรับค่า RPM หรือ DPS ขีดจำกัดจะเปลี่ยนแปลงไปตามอัตราทดเกียร์ของระบบขับเคลื่อน

Available Functions

2 - หมุนด้วยความเร็วที่กำหนด

void turn(
    turnType     dir,
    double       velocity,
    velocityUnits units );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

dir

turnType

ทิศทางที่หุ่นยนต์หมุน: left หรือ right

velocity

double

ความเร็วในการหมุนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ velocityUnits::pct, ตั้งแต่ 0 ถึง 600 รอบต่อนาที เมื่อใช้ rpm rpmหรือตั้งแต่ 0 ถึง 3600 องศาต่อวินาที เมื่อใช้ dps dpsหากไม่ได้ระบุความเร็ว หุ่นยนต์จะหมุนด้วยความเร็วในการหมุนปัจจุบัน

units

velocityUnits

หน่วยความเร็ว: velocityUnits::pct (เปอร์เซ็นต์), rpm (รอบต่อนาที), หรือ dps (องศาต่อวินาที)

Return Values This function does not return a value. Notes
  • turn คือคำสั่งที่ไม่รอการทำงาน โปรแกรมจะดำเนินการโค้ดบรรทัดถัดไปทันทีหลังจากเรียกใช้คำสั่งนี้

  • ระบบขับเคลื่อนจะหมุนต่อไปจนกว่าจะมีการเรียก stop หรือมีการเรียกใช้ฟังก์ชันการเคลื่อนที่ของระบบขับเคลื่อนอื่น (เช่น turnFor หรือ drive)

  • ฟังก์ชันต่างๆ เช่น isDone และ isMoving ไม่สามารถใช้ได้กับ turnเนื่องจากไม่ได้ใช้การเคลื่อนที่ตามเป้าหมาย (ไม่มีพารามิเตอร์ angle)

Examples
// Turn right, then left, then stop
myDrivetrain.turn(right);
wait(2, seconds);
myDrivetrain.turn(left);
wait(2, seconds);
myDrivetrain.stop();

เทิร์นฟอร์#

turnFor หมุนหุ่นยนต์ไปทางซ้ายหรือขวาเป็นจำนวนองศาที่กำหนด การหมุนจะสัมพันธ์กับตำแหน่งปัจจุบันของหุ่นยนต์ โดยค่าเริ่มต้น โครงการจะรอจนกว่าหุ่นยนต์จะหมุนเสร็จก่อนที่โค้ดบรรทัดถัดไปจะทำงาน สำหรับ RPM หรือ DPS ขีดจำกัดจะเปลี่ยนไปตามอัตราทดเกียร์ของระบบขับเคลื่อน

Available Functions

1 - เลี้ยวตามมุมที่กำหนดโดยใช้ ความเร็วในการเลี้ยวที่กำหนดค่าไว้ในปัจจุบัน

bool turnFor(
    double        angle,
    rotationUnits units,
    bool          waitForCompletion = true );

2 - เลี้ยวไปในทิศทางที่กำหนดด้วยมุมที่กำหนดโดยใช้ ความเร็วในการเลี้ยวที่กำหนดค่าไว้ในปัจจุบัน

bool turnFor(
    turnType      dir,
    double        angle,
    rotationUnits units,
    bool          waitForCompletion = true );

3 - หมุนตามมุมที่กำหนดด้วยความเร็วที่กำหนด

bool turnFor(
    double        angle,
    rotationUnits units,
    double        velocity,
    velocityUnits units_v,
    bool          waitForCompletion = true );

4 - เลี้ยวไปในทิศทางที่กำหนดด้วยมุมและความเร็วที่กำหนด

bool turnFor(
    turnType      dir,
    double        angle,
    rotationUnits units,
    double        velocity,
    velocityUnits units_v,
    bool          waitForCompletion = true );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

dir

turnType

ทิศทางที่หุ่นยนต์หมุน: left หรือ right

angle

double

มุมที่หุ่นยนต์หมุน

units

rotationUnits

หน่วยการหมุน: deg (องศา), rev (รอบ) หรือ raw (หน่วยดิบ) หนึ่งรอบเท่ากับ 360 องศา

velocity

double

ความเร็วในการหมุนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ velocityUnits::pct, ตั้งแต่ 0 ถึง 600 รอบต่อนาที เมื่อใช้ rpm rpmหรือตั้งแต่ 0 ถึง 3600 องศาต่อวินาที เมื่อใช้ dps dpsหากไม่ได้ระบุความเร็ว หุ่นยนต์จะหมุนด้วยความเร็วในการหมุนปัจจุบัน

units_v

velocityUnits

หน่วยความเร็ว: velocityUnits::pct (เปอร์เซ็นต์), rpm (รอบต่อนาที), หรือ dps (องศาต่อวินาที)

waitForCompletion

bool

true (ค่าเริ่มต้น) จะทำให้โปรเจ็กต์รอจนกว่าหุ่นยนต์จะหมุนเสร็จก่อนที่โค้ดบรรทัดถัดไปจะทำงาน false จะทำให้โค้ดบรรทัดถัดไปทำงานทันที

Return Values

ส่งคืนค่าบูลีนว่าหุ่นยนต์ทำมุมได้ตามเป้าหมายหรือไม่

  • true - หุ่นยนต์ทำมุมได้ตามเป้าหมายแล้ว

  • false - หุ่นยนต์ไม่ได้ทำการเลี้ยวเสร็จสิ้น หรือฟังก์ชันส่งค่ากลับก่อนที่การเลี้ยวจะเสร็จสมบูรณ์ เนื่องจาก waitForCompletion ถูกตั้งค่าเป็น false

Notes
  • การดำเนินการฟังก์ชันการเคลื่อนที่ของระบบขับเคลื่อนอื่น (เช่น turn หรือ drive) ในขณะที่ turnFor กำลังดำเนินการอยู่ จะขัดจังหวะการเคลื่อนที่ปัจจุบัน

  • เนื่องจาก turnFor เป็นแบบกำหนดเป้าหมาย (ใช้พารามิเตอร์ angle ) ฟังก์ชันต่างๆ เช่น isDone และ isMoving จึงทำงานร่วมกับ turnFor

Examples
// Turn right then left
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
myDrivetrain.turnFor(left, 90, degrees);

หยุด#

คำสั่ง stop จะหยุดการเคลื่อนที่ของหุ่นยนต์ หากมีการกำหนดโหมดการหยุดไว้ โหมดนั้นจะควบคุมวิธีการหยุดของหุ่นยนต์สำหรับการเรียกใช้ฟังก์ชันนี้

Available Functions

1 - Stops the drivetrain using the currently configured stopping mode.

void stop();

2 - หยุดระบบขับเคลื่อนโดยใช้โหมดเบรกที่กำหนด

void stop(
    brakeType mode );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

mode

brakeType

วิธีที่หุ่นยนต์จะหยุด:

  • brake - หยุดทันที
  • coast - ชะลอความเร็วจนหยุด
  • hold - หยุดทันทีและคงตำแหน่งล้อไว้

Return Values

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

Examples
// Drive forward, then coast to a stop
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);

ตัวกลายพันธุ์#

ตั้งค่าความเร็วในการขับขี่#

คำสั่ง setDriveVelocity จะบอกหุ่นยนต์ว่าควรขับเร็วแค่ไหน เปอร์เซ็นต์ที่สูงขึ้นจะทำให้หุ่นยนต์ขับเร็วขึ้น และเปอร์เซ็นต์ที่ต่ำลงจะทำให้หุ่นยนต์ขับช้าลง สำหรับค่า RPM หรือ DPS นั้น ค่าจำกัดจะเปลี่ยนแปลงไปตามอัตราทดเกียร์ของระบบขับเคลื่อน

ทุกโครงการเริ่มต้นด้วยการที่หุ่นยนต์ขับเคลื่อนด้วยความเร็ว 50% เป็นค่าเริ่มต้น

หมายเหตุ: ความเร็วที่สูงขึ้นจะทำให้หุ่นยนต์ขับเคลื่อนได้เร็วขึ้น แต่ความแม่นยำอาจลดลง ความเร็วที่ต่ำลงจะทำให้หุ่นยนต์ขับเคลื่อนได้ช้าลง แต่ความแม่นยำอาจเพิ่มขึ้น

Available Functions
void  setDriveVelocity(
  double velocity,
  velocityUnits units );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

velocity

double

ความเร็วในการขับเคลื่อนตั้งแต่ 0% ถึง 100% เมื่อใช้ velocityUnits::pct, ตั้งแต่ 0 ถึง 600 รอบต่อนาทีเมื่อใช้ rpm, หรือตั้งแต่ 0 ถึง 3600 องศาต่อวินาทีเมื่อใช้ dps

units

velocityUnits

หน่วยความเร็ว: velocityUnits::pct (เปอร์เซ็นต์), rpm (รอบต่อนาที), หรือ dps (องศาต่อวินาที)

Return Values

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

Notes
  • ความเร็วในการขับเคลื่อนจะมีผลกับฟังก์ชันการเคลื่อนที่ของระบบขับเคลื่อนทั้งหมดที่ตามมา (เช่น drive และ driveFor) เว้นแต่จะมีการระบุความเร็วที่เฉพาะเจาะจงในการเรียกใช้ฟังก์ชัน

Examples
// Drive forward, then coast to a stop
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);

ตั้งค่าความเร็วในการเลี้ยว#

setTurnVelocity บอกหุ่นยนต์ว่าควรเลี้ยวเร็วแค่ไหน เปอร์เซ็นต์ที่สูงขึ้นจะทำให้หุ่นยนต์เลี้ยวเร็วขึ้น และเปอร์เซ็นต์ที่ต่ำลงจะทำให้หุ่นยนต์เลี้ยวช้าลง สำหรับ RPM หรือ DPS ขีดจำกัดจะเปลี่ยนแปลงไปตามอัตราทดเกียร์ของระบบขับเคลื่อน

ทุกโครงการเริ่มต้นด้วยการที่หุ่นยนต์หมุนด้วยความเร็ว 50% เป็นค่าเริ่มต้น

หมายเหตุ: ความเร็วที่สูงขึ้นจะทำให้หุ่นยนต์เลี้ยวได้เร็วขึ้น แต่ความแม่นยำอาจลดลง ความเร็วที่ต่ำลงจะทำให้หุ่นยนต์เลี้ยวได้ช้าลง แต่ความแม่นยำอาจเพิ่มขึ้น

Available Functions
void  setTurnVelocity(
  double velocity,
  velocityUnits units );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

velocity

double

ความเร็วในการหมุนตั้งแต่ 0% ถึง 100% เมื่อใช้ velocityUnits::pct, ตั้งแต่ 0 ถึง 600 รอบต่อนาทีเมื่อใช้ rpm, หรือตั้งแต่ 0 ถึง 3600 องศาต่อวินาทีเมื่อใช้ dps

units

velocityUnits

หน่วยความเร็ว: percent หรือ pct (เปอร์เซ็นต์), rpm (รอบต่อนาที), หรือ dps (องศาต่อวินาที)

Return Values

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

Notes
  • ความเร็วการเลี้ยวจะมีผลกับฟังก์ชันการเลี้ยวของระบบขับเคลื่อนทั้งหมดที่ตามมา (เช่น turn และ turnFor) เว้นแต่จะมีการระบุความเร็วเฉพาะในการเรียกใช้ฟังก์ชัน

Examples
// Try default, slow, then fast
myDrivetrain.turnFor(right, 360, degrees);
wait(1, seconds);
myDrivetrain.setTurnVelocity(20, percent);
myDrivetrain.turnFor(right, 360, degrees);
wait(1, seconds);
myDrivetrain.setTurnVelocity(100, percent);
myDrivetrain.turnFor(right, 360, degrees);

ตั้งค่าการหยุด#

setStopping กำหนดวิธีการหยุดหุ่นยนต์: โดยการเบรก การปล่อยให้ไหลไปเอง หรือการหยุดนิ่ง

Available Functions
void setStopping(
  brakeType mode );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

mode

brakeType

วิธีที่หุ่นยนต์จะหยุด:

  • brake - หยุดทันที
  • coast - ชะลอความเร็วจนหยุด
  • hold - หยุดทันทีและคงตำแหน่งล้อไว้

Return Values

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

Notes
  • โหมดการหยุดจะใช้กับการเรียก stop ครั้งถัดไปทั้งหมด เว้นแต่จะมีการระบุโหมดการหยุดเฉพาะในการเรียกฟังก์ชัน

ตั้งค่าหมดเวลา#

setTimeout กำหนดจำนวนวินาทีที่หุ่นยนต์จะพยายามทำการเคลื่อนไหวให้เสร็จสิ้น หากหุ่นยนต์ไม่สามารถทำการเคลื่อนไหวให้เสร็จสิ้นได้ภายในเวลาที่กำหนด มันจะหยุดพยายามและไปยังบรรทัดโค้ดถัดไป ซึ่งจะช่วยป้องกันไม่ให้หุ่นยนต์ติดอยู่กับการเคลื่อนไหวใดๆ

Available Functions
void  setTimeout(
  int32_t time,
  timeUnits units );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

time

int32_t

ระยะเวลาที่หุ่นยนต์สามารถพยายามทำท่าทางให้เสร็จสมบูรณ์ ค่านี้ควรเป็นจำนวนเต็มบวก

units

timeUnits

หน่วยของเวลา: sec (วินาที) หรือ msec (มิลลิวินาที)

Return Values

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

Notes
  • การหมดเวลาจะใช้ได้เฉพาะกับฟังก์ชันการเคลื่อนที่ของระบบขับเคลื่อนตามเป้าหมายเท่านั้น (เช่น driveFor และ turnFor)

Examples
// Start turning if driving takes too long
myDrivetrain.setTimeout(1, seconds);
myDrivetrain.driveFor(forward, 25, inches);
myDrivetrain.turnFor(right, 90, degrees);

ผู้รับ#

เสร็จแล้ว#

isDone จะส่งคืนค่าบูลีนว่าหุ่นยนต์เคลื่อนที่เสร็จแล้วหรือไม่ ค่านี้สามารถใช้ควบคุมจังหวะเวลาของพฤติกรรมอื่นๆ โดยอิงจากการเคลื่อนที่ของหุ่นยนต์ได้

Available Functions
bool isDone( void );

Parameters

ฟังก์ชันนี้ไม่รับพารามิเตอร์ใดๆ

Return Values
  • true - หุ่นยนต์เคลื่อนที่เสร็จแล้ว

  • false - หุ่นยนต์ยังคงเคลื่อนที่อยู่

Notes
  • isDone เข้ากันได้กับการเคลื่อนไหวของระบบขับเคลื่อนตามเป้าหมาย (ฟังก์ชันที่เคลื่อนที่ไปยังเป้าหมาย เช่น driveFor และ turnFor)

  • isDone ไม่เข้ากันกับฟังก์ชันต่างๆ เช่น drive และ turn เนื่องจากฟังก์ชันเหล่านี้ไม่ได้ใช้การเคลื่อนที่ตามเป้าหมาย

กำลังย้าย#

isMoving จะส่งคืนค่าบูลีนว่าหุ่นยนต์กำลังเคลื่อนที่หรือไม่ ค่านี้สามารถใช้ควบคุมจังหวะเวลาของพฤติกรรมอื่นๆ โดยอิงจากการเคลื่อนที่ของหุ่นยนต์ได้

Available Functions
virtual bool isMoving( void );

Parameters

ฟังก์ชันนี้ไม่รับพารามิเตอร์ใดๆ

Return Values
  • true - หุ่นยนต์กำลังเคลื่อนที่

  • false - หุ่นยนต์ไม่เคลื่อนที่

Notes
  • isMoving เข้ากันได้กับการเคลื่อนที่ของระบบขับเคลื่อนตามเป้าหมาย (ฟังก์ชันที่เคลื่อนที่ไปยังเป้าหมาย เช่น driveFor และ turnFor)

  • isMoving ไม่เข้ากันกับฟังก์ชันต่างๆ เช่น drive และ turn เนื่องจากฟังก์ชันเหล่านี้ไม่ได้ใช้การเคลื่อนที่ตามเป้าหมาย

ความเร็ว#

ค่า velocity จะแสดงความเร็วในการขับเคลื่อนของหุ่นยนต์

ค่าบวกหมายความว่าหุ่นยนต์กำลังเคลื่อนที่ไปข้างหน้า ค่าลบหมายความว่าหุ่นยนต์กำลังเคลื่อนที่ถอยหลัง

Available Functions
double velocity(
  velocityUnits units );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

units

velocityUnits

หน่วยความเร็ว: percent หรือ pct (เปอร์เซ็นต์), rpm (รอบต่อนาที), หรือ dps (องศาต่อวินาที)

Return Values

ส่งคืนค่าความเร็วของระบบขับเคลื่อนเป็นค่า double ในหน่วยที่เลือก

Examples
// Show velocity before and during motion
Brain.Screen.print("Resting: %f", myDrivetrain.velocity(percent));
myDrivetrain.drive(forward, 100, velocityUnits::pct);
wait(1, seconds);
Brain.Screen.newLine();
Brain.Screen.print("Moving: %f", myDrivetrain.velocity(percent));
myDrivetrain.stop();

ปัจจุบัน#

current returns how much electrical current the drivetrain is using. Current is the amount of electricity flowing through the drivetrain. It can be returned in amps (amperes) or as a percentage, depending on the unit.

ค่ากระแสไฟฟ้าที่สูงขึ้นหมายความว่าระบบขับเคลื่อนใช้กระแสไฟฟ้ามากขึ้น ซึ่งอาจเกิดขึ้นเมื่อหุ่นยนต์กำลังดันกับวัตถุหรือพยายามเคลื่อนที่เมื่อติดอยู่

สามารถใช้ตรวจสอบได้ว่าระบบขับเคลื่อนทำงานหนักเกินไปหรือไม่ขณะเคลื่อนที่ หากกระแสไฟฟ้าสูงต่อเนื่อง ระบบขับเคลื่อนอาจร้อนขึ้นหรือใช้พลังงานอย่างไม่มีประสิทธิภาพ

Available Functions

1 - ส่งคืนกระแสไฟฟ้าของระบบขับเคลื่อนในหน่วยแอมแปร์

double current(
    currentUnits units = currentUnits::amp );

2 - ส่งคืนกระแสไฟฟ้าของระบบขับเคลื่อนเป็นเปอร์เซ็นต์ของค่าสูงสุด

double current(
    percentUnits units );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

units

currentUnits

หน่วยที่จะส่งกระแสไฟกลับ: amp (แอมป์, ค่าเริ่มต้น)

units

percentUnits

หน่วยที่จะส่งคืนกระแสไฟฟ้า: percent หรือ pct

Return Values

ส่งคืนค่ากระแสไฟฟ้าของระบบขับเคลื่อนเป็นค่า double ในหน่วยที่เลือก

พลัง#

ค่า power แสดงปริมาณพลังงานที่ระบบขับเคลื่อนใช้ โดยวัดเป็นวัตต์ ค่า Power แสดงให้เห็นว่าระบบขับเคลื่อนใช้พลังงานเร็วแค่ไหน

ค่ากำลังไฟฟ้าที่สูงขึ้นหมายความว่าระบบขับเคลื่อนใช้พลังงานเร็วขึ้น ซึ่งอาจเกิดขึ้นเมื่อหุ่นยนต์กำลังดันกับวัตถุหรือพยายามเคลื่อนที่เมื่อติดอยู่

สามารถใช้สิ่งนี้เพื่อเปรียบเทียบการเคลื่อนไหวหรือตรวจสอบว่าระบบขับเคลื่อนทำงานหนักเกินไปหรือไม่ หากกำลังไฟสูงอยู่ตลอดเวลา ระบบขับเคลื่อนอาจร้อนขึ้นหรือใช้พลังงานอย่างไม่มีประสิทธิภาพมากขึ้น

Available Functions
double power(
  powerUnits units = powerUnits::watt );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

units

powerUnits

หน่วยกำลังไฟ: watt (วัตต์, ค่าเริ่มต้น)

Return Values

ส่งคืนกำลังของระบบขับเคลื่อนเป็นหน่วยวัตต์ ( double)

แรงบิด#

แรงบิดแสดงให้เห็นว่าระบบส่งกำลังสามารถผลักหรือดึงได้แรงแค่ไหนในขณะที่ล้อหมุน

ค่า torque torque จะแสดงค่าแรงบิดที่ระบบส่งกำลังใช้งาน โดยวัดเป็นนิวตันเมตร (Nm) หรือนิ้วปอนด์ (InLb)

ค่าแรงบิดที่สูงขึ้นหมายความว่าระบบขับเคลื่อนกำลังผลักหรือดึงแรงขึ้น ซึ่งอาจเกิดขึ้นเมื่อหุ่นยนต์กำลังผลักกับวัตถุหรือพยายามเคลื่อนที่เมื่อติดอยู่

สามารถใช้ตรวจสอบได้ว่าระบบขับเคลื่อนทำงานหนักเกินไปหรือไม่ หรือเพื่อเปรียบเทียบว่าการเคลื่อนไหวแต่ละแบบต้องการแรงผลักมากแค่ไหน

Available Functions
double torque(
  torqueUnits units = torqueUnits::nm );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

units

torqueUnits

หน่วยที่ใช้ในการแสดงค่าแรงบิด: Nm (นิวตันเมตร, ค่าเริ่มต้น) หรือ InLb (นิ้วปอนด์)

Return Values

ส่งคืนค่าแรงบิดของระบบขับเคลื่อนเป็น double ในหน่วยที่เลือก

ประสิทธิภาพ#

ค่าประสิทธิภาพ efficiency เป็นเปอร์เซ็นต์ตั้งแต่ 0% ถึง 100%

ประสิทธิภาพแสดงให้เห็นว่าพลังงานของระบบขับเคลื่อนถูกนำไปใช้ในการเคลื่อนที่มากน้อยเพียงใด ค่าประสิทธิภาพที่สูงขึ้นหมายความว่าพลังงานของระบบขับเคลื่อนถูกนำไปใช้ในการเคลื่อนที่มากขึ้น ค่าประสิทธิภาพที่ต่ำลงอาจเกิดขึ้นได้เมื่อระบบขับเคลื่อนทำงานหนักแต่เคลื่อนที่ได้ไม่มาก เช่น เมื่อหุ่นยนต์ติดอยู่หรือชนกับวัตถุ

สามารถใช้เพื่อเปรียบเทียบการเคลื่อนไหว หรือตรวจสอบว่าระบบขับเคลื่อนสูญเสียพลังงานไปโดยเปล่าประโยชน์ แทนที่จะนำไปใช้ในการเคลื่อนไหวหรือไม่

Available Functions
double efficiency(
  percentUnits units = percentUnits::pct );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

units

percentUnits

หน่วยที่ใช้ในการวัดประสิทธิภาพ: percent หรือ pct (ค่าเริ่มต้น)

Return Values

ส่งคืนค่าประสิทธิภาพระบบขับเคลื่อนเป็น double ในหน่วยที่เลือก

อุณหภูมิ#

temperature จะแสดงอุณหภูมิเฉลี่ยของระบบขับเคลื่อนเป็นเปอร์เซ็นต์ ตั้งแต่ 0% ถึง 100%

อุณหภูมิแสดงให้เห็นถึงความร้อนของมอเตอร์ในระบบขับเคลื่อน อุณหภูมิที่สูงขึ้นหมายความว่ามอเตอร์กำลังร้อนขึ้นขณะทำงาน มอเตอร์ควรมีอุณหภูมิต่ำกว่า 55 องศาเซลเซียสเพื่อให้ทำงานได้อย่างเต็มประสิทธิภาพ

หากมอเตอร์ร้อนเกินไป มอเตอร์จะลดกระแสไฟฟ้าสูงสุดลงเพื่อป้องกันตัวเอง เมื่ออุณหภูมิถึง 70 องศาเซลเซียส มอเตอร์จะหยุดทำงานจนกว่าจะเย็นลง

สามารถใช้ตรวจสอบได้ว่าชุดขับเคลื่อนร้อนเกินไปหรือไม่ระหว่างการเคลื่อนไหวซ้ำๆ การใช้งานเป็นเวลานาน หรือเมื่อมีการดันกับวัตถุ

Available Functions
double temperature(
  percentUnits units );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

units

percentUnits

หน่วยที่จะส่งคืนอุณหภูมิ: percent หรือ pct

Return Values

ส่งคืนค่าอุณหภูมิเฉลี่ยของระบบขับเคลื่อนเป็นค่า double ในหน่วยที่เลือก

Notes
  • ค่าที่ส่งคืน 50% บ่งชี้ว่าอุณหภูมิเฉลี่ยของมอเตอร์อยู่ที่ประมาณ 45°C (113°F)

  • ช่วงอุณหภูมิการทำงานปกติของระบบขับเคลื่อนอยู่ที่ประมาณ 20°C (68°F) ถึง 70°C (158°F)

แรงดันไฟฟ้า#

voltage ส่งคืนแรงดันไฟฟ้าที่จ่ายให้กับระบบขับเคลื่อน

แรงดันไฟฟ้าคือแรงดันไฟฟ้าที่จ่ายให้กับมอเตอร์ของระบบขับเคลื่อน สามารถนำค่านี้มาใช้ร่วมกับค่ากระแสไฟฟ้าและกำลังไฟฟ้าเพื่อทำความเข้าใจว่าระบบขับเคลื่อนใช้พลังงานไฟฟ้าอย่างไร

Available Functions
double  voltage(
  voltageUnits units = voltageUnits::volt );

Parameters

พารามิเตอร์

พิมพ์

คำอธิบาย

units

voltageUnits

หน่วยที่ใช้ในการส่งค่าแรงดันไฟฟ้ากลับ: volt (โวลต์, ค่าเริ่มต้น) หรือ voltageUnits::mV (มิลลิโวลต์)

Return Values

ส่งคืนค่าแรงดันไฟฟ้าของระบบขับเคลื่อนเป็นค่า double ในหน่วยที่เลือก