ระบบขับเคลื่อน#
การแนะนำ#
หุ่นยนต์ VEX IQ (รุ่นที่ 2) ใช้ระบบขับเคลื่อนเพื่อบังคับทิศทางและเลี้ยว ระบบขับเคลื่อนประกอบด้วยมอเตอร์และล้อที่ทำงานร่วมกันเพื่อเคลื่อนที่หุ่นยนต์
ระบบขับเคลื่อนที่กำหนดค่าไว้สามารถใช้ เซ็นเซอร์ไจโร ที่เชื่อมต่อ เซ็นเซอร์เฉื่อย ในตัวของสมอง หรือไม่ใช้เซ็นเซอร์เลยก็ได้ เมื่อใช้เซ็นเซอร์ ระบบขับเคลื่อนจะใช้เซ็นเซอร์นั้นเพื่อช่วยให้หุ่นยนต์เคลื่อนที่และเลี้ยวได้อย่างแม่นยำ ในตอนเริ่มต้นของแต่ละโครงการ ระบบขับเคลื่อนจะปรับเทียบเซ็นเซอร์โดยอัตโนมัติ ให้หุ่นยนต์อยู่นิ่งประมาณ 2 วินาทีในระหว่างการปรับเทียบ เพื่อให้หุ่นยนต์สามารถเคลื่อนที่และเลี้ยวได้อย่างถูกต้อง
หน้านี้ใช้ชื่อระบบขับเคลื่อน drivetrain เป็นตัวอย่าง กรุณาแทนที่ด้วยชื่อที่คุณกำหนดเองตามต้องการ
มีหลายวิธีในการเขียนโค้ดระบบขับเคลื่อน ด้านล่างนี้คือรายการวิธีการเขียนโค้ดระบบขับเคลื่อนทั้งหมด:
การกระทำ — ขยับและหมุนหุ่นยนต์
drive— เคลื่อนหุ่นยนต์ไปข้างหน้าหรือถอยหลังตลอดไปdrive_for— เคลื่อนหุ่นยนต์ไปข้างหน้าหรือถอยหลังตามระยะทางที่กำหนดturn— หมุนหุ่นยนต์ไปทางซ้ายหรือขวาตลอดไปturn_for— หมุนหุ่นยนต์ไปทางซ้ายหรือขวาตามจำนวนองศาที่กำหนดturn_to_heading— หมุนหุ่นยนต์ให้หันหน้าไปยังทิศทางที่กำหนดตั้งแต่ -359 ถึง 359 องศา หุ่นยนต์จะหมุนไปในทิศทางที่สั้นที่สุดเพื่อไปยังทิศทางเป้าหมายturn_to_rotation— หมุนหุ่นยนต์ไปที่มุมการหมุนที่กำหนดstop— หยุดการเคลื่อนที่ของหุ่นยนต์calibrate_drivetrain— ปรับเทียบเซ็นเซอร์ที่กำหนดค่าไว้กับระบบขับเคลื่อน
ตัวปรับแต่ง — ปรับการตั้งค่าระบบขับเคลื่อน
set_drive_velocity— บอกหุ่นยนต์ว่าจะขับด้วยความเร็วเท่าใดset_turn_velocity— บอกหุ่นยนต์ว่าจะเลี้ยวเร็วแค่ไหนset_stopping— บอกวิธีที่หุ่นยนต์จะหยุดเคลื่อนที่: โดยการเบรก การปล่อยให้ไหลไปเอง หรือการหยุดนิ่งset_timeout— กำหนดเวลาที่หุ่นยนต์จะพยายามทำการเคลื่อนไหวให้เสร็จสิ้นset_heading— เปลี่ยนทิศทางปัจจุบันของหุ่นยนต์เป็นทิศทางใหม่set_rotation— เปลี่ยนการหมุนปัจจุบันของหุ่นยนต์เป็นการหมุนใหม่set_turn_threshold— บอกว่าหุ่นยนต์ต้องเข้าใกล้มุมเป้าหมายมากแค่ไหนก่อนที่จะเลี้ยวเสร็จสมบูรณ์set_turn_constant— เปลี่ยนความแรงในการแก้ไขการเลี้ยวของหุ่นยนต์
ผู้รับสินค้า — ตรวจสอบสถานะการเคลื่อนย้าย
heading— ส่งคืนทิศทางปัจจุบันของหุ่นยนต์จาก 0 ถึง 359 องศาrotation— ส่งคืนการหมุนปัจจุบันของหุ่นยนต์velocity— ส่งคืนความเร็วที่หุ่นยนต์กำลังขับเคลื่อนcurrent— ส่งคืนกระแสไฟฟ้าที่ระบบขับเคลื่อนใช้is_moving— ส่งคืนว่าหุ่นยนต์กำลังเคลื่อนที่หรือไม่ ในรูปแบบค่าบูลีนis_done— ส่งคืนค่าบูลีนว่าหุ่นยนต์เคลื่อนที่เสร็จแล้วหรือไม่is_turning— ส่งคืนว่าหุ่นยนต์กำลังเลี้ยวหรือไม่ ในรูปแบบค่าบูลีนpower— ส่งคืนอัตราการใช้พลังงานของระบบขับเคลื่อนtorque— ส่งคืนค่าแรงบิดที่ระบบขับเคลื่อนใช้efficiency— ส่งคืนประสิทธิภาพการใช้พลังงานของระบบขับเคลื่อนtemperature— ส่งคืนอุณหภูมิของระบบขับเคลื่อน
ผู้ประกอบชิ้นส่วน — สร้างและกำหนดค่าระบบขับเคลื่อนด้วยตนเอง
DriveTrain— สร้างระบบขับเคลื่อนโดยไม่มีเซ็นเซอร์ไจโรหรือเซ็นเซอร์เฉื่อยSmartDrive— สร้างระบบขับเคลื่อนด้วยเซ็นเซอร์ไจโรหรือเซ็นเซอร์เฉื่อย
การกระทำ#
drive#
คำสั่ง drive จะทำให้หุ่นยนต์เคลื่อนที่ไปข้างหน้าหรือถอยหลังอย่างไม่มีที่สิ้นสุด หุ่นยนต์จะเคลื่อนที่ต่อไปจนกว่าจะได้รับคำสั่งอื่น เช่น การเลี้ยวหรือการหยุด
Usage:
drivetrain.drive(direction, velocity, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ทิศทางการเคลื่อนที่ของหุ่นยนต์: |
|
ตัวเลือกเสริม ความเร็วในการขับเคลื่อนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ |
|
ตัวเลือกเสริม หน่วยความเร็ว: |
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# Drive slowly in reverse then stop
drivetrain.drive(REVERSE, 20, PERCENT)
wait(2, SECONDS)
drivetrain.stop()
drive_for#
คำสั่ง drive_for จะเคลื่อนหุ่นยนต์ไปข้างหน้าหรือถอยหลังเป็นระยะทางที่กำหนด โครงการจะรอจนกว่าหุ่นยนต์จะหยุดเคลื่อนที่ก่อนที่โค้ดบรรทัดถัดไปจะทำงาน
Usage:
drivetrain.drive_for(direction, distance, units, velocity, units_v, wait)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ทิศทางการเคลื่อนที่ของหุ่นยนต์: |
|
ระยะทางที่หุ่นยนต์ขับเคลื่อน ค่านี้อาจเป็นจำนวนเต็ม |
|
เลือกได้ หน่วยระยะทาง: |
|
ตัวเลือกเสริม ความเร็วในการขับเคลื่อนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ |
|
ตัวเลือกเสริม หน่วยความเร็ว: |
|
ตัวเลือกเสริม |
# Drive forward and backward
drivetrain.drive_for(FORWARD, 10)
drivetrain.drive_for(REVERSE, 10)
# Quickly drive forward and backward
drivetrain.drive_for(FORWARD, 200, MM, 100, PERCENT)
drivetrain.drive_for(REVERSE, 200, MM, 100, PERCENT)
turn#
turn จะหมุนหุ่นยนต์ไปทางซ้ายหรือขวาเรื่อยๆ จนกว่าจะได้รับคำสั่งอื่น เช่น ขับเคลื่อนหรือหยุด
Usage:
drivetrain.turn(direction, velocity, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ทิศทางที่หุ่นยนต์หมุน: |
|
ตัวเลือกเสริม ความเร็วในการหมุนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ |
|
ตัวเลือกเสริม หน่วยความเร็ว: |
# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()
# Quickly turn right and left, then stop
drivetrain.turn(RIGHT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.turn(LEFT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.stop()
turn_for#
turn_for สั่งให้หุ่นยนต์หมุนไปทางซ้ายหรือขวาเป็นจำนวนองศาหรือรอบที่กำหนด การหมุนจะสัมพันธ์กับตำแหน่งปัจจุบันของหุ่นยนต์ โปรแกรมจะรอจนกว่าหุ่นยนต์จะหมุนเสร็จก่อนที่โค้ดบรรทัดถัดไปจะทำงาน
Usage:
drivetrain.turn_for(direction, angle, units, velocity, units_v, wait)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ทิศทางที่หุ่นยนต์หมุน: |
|
ปริมาณการหมุนของหุ่นยนต์ ค่านี้สามารถเป็นจำนวนเต็ม |
|
เลือกได้ตามต้องการ หน่วยการหมุน: |
|
ตัวเลือกเสริม ความเร็วในการหมุนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ |
|
ตัวเลือกเสริม หน่วยความเร็ว: |
|
ตัวเลือกเสริม |
# Turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)
# Quickly turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES, 100, PERCENT)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES, 100, PERCENT)
turn_to_heading#
ทิศทาง (Heading) คือทิศทางที่หุ่นยนต์หันหน้าไป โดยวัดเป็นองศา คำสั่ง turn_to_heading จะหมุนหุ่นยนต์ให้หันหน้าไปในทิศทางที่กำหนด ตั้งแต่ -359 ถึง 359 องศา หุ่นยนต์จะหมุนไปในทิศทางที่สั้นที่สุดเพื่อไปยังทิศทางเป้าหมาย
ทิศทางเริ่มต้นของหุ่นยนต์คือ 0 องศา
โปรเจ็กต์จะรอจนกว่าหุ่นยนต์จะหมุนเสร็จก่อนที่จะรันโค้ดบรรทัดถัดไป
Usage:
drivetrain.turn_to_heading(angle, units, velocity, units_v, wait)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ทิศทางที่หุ่นยนต์ควรหันหน้าไป (หน่วยเป็นองศา) ค่านี้สามารถเป็นจำนวนเต็ม |
|
เลือกได้ตามต้องการ หน่วยวัดส่วนหัว: |
|
ตัวเลือกเสริม ความเร็วในการหมุนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ |
|
ตัวเลือกเสริม หน่วยความเร็ว: |
|
ตัวเลือกเสริม |
# Turn to face the cardinal directions
drivetrain.turn_to_heading(90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(270, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(0, DEGREES)
# Turn twice slowly
drivetrain.turn_to_heading(90, DEGREES, 20, PERCENT)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES, 20, PERCENT)
turn_to_rotation#
turn_to_rotation หมุนหุ่นยนต์ไปยังทิศทางการหมุนที่กำหนด
การหมุนคือจำนวนรอบที่หุ่นยนต์หมุน โดยวัดเป็นองศาหรือจำนวนรอบ ในตอนเริ่มต้นโครงการ ค่าการหมุนจะถูกตั้งไว้ที่ 0 องศา นอกจากนี้ยังสามารถตั้งค่าการหมุนได้โดยใช้เมธอด set_rotation
ค่าการหมุนเป็นค่าสัมบูรณ์ ซึ่งหมายความว่าทิศทางการเลี้ยวขึ้นอยู่กับการหมุนปัจจุบันของหุ่นยนต์ การเลี้ยวขวาจะเพิ่มการหมุน และการเลี้ยวซ้ายจะลดการหมุน
ตัวอย่างเช่น ถ้าหุ่นยนต์เริ่มต้นที่ 0 องศา และคุณหมุนเป็น 720 องศา มันจะเลี้ยวขวา 2 ครั้ง จากนั้นถ้าคุณหมุนเป็น 360 องศา มันจะเลี้ยวซ้าย 1 ครั้ง เพราะ 360 น้อยกว่า 720
โปรเจ็กต์จะรอจนกว่าหุ่นยนต์จะหมุนเสร็จก่อนที่จะรันโค้ดบรรทัดถัดไป
Usage:
drivetrain.turn_to_rotation(angle, units, velocity, units_v, wait)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ค่าการหมุน (หน่วยเป็นองศาหรือจำนวนรอบ) ที่หุ่นยนต์จะหมุนไป ค่านี้สามารถเป็นจำนวนเต็ม |
|
เลือกได้ตามต้องการ หน่วยการหมุน: |
|
ตัวเลือกเสริม ความเร็วในการหมุนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ |
|
ตัวเลือกเสริม หน่วยความเร็ว: |
|
ตัวเลือกเสริม |
# Turn left, then spin in a circle
# clockwise and face right
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES)
# Turn left then slowly spin in a
# circle clockwise
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES, 20, PERCENT)
stop#
ปุ่ม stop stop จะหยุดการเคลื่อนที่ของหุ่นยนต์
Usage:
drivetrain.stop(mode)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ตัวเลือกเสริม วิธีการหยุดของหุ่นยนต์:
|
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# Drive forward and coast to a stop
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop(COAST)
calibrate_drivetrain#
calibrate_drivetrain เป็นฟังก์ชันในตัวที่ใช้ปรับเทียบเซ็นเซอร์ไจโรหรือเซ็นเซอร์ความเฉื่อยที่กำหนดค่าไว้กับระบบขับเคลื่อน
การปรับเทียบช่วยให้เซ็นเซอร์วัดการเคลื่อนไหวได้อย่างถูกต้อง ให้หุ่นยนต์อยู่นิ่งประมาณ 2 วินาทีในระหว่างการปรับเทียบ หากหุ่นยนต์เคลื่อนที่ในระหว่างการปรับเทียบ เซ็นเซอร์อาจวัดการเคลื่อนไหวไม่ถูกต้อง
โปรเจ็กต์จะรอจนกว่าการปรับเทียบจะเสร็จสิ้นก่อนจึงจะเริ่มรันโค้ดบรรทัดถัดไป
หมายเหตุ: ฟังก์ชันนี้ไม่สามารถใช้งานภายใน VS Code ได้
Usage:
calibrate_drivetrain()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
ฟังก์ชันนี้ไม่มีพารามิเตอร์ |
ตัวกลายพันธุ์#
set_drive_velocity#
set_drive_velocity จะบอกหุ่นยนต์ว่าควรขับเร็วแค่ไหน เปอร์เซ็นต์ที่สูงขึ้นจะทำให้หุ่นยนต์ขับเร็วขึ้น และเปอร์เซ็นต์ที่ต่ำลงจะทำให้หุ่นยนต์ขับช้าลง
ทุกโครงการเริ่มต้นด้วยการที่หุ่นยนต์ขับเคลื่อนด้วยความเร็ว 50% เป็นค่าเริ่มต้น
หมายเหตุ: ความเร็วที่สูงขึ้นจะทำให้หุ่นยนต์ขับเคลื่อนได้เร็วขึ้น แต่ความแม่นยำอาจลดลง ความเร็วที่ต่ำลงจะทำให้หุ่นยนต์ขับเคลื่อนได้ช้าลง แต่ความแม่นยำอาจเพิ่มขึ้น
Usage:
drivetrain.set_drive_velocity(velocity, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ความเร็วในการขับเคลื่อนตั้งแต่ 0% ถึง 100% เมื่อใช้ |
|
ตัวเลือกเสริม หน่วยความเร็ว: |
# Drive forward at different velocities
# Default velocity
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive slower
drivetrain.set_drive_velocity(20, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive faster
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
set_turn_velocity#
set_turn_velocity จะบอกหุ่นยนต์ว่าควรเลี้ยวเร็วแค่ไหน เปอร์เซ็นต์ที่สูงขึ้นจะทำให้หุ่นยนต์เลี้ยวเร็วขึ้น และเปอร์เซ็นต์ที่ต่ำลงจะทำให้หุ่นยนต์เลี้ยวช้าลง
ทุกโครงการเริ่มต้นด้วยการที่หุ่นยนต์หมุนด้วยความเร็ว 50% เป็นค่าเริ่มต้น
หมายเหตุ: ความเร็วที่สูงขึ้นจะทำให้หุ่นยนต์เลี้ยวได้เร็วขึ้น แต่ความแม่นยำอาจลดลง ความเร็วที่ต่ำลงจะทำให้หุ่นยนต์เลี้ยวได้ช้าลง แต่ความแม่นยำอาจเพิ่มขึ้น
Usage:
drivetrain.set_turn_velocity(velocity, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ความเร็วที่จะหมุนจาก 0% ถึง 100% เมื่อใช้ |
|
ตัวเลือกเสริม หน่วยความเร็ว: |
# Turn at different velocities
# Default velocity
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn slower
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(RIGHT, 360)
set_stopping#
set_stopping กำหนดวิธีการหยุดการเคลื่อนที่ของหุ่นยนต์: โดยการเบรก การปล่อยให้ไหลไปเอง หรือการหยุดนิ่ง
Usage:
drivetrain.set_stopping(mode)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
วิธีที่หุ่นยนต์จะหยุด:
|
หากไม่ใช้วิธีนี้ หุ่นยนต์จะใช้ BRAKE เมื่อหยุด
set_timeout#
set_timeout กำหนดเวลาที่หุ่นยนต์จะพยายามทำการเคลื่อนไหวให้เสร็จสิ้น หากหุ่นยนต์ไม่สามารถทำการเคลื่อนไหวให้เสร็จภายในเวลาที่กำหนด มันจะหยุดพยายามและไปยังบรรทัดโค้ดถัดไป ซึ่งจะช่วยป้องกันไม่ให้หุ่นยนต์ติดอยู่กับการเคลื่อนไหวใดๆ
Usage:
drivetrain.set_timeout(value, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ระยะเวลาที่หุ่นยนต์สามารถพยายามทำท่าทางให้เสร็จสิ้นได้ ค่านี้อาจเป็นจำนวนเต็มบวก |
|
ตัวเลือกเสริม หน่วยเวลา: |
# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)
set_heading#
ทิศทางที่หุ่นยนต์หันหน้าไป (Heading) คือทิศทางที่หุ่นยนต์กำลังหันหน้าไป โดยวัดเป็นองศา คำสั่ง set_heading จะเปลี่ยนทิศทางปัจจุบันของหุ่นยนต์เป็นค่าทิศทางใหม่
ตัวอย่างเช่น หากหุ่นยนต์หันไปทางขวา การตั้งค่าทิศทางเป็น 0 องศา จะทำให้ตำแหน่งที่หันไปทางขวานั้นกลายเป็น 0 องศาใหม่ จากนั้นหุ่นยนต์สามารถหันไปตำแหน่งอื่น ๆ ได้โดยอิงจากทิศทางใหม่นั้น
Usage:
drivetrain.set_heading(heading, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ค่าทิศทาง (หน่วยเป็นองศาหรือจำนวนรอบ) ที่จะตั้งค่าให้กับหุ่นยนต์ ค่านี้สามารถเป็นจำนวนเต็ม |
|
เลือกได้ตามต้องการ หน่วยวัด: |
# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)
set_rotation#
การหมุน คือจำนวนรอบที่หุ่นยนต์หมุนไป โดยวัดเป็นองศาหรือจำนวนรอบ ในตอนเริ่มต้นโครงการ ค่าการหมุนจะถูกตั้งไว้ที่ 0 องศา คำสั่ง set_rotation จะเปลี่ยนค่าการหมุนปัจจุบันของหุ่นยนต์เป็นค่าใหม่
ตัวอย่างเช่น หากหุ่นยนต์หมุนไปทางขวาครบสองรอบ ค่าการหมุนของมันจะเป็น 720 องศา การตั้งค่าการหมุนเป็น 0 องศาจะรีเซ็ตค่าการหมุนจาก 720 เป็น 0 องศา จากนั้นหุ่นยนต์สามารถหมุนได้ตามค่าการหมุนใหม่นั้น
Usage:
drivetrain.set_rotation(rotation, units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ค่าการหมุน (หน่วยเป็นองศาหรือจำนวนรอบ) ที่จะตั้งค่าให้กับหุ่นยนต์ ค่านี้สามารถเป็นจำนวนเต็ม |
|
เลือกได้ตามต้องการ หน่วยการหมุน: |
# Spin counterclockwise two times
drivetrain.set_rotation(720, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)
set_turn_threshold#
set_turn_threshold กำหนดว่าหุ่นยนต์ต้องเข้าใกล้กับมุมเป้าหมายมากแค่ไหนก่อนที่จะเลี้ยวเสร็จสมบูรณ์
ค่าเกณฑ์ที่เล็กกว่าจะทำให้การเลี้ยวแม่นยำมากขึ้น แต่หุ่นยนต์อาจใช้เวลานานขึ้นในการเลี้ยวให้เสร็จ ค่าเกณฑ์ที่ใหญ่กว่าจะทำให้การเลี้ยวเสร็จเร็วขึ้น แต่ความแม่นยำอาจลดลง
Usage:
drivetrain.set_turn_threshold(value)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ค่าองศาการเลี้ยว สามารถเป็นจำนวนเต็ม |
# Set the turn threshold to 5 degrees
drivetrain.set_turn_threshold(5)
set_turn_constant#
set_turn_constant จะเปลี่ยนความแรงในการแก้ไขการเลี้ยวของหุ่นยนต์
ค่าที่สูงขึ้นจะทำให้หุ่นยนต์เลี้ยวหักมุมได้แรงขึ้น ค่าที่ต่ำลงจะทำให้หุ่นยนต์เลี้ยวหักมุมได้นุ่มนวลขึ้น ค่าเริ่มต้นคือ 1.0
Usage:
drivetrain.set_turn_constant(value)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ค่าคงที่การหมุน สามารถเป็นเลขทศนิยม ( |
# Increase the turn constant to 2.0
drivetrain.set_turn_constant(2.0)
ผู้รับ#
heading#
ทิศทาง (Heading) คือทิศทางที่หุ่นยนต์หันหน้าไป โดยวัดเป็นองศา ค่า Heading heading จะเปลี่ยนทิศทางปัจจุบันของหุ่นยนต์จาก 0 เป็น 359 องศา
ทิศทางเริ่มต้นของหุ่นยนต์คือ 0 องศา
Usage:
drivetrain.heading(units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ตัวเลือกเสริม หน่วยในการปรับทิศทางกลับ: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Heading: ")
brain.screen.print(drivetrain.heading())
rotation#
การหมุน คือจำนวนรอบที่หุ่นยนต์หมุนไป โดยวัดเป็นองศาหรือจำนวนรอบ ในตอนเริ่มต้นโครงการ ค่าการหมุนจะถูกตั้งไว้ที่ 0 องศา ค่า rotation จะแสดงค่าการหมุนปัจจุบันของหุ่นยนต์
การเลี้ยวขวาจะเพิ่มมุมการหมุน และการเลี้ยวซ้ายจะลดมุมการหมุน ตัวอย่างเช่น การเลี้ยวขวาครบสองรอบจะทำให้ได้มุมการหมุน 720 องศา
Usage:
drivetrain.rotation(units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ตัวเลือกเสริม หน่วยการหมุนกลับ: |
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Rotation: ")
brain.screen.print(drivetrain.rotation())
velocity#
ค่า velocity จะแสดงความเร็วในการขับเคลื่อนของหุ่นยนต์
It can return velocity as a percentage from -100% to 100%, in RPM from -127 rpm to 127 rpm, or in VelocityUnits.DPS (degrees per second). A positive value means the robot is driving forward. A negative value means the robot is driving in reverse.
Usage:
drivetrain.velocity(units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
Optional. The unit to return velocity in: |
current#
ค่า current แสดงปริมาณกระแสไฟฟ้าที่ระบบขับเคลื่อนใช้ โดยวัดเป็นแอมป์ (แอมแปร์) กระแสไฟฟ้าคือปริมาณไฟฟ้าที่ไหลผ่านระบบขับเคลื่อน
ค่ากระแสไฟฟ้าที่สูงขึ้นหมายความว่าระบบขับเคลื่อนใช้กระแสไฟฟ้ามากขึ้น ซึ่งอาจเกิดขึ้นเมื่อหุ่นยนต์กำลังดันกับวัตถุหรือพยายามเคลื่อนที่เมื่อติดอยู่
สามารถใช้ตรวจสอบได้ว่าระบบขับเคลื่อนทำงานหนักเกินไปหรือไม่ขณะเคลื่อนที่ หากกระแสไฟฟ้าสูงต่อเนื่อง ระบบขับเคลื่อนอาจร้อนขึ้นหรือใช้พลังงานอย่างไม่มีประสิทธิภาพ
Usage:
drivetrain.current(units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ตัวเลือกเสริม หน่วยที่ใช้ในการส่งกระแสไฟกลับ: |
is_moving#
is_moving จะส่งคืนค่าบูลีนว่าหุ่นยนต์กำลังเคลื่อนที่หรือไม่ ค่านี้สามารถใช้ควบคุมจังหวะเวลาของพฤติกรรมอื่นๆ โดยอิงจากการเคลื่อนที่ของหุ่นยนต์ได้
True— หุ่นยนต์กำลังเคลื่อนที่False— หุ่นยนต์ไม่เคลื่อนที่
วิธีการนี้ทำงานร่วมกับวิธีการ Drivetrain ต่อไปนี้ที่มีพารามิเตอร์ wait : drive_for, turn_for, turn_to_heading, และ turn_to_rotation
Usage:
drivetrain.is_moving()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
is_done#
is_done จะส่งคืนค่าบูลีนว่าหุ่นยนต์เคลื่อนที่เสร็จแล้วหรือไม่ ค่านี้สามารถใช้ควบคุมจังหวะเวลาของพฤติกรรมอื่นๆ โดยอิงจากการเคลื่อนที่ของหุ่นยนต์ได้
True— หุ่นยนต์เคลื่อนที่เสร็จแล้วFalse— หุ่นยนต์ยังคงเคลื่อนที่อยู่
วิธีการนี้ทำงานร่วมกับวิธีการ Drivetrain ต่อไปนี้ที่มีพารามิเตอร์ wait : drive_for, turn_for, turn_to_heading, และ turn_to_rotation
Usage:
drivetrain.is_done()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
is_turning#
is_turning จะส่งคืนค่าบูลีนว่าหุ่นยนต์กำลังเลี้ยวหรือไม่ ค่านี้สามารถใช้ควบคุมจังหวะเวลาของพฤติกรรมอื่นๆ โดยอิงจากการเคลื่อนที่ของหุ่นยนต์ได้
True— หุ่นยนต์กำลังหมุนตัวFalse— หุ่นยนต์ไม่หมุน
วิธีการนี้ทำงานร่วมกับวิธีการ Drivetrain ต่อไปนี้ที่มีพารามิเตอร์ wait : turn_for, turn_to_heading, และ turn_to_rotation
Usage:
drivetrain.is_turning()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
power#
ค่า power แสดงปริมาณพลังงานที่ระบบขับเคลื่อนใช้ โดยวัดเป็นวัตต์ ค่า Power แสดงให้เห็นว่าระบบขับเคลื่อนใช้พลังงานเร็วแค่ไหน
ค่ากำลังไฟฟ้าที่สูงขึ้นหมายความว่าระบบขับเคลื่อนใช้พลังงานเร็วขึ้น ซึ่งอาจเกิดขึ้นเมื่อหุ่นยนต์กำลังดันกับวัตถุหรือพยายามเคลื่อนที่เมื่อติดอยู่
สามารถใช้สิ่งนี้เพื่อเปรียบเทียบการเคลื่อนไหวหรือตรวจสอบว่าระบบขับเคลื่อนทำงานหนักเกินไปหรือไม่ หากกำลังไฟสูงอยู่ตลอดเวลา ระบบขับเคลื่อนอาจร้อนขึ้นหรือใช้พลังงานอย่างไม่มีประสิทธิภาพมากขึ้น
Usage:
drivetrain.power()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
torque#
แรงบิดแสดงให้เห็นว่าระบบส่งกำลังสามารถผลักหรือดึงได้แรงแค่ไหนในขณะที่ล้อหมุน
ค่า torque torque จะแสดงค่าแรงบิดที่ระบบส่งกำลังใช้งาน โดยวัดเป็นนิวตันเมตร (Nm) หรือนิ้วปอนด์ (InLb)
ค่าแรงบิดที่สูงขึ้นหมายความว่าระบบขับเคลื่อนกำลังผลักหรือดึงแรงขึ้น ซึ่งอาจเกิดขึ้นเมื่อหุ่นยนต์กำลังผลักกับวัตถุหรือพยายามเคลื่อนที่เมื่อติดอยู่
สามารถใช้ตรวจสอบได้ว่าระบบขับเคลื่อนทำงานหนักเกินไปหรือไม่ หรือเพื่อเปรียบเทียบว่าการเคลื่อนไหวแต่ละแบบต้องการแรงผลักมากแค่ไหน
Usage:
drivetrain.torque(units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ตัวเลือกเสริม หน่วยที่ใช้ในการส่งค่าแรงบิดกลับ: |
efficiency#
efficiency returns how efficiently the drivetrain is using power, as a percentage from 0% to 100%.
ประสิทธิภาพแสดงให้เห็นว่าพลังงานของระบบขับเคลื่อนถูกนำไปใช้ในการเคลื่อนที่มากน้อยเพียงใด ค่าประสิทธิภาพที่สูงขึ้นหมายความว่าพลังงานของระบบขับเคลื่อนถูกนำไปใช้ในการเคลื่อนที่มากขึ้น ค่าประสิทธิภาพที่ต่ำลงอาจเกิดขึ้นได้เมื่อระบบขับเคลื่อนทำงานหนักแต่เคลื่อนที่ได้ไม่มาก เช่น เมื่อหุ่นยนต์ติดอยู่หรือชนกับวัตถุ
สามารถใช้เพื่อเปรียบเทียบการเคลื่อนไหว หรือตรวจสอบว่าระบบขับเคลื่อนสูญเสียพลังงานไปโดยเปล่าประโยชน์ แทนที่จะนำไปใช้ในการเคลื่อนไหวหรือไม่
Usage:
drivetrain.efficiency()
พารามิเตอร์ |
คำอธิบาย |
|---|---|
เมธอดนี้ไม่มีพารามิเตอร์ |
temperature#
ค่าอุณหภูมิ temperature จะแสดงอุณหภูมิเฉลี่ยของระบบขับเคลื่อนในหน่วยอุณหภูมิที่เลือก
อุณหภูมิแสดงให้เห็นถึงความร้อนของมอเตอร์ในระบบขับเคลื่อน อุณหภูมิที่สูงขึ้นหมายความว่ามอเตอร์กำลังร้อนขึ้นขณะทำงาน มอเตอร์ควรมีอุณหภูมิต่ำกว่า 55°C เพื่อให้ทำงานได้อย่างเต็มประสิทธิภาพ
หากมอเตอร์ร้อนเกินไป มอเตอร์จะลดกระแสไฟฟ้าสูงสุดลงเพื่อป้องกันตัวเอง เมื่ออุณหภูมิถึง 70°C มอเตอร์จะหยุดทำงานจนกว่าจะเย็นลง
สามารถใช้ตรวจสอบได้ว่าชุดขับเคลื่อนร้อนเกินไปหรือไม่ระหว่างการเคลื่อนไหวซ้ำๆ การใช้งานเป็นเวลานาน หรือเมื่อมีการดันกับวัตถุ
Usage:
drivetrain.temperature(units)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
ตัวเลือกเสริม หน่วยที่จะแสดงอุณหภูมิ: |
ผู้สร้าง#
คอนสตรัคเตอร์ใช้สำหรับสร้างอ็อบเจ็กต์ DriveTrain และ SmartDrive จำนวน ในโค้ด ซึ่งมีประโยชน์เมื่อต้องการกำหนดค่าระบบขับเคลื่อนโดยไม่ต้องใช้หน้าต่างอุปกรณ์
ต้องสร้างวัตถุ Motor หรือ MotorGroup อย่างน้อยสองรายการก่อนสร้างระบบขับเคลื่อน
DriveTrain#
DriveTrain สร้างระบบขับเคลื่อนโดยไม่มี เซ็นเซอร์ไจโร หรือ เซ็นเซอร์เฉื่อย
Usage:
DriveTrain(lm, rm, wheelTravel, trackWidth, wheelBase, units, externalGearRatio)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
The left motor or motor group. |
|
The right motor or motor group. |
|
(ไม่บังคับ) เส้นรอบวงของล้อระบบขับเคลื่อน ค่าเริ่มต้นคือ 300 มิลลิเมตร |
|
(ไม่บังคับ) ความกว้างระหว่างล้อซ้ายและล้อขวา ค่าเริ่มต้นคือ 320 มิลลิเมตร |
|
(ไม่บังคับ) ระยะห่างระหว่างล้อหน้าและล้อหลัง ค่าเริ่มต้นคือ 320 มิลลิเมตร |
|
ตัวเลือกเสริม หน่วยสำหรับ |
|
Optional. The gear ratio used to adjust drive distances if gears are used. This can be an |
# Create left and right drive motor objects
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT2, 1.0, True)
'''
Create a Drivetrain with the following values:
wheelTravel: 200
trackWidth: 173
wheelBase: 76
units: MM
externalGearRatio: 1
'''
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)
# Create two motor group objects for left and right motors
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)
right_motor_a = Motor(Ports.PORT3, 1.0, True)
right_motor_b = Motor(Ports.PORT4, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)
'''
Create a Drivetrain with the following values:
wheelTravel: 200
trackWidth: 173
wheelBase: 76
units: MM
externalGearRatio: 1
'''
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)
SmartDrive#
SmartDrive สร้างระบบขับเคลื่อนด้วย เซ็นเซอร์ไจโร หรือ เซ็นเซอร์เฉื่อย
Usage:
SmartDrive(lm, rm, g, wheelTravel, trackWidth, wheelBase, units, externalGearRatio)
พารามิเตอร์ |
คำอธิบาย |
|---|---|
|
The left motor or motor group. |
|
The right motor or motor group. |
|
เซ็นเซอร์ไจโร หรือ เซ็นเซอร์เฉื่อย ที่ใช้โดยระบบขับเคลื่อน |
|
(ไม่บังคับ) เส้นรอบวงของล้อระบบขับเคลื่อน ค่าเริ่มต้นคือ 300 มิลลิเมตร |
|
(ไม่บังคับ) ความกว้างระหว่างล้อซ้ายและล้อขวา ค่าเริ่มต้นคือ 320 มิลลิเมตร |
|
(ไม่บังคับ) ระยะห่างระหว่างล้อหน้าและล้อหลัง ค่าเริ่มต้นคือ 320 มิลลิเมตร |
|
ตัวเลือกเสริม หน่วยสำหรับ |
|
Optional. The gear ratio used to adjust drive distances if gears are used. This can be an |
# Create the Inertial Sensor
brain_inertial = Inertial()
# Make left and right drive motors
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)
# Create a SmartDrive object with wheelTravel 200
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)
หากคุณต้องการสร้างระบบขับเคลื่อนอัจฉริยะที่มีมอเตอร์หลายตัว คุณต้องสร้างมอเตอร์แต่ละตัวแยกกันก่อนที่จะรวมเข้าเป็นกลุ่มมอเตอร์
# Create the Inertial Sensor
brain_inertial = Inertial()
# Create two motor groups for left and right motors
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)
right_motor_a = Motor(Ports.PORT5, 1.0, True)
right_motor_b = Motor(Ports.PORT6, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)
# Create a SmartDrive object with wheelTravel 200 mm
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)