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

การแนะนำ#

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 ไม่ใช้ เซ็นเซอร์ความเฉื่อย, เซ็นเซอร์ไจโร หรือ เซ็นเซอร์ GPS สำหรับการเลี้ยวตามทิศทางหรือการหมุน มันสามารถขับเคลื่อนไปข้างหน้าหรือถอยหลัง และเลี้ยวซ้ายหรือขวาได้ แต่ไม่สามารถเลี้ยวไปยังทิศทางหรือการหมุนที่เฉพาะเจาะจงได้ สำหรับการเลี้ยวตามทิศทางและการหมุน ให้ใช้คลาส smartdrive

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

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

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

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

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

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

คลาส drivetrain ประกอบด้วยฟังก์ชันสมาชิกต่อไปนี้:

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

  • 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 นั้น ขีดจำกัดจะเปลี่ยนแปลงไปตามอัตราทดเกียร์ของระบบขับเคลื่อน

ทุกโครงการเริ่มต้นด้วยการที่หุ่นยนต์ขับเคลื่อนด้วยความเร็ว 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 บอกหุ่นยนต์ว่าควรเลี้ยวเร็วแค่ไหน เปอร์เซ็นต์ที่สูงขึ้นจะทำให้หุ่นยนต์เลี้ยวเร็วขึ้น และเปอร์เซ็นต์ที่ต่ำลงจะทำให้หุ่นยนต์เลี้ยวช้าลง

ทุกโครงการเริ่มต้นด้วยการที่หุ่นยนต์หมุนด้วยความเร็ว 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 ในหน่วยที่เลือก