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

การแนะนำ#

หุ่นยนต์ 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)

พารามิเตอร์

คำอธิบาย

direction

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

velocity

ตัวเลือกเสริม ความเร็วในการขับเคลื่อนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ PERCENT, ตั้งแต่ 0 ถึง 120 รอบต่อนาที เมื่อใช้ RPMหรือตั้งแต่ 0 ถึง 720 องศาต่อวินาที เมื่อใช้ VelocityUnits.DPSค่านี้สามารถเป็นจำนวนเต็ม integer หรือทศนิยม (float) หากไม่ได้ระบุความเร็ว หุ่นยนต์จะขับเคลื่อนด้วยความเร็วในการขับเคลื่อนปัจจุบัน

units

ตัวเลือกเสริม หน่วยความเร็ว: PERCENT ), RPM ต่อนาที (RPM) หรือ VelocityUnits.DPS (องศาต่อวินาที)

# 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)

พารามิเตอร์

คำอธิบาย

direction

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

distance

ระยะทางที่หุ่นยนต์ขับเคลื่อน ค่านี้อาจเป็นจำนวนเต็ม integer หรือทศนิยม (float)

units

เลือกได้ หน่วยระยะทาง: INCHES (ค่าเริ่มต้น), MM (มิลลิเมตร), หรือ DistanceUnits.CM (เซนติเมตร)

velocity

ตัวเลือกเสริม ความเร็วในการขับเคลื่อนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ PERCENT, ตั้งแต่ 0 ถึง 120 รอบต่อนาที เมื่อใช้ RPMหรือตั้งแต่ 0 ถึง 720 องศาต่อวินาที เมื่อใช้ VelocityUnits.DPSค่านี้สามารถเป็นจำนวนเต็ม integer หรือทศนิยม (float) หากไม่ได้ระบุความเร็ว หุ่นยนต์จะขับเคลื่อนด้วยความเร็วในการขับเคลื่อนปัจจุบัน

units_v

ตัวเลือกเสริม หน่วยความเร็ว: RPM (รอบต่อนาที ค่าเริ่มต้น), PERCENTหรือ VelocityUnits.DPS (องศาต่อวินาที)

wait

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

# 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)

พารามิเตอร์

คำอธิบาย

direction

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

velocity

ตัวเลือกเสริม ความเร็วในการหมุนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ PERCENT, ตั้งแต่ 0 ถึง 120 รอบต่อนาที เมื่อใช้ RPM RPMหรือตั้งแต่ 0 ถึง 720 องศาต่อวินาที เมื่อใช้ VelocityUnits.DPS VelocityUnits.DPSค่านี้สามารถเป็นจำนวนเต็ม integer หรือทศนิยม ( floatfloat) หากไม่ได้ระบุความเร็ว หุ่นยนต์จะหมุนด้วยความเร็วในการหมุนปัจจุบัน

units

ตัวเลือกเสริม หน่วยความเร็ว: RPM (รอบต่อนาที ค่าเริ่มต้น), PERCENTหรือ VelocityUnits.DPS (องศาต่อวินาที)

# 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)

พารามิเตอร์

คำอธิบาย

direction

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

angle

ปริมาณการหมุนของหุ่นยนต์ ค่านี้สามารถเป็นจำนวนเต็ม integer หรือทศนิยม (float)

units

เลือกได้ตามต้องการ หน่วยการหมุน: DEGREES (ค่าเริ่มต้น) หรือ TURNSหนึ่งรอบเท่ากับ 360 องศา

velocity

ตัวเลือกเสริม ความเร็วในการหมุนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ PERCENT, ตั้งแต่ 0 ถึง 120 รอบต่อนาที เมื่อใช้ RPM RPMหรือตั้งแต่ 0 ถึง 720 องศาต่อวินาที เมื่อใช้ VelocityUnits.DPS VelocityUnits.DPSค่านี้สามารถเป็นจำนวนเต็ม integer หรือทศนิยม ( floatfloat) หากไม่ได้ระบุความเร็ว หุ่นยนต์จะหมุนด้วยความเร็วในการหมุนปัจจุบัน

units_v

ตัวเลือกเสริม หน่วยความเร็ว: RPM (รอบต่อนาที ค่าเริ่มต้น), PERCENTหรือ VelocityUnits.DPS (องศาต่อวินาที)

wait

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

# 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)

พารามิเตอร์

คำอธิบาย

angle

ทิศทางที่หุ่นยนต์ควรหันหน้าไป (หน่วยเป็นองศา) ค่านี้สามารถเป็นจำนวนเต็ม integer หรือทศนิยม (float) ตั้งแต่ -359 ถึง 359 ได้

units

เลือกได้ตามต้องการ หน่วยวัดส่วนหัว: DEGREES (ค่าเริ่มต้น)

velocity

ตัวเลือกเสริม ความเร็วในการหมุนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ PERCENT, ตั้งแต่ 0 ถึง 120 รอบต่อนาที เมื่อใช้ RPM RPMหรือตั้งแต่ 0 ถึง 720 องศาต่อวินาที เมื่อใช้ VelocityUnits.DPS VelocityUnits.DPSค่านี้สามารถเป็นจำนวนเต็ม integer หรือทศนิยม ( floatfloat) หากไม่ได้ระบุความเร็ว หุ่นยนต์จะหมุนด้วยความเร็วในการหมุนปัจจุบัน

units_v

ตัวเลือกเสริม หน่วยความเร็ว: PERCENT ), RPM ต่อนาที (RPM) หรือ VelocityUnits.DPS (องศาต่อวินาที)

wait

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

# 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)

พารามิเตอร์

คำอธิบาย

angle

ค่าการหมุน (หน่วยเป็นองศาหรือจำนวนรอบ) ที่หุ่นยนต์จะหมุนไป ค่านี้สามารถเป็นจำนวนเต็ม integer ) หรือทศนิยม (float ) ได้

units

เลือกได้ตามต้องการ หน่วยการหมุน: DEGREES (ค่าเริ่มต้น) หรือ TURNSหนึ่งรอบเท่ากับ 360 องศา

velocity

ตัวเลือกเสริม ความเร็วในการหมุนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% เมื่อใช้ PERCENT, ตั้งแต่ 0 ถึง 120 รอบต่อนาที เมื่อใช้ RPM RPMหรือตั้งแต่ 0 ถึง 720 องศาต่อวินาที เมื่อใช้ VelocityUnits.DPS VelocityUnits.DPSค่านี้สามารถเป็นจำนวนเต็ม integer หรือทศนิยม ( floatfloat) หากไม่ได้ระบุความเร็ว หุ่นยนต์จะหมุนด้วยความเร็วในการหมุนปัจจุบัน

units_v

ตัวเลือกเสริม หน่วยความเร็ว: PERCENT ), RPM ต่อนาที (RPM) หรือ VelocityUnits.DPS (องศาต่อวินาที)

wait

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

# 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)

พารามิเตอร์

คำอธิบาย

mode

ตัวเลือกเสริม วิธีการหยุดของหุ่นยนต์: BRAKE (ค่าเริ่มต้น), BRAKEหรือ COAST

  • COAST — หยุดทันที
  • HOLD — ชะลอความเร็วจนหยุด
  • HOLD — หยุดทันทีและค้างตำแหน่งล้อ

# 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)

พารามิเตอร์

คำอธิบาย

velocity

ความเร็วในการขับเคลื่อนตั้งแต่ 0% ถึง 100% เมื่อใช้ PERCENTตั้งแต่ 0 ถึง 120 รอบต่อนาทีเมื่อใช้ RPMหรือตั้งแต่ 0 ถึง 720 องศาต่อวินาทีเมื่อใช้ VelocityUnits.DPSซึ่งสามารถเป็น integer หรือทศนิยม (float)

units

ตัวเลือกเสริม หน่วยความเร็ว: PERCENT ), RPM ต่อนาที (RPM) หรือ VelocityUnits.DPS (องศาต่อวินาที)

# 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)

พารามิเตอร์

คำอธิบาย

velocity

ความเร็วที่จะหมุนจาก 0% ถึง 100% เมื่อใช้ PERCENTจาก 0 ถึง 120 รอบต่อนาทีเมื่อใช้ RPMหรือจาก 0 ถึง 720 องศาต่อวินาทีเมื่อใช้ VelocityUnits.DPSซึ่งสามารถเป็น integer หรือทศนิยม (float)

units

ตัวเลือกเสริม หน่วยความเร็ว: PERCENT ), RPM ต่อนาที (RPM) หรือ VelocityUnits.DPS (องศาต่อวินาที)

# 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)

พารามิเตอร์

คำอธิบาย

mode

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

  • BRAKE — หยุดทันที
  • COAST — ชะลอความเร็วจนหยุด
  • HOLD — หยุดทันทีและคงตำแหน่งล้อไว้

หากไม่ใช้วิธีนี้ หุ่นยนต์จะใช้ BRAKE เมื่อหยุด

set_timeout#

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

Usage:
drivetrain.set_timeout(value, units)

พารามิเตอร์

คำอธิบาย

value

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

units

ตัวเลือกเสริม หน่วยเวลา: MSEC (ค่าเริ่มต้น) หรือ SECONDS

# 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)

พารามิเตอร์

คำอธิบาย

heading

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

units

เลือกได้ตามต้องการ หน่วยวัด: DEGREES (ค่าเริ่มต้น) หรือ TURNSหนึ่งรอบเท่ากับ 360 องศา

# 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)

พารามิเตอร์

คำอธิบาย

rotation

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

units

เลือกได้ตามต้องการ หน่วยการหมุน: DEGREES (ค่าเริ่มต้น) หรือ TURNSหนึ่งรอบเท่ากับ 360 องศา

# 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)

พารามิเตอร์

คำอธิบาย

value

ค่าองศาการเลี้ยว สามารถเป็นจำนวนเต็ม integer ) หรือทศนิยม (float) ค่าเริ่มต้นคือ 1 องศา

# 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)

พารามิเตอร์

คำอธิบาย

value

ค่าคงที่การหมุน สามารถเป็นเลขทศนิยม (float) ตั้งแต่ 0.1 ถึง 4.0 ค่าเริ่มต้นคือ 1.0

# Increase the turn constant to 2.0
drivetrain.set_turn_constant(2.0)

ผู้รับ#

heading#

ทิศทาง (Heading) คือทิศทางที่หุ่นยนต์หันหน้าไป โดยวัดเป็นองศา ค่า Heading heading จะเปลี่ยนทิศทางปัจจุบันของหุ่นยนต์จาก 0 เป็น 359 องศา

ทิศทางเริ่มต้นของหุ่นยนต์คือ 0 องศา

Usage:
drivetrain.heading(units)

พารามิเตอร์

คำอธิบาย

units

ตัวเลือกเสริม หน่วยในการปรับทิศทางกลับ: DEGREES (ค่าเริ่มต้น) หรือ TURNSหนึ่งรอบเท่ากับ 360 องศา

# 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)

พารามิเตอร์

คำอธิบาย

units

ตัวเลือกเสริม หน่วยการหมุนกลับ: DEGREES (ค่าเริ่มต้น) หรือ TURNSหนึ่งรอบเท่ากับ 360 องศา

# 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)

พารามิเตอร์

คำอธิบาย

units

Optional. The unit to return velocity in: PERCENT (default), RPM (rotations per minute), or VelocityUnits.DPS (degrees per second).

current#

ค่า current แสดงปริมาณกระแสไฟฟ้าที่ระบบขับเคลื่อนใช้ โดยวัดเป็นแอมป์ (แอมแปร์) กระแสไฟฟ้าคือปริมาณไฟฟ้าที่ไหลผ่านระบบขับเคลื่อน

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

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

Usage:
drivetrain.current(units)

พารามิเตอร์

คำอธิบาย

units

ตัวเลือกเสริม หน่วยที่ใช้ในการส่งกระแสไฟกลับ: CurrentUnits.AMP (แอมป์ ค่าเริ่มต้น)

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)

พารามิเตอร์

คำอธิบาย

units

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

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)

พารามิเตอร์

คำอธิบาย

units

ตัวเลือกเสริม หน่วยที่จะแสดงอุณหภูมิ: TemperatureUnits.CELSIUS (ค่าเริ่มต้น) หรือ TemperatureUnits.FAHRENHEIT

ผู้สร้าง#

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

ต้องสร้างวัตถุ Motor หรือ MotorGroup อย่างน้อยสองรายการก่อนสร้างระบบขับเคลื่อน

DriveTrain#

DriveTrain สร้างระบบขับเคลื่อนโดยไม่มี เซ็นเซอร์ไจโร หรือ เซ็นเซอร์เฉื่อย

Usage:
DriveTrain(lm, rm, wheelTravel, trackWidth, wheelBase, units, externalGearRatio)

พารามิเตอร์

คำอธิบาย

lm

The left motor or motor group.

rm

The right motor or motor group.

wheelTravel

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

trackWidth

(ไม่บังคับ) ความกว้างระหว่างล้อซ้ายและล้อขวา ค่าเริ่มต้นคือ 320 มิลลิเมตร

wheelBase

(ไม่บังคับ) ระยะห่างระหว่างล้อหน้าและล้อหลัง ค่าเริ่มต้นคือ 320 มิลลิเมตร

units

ตัวเลือกเสริม หน่วยสำหรับ wheelTravel, trackWidthและ wheelBase: MM (มิลลิเมตร, ค่าเริ่มต้น), INCHESหรือ DistanceUnits.CM (เซนติเมตร)

externalGearRatio

Optional. The gear ratio used to adjust drive distances if gears are used. This can be an integer or decimal (float). The default is 1.0.

# 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)

พารามิเตอร์

คำอธิบาย

lm

The left motor or motor group.

rm

The right motor or motor group.

g

เซ็นเซอร์ไจโร หรือ เซ็นเซอร์เฉื่อย ที่ใช้โดยระบบขับเคลื่อน

wheelTravel

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

trackWidth

(ไม่บังคับ) ความกว้างระหว่างล้อซ้ายและล้อขวา ค่าเริ่มต้นคือ 320 มิลลิเมตร

wheelBase

(ไม่บังคับ) ระยะห่างระหว่างล้อหน้าและล้อหลัง ค่าเริ่มต้นคือ 320 มิลลิเมตร

units

ตัวเลือกเสริม หน่วยสำหรับ wheelTravel, trackWidthและ wheelBase: MM (มิลลิเมตร, ค่าเริ่มต้น), INCHESหรือ DistanceUnits.CM (เซนติเมตร)

externalGearRatio

Optional. The gear ratio used to adjust drive distances if gears are used. This can be an integer or decimal (float). The default is 1.0.

# 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)