Python เฉพาะสำหรับหุ่นยนต์#

การแนะนำ#

หุ่นยนต์ Hero Bot ชื่อ Dex มีตัวเลือกมอเตอร์สองแบบ เซ็นเซอร์ตรวจจับภาพด้วย AI เซ็นเซอร์แบบออปติคอล และเซ็นเซอร์ระบบระบุตำแหน่งในเกม (GPS)

เมธอด VR มาตรฐานทั้งหมดของ VEXcode สามารถใช้งานได้ใน V5 25-26 Push Back Playground

ด้านล่างนี้คือรายการวิธีการเฉพาะสำหรับหุ่นยนต์ที่มีอยู่ทั้งหมด:

ระบบขับเคลื่อน – ทำให้หุ่นยนต์เคลื่อนที่และหมุนได้

  • การกระทำ

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

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

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

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

    • turn_to_heading — หมุนหุ่นยนต์ให้หันหน้าไปยังทิศทางที่กำหนดตั้งแต่ -359 ถึง 359 องศา

    • turn_to_rotation — หมุนหุ่นยนต์ไปที่มุมการหมุนที่กำหนด

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

  • ตัวปรับแต่ง

    • set_heading — เปลี่ยนทิศทางปัจจุบันของหุ่นยนต์เป็นทิศทางใหม่

    • set_rotation — เปลี่ยนการหมุนปัจจุบันของหุ่นยนต์เป็นการหมุนใหม่

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

    • set_drive_velocity — บอกหุ่นยนต์ว่าจะขับด้วยความเร็วเท่าใด

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

  • ผู้รับ

    • heading — ส่งคืนทิศทางปัจจุบันของหุ่นยนต์จาก 0 ถึง 359.99 องศา

    • rotation — ส่งคืนการหมุนปัจจุบันของหุ่นยนต์

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

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

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

การเคลื่อนไหว – ควบคุมและติดตามมอเตอร์ของหุ่นยนต์

  • การกระทำ

    • spin — หมุนมอเตอร์ไปข้างหน้าหรือถอยหลังตลอดไป

    • spin_for — หมุนมอเตอร์เป็นระยะทางที่กำหนด

    • spin_to_position — หมุนมอเตอร์ไปยังตำแหน่งที่กำหนด

    • stop — หยุดมอเตอร์ไม่ให้หมุน

  • ตัวปรับแต่ง

    • set_position — เปลี่ยนตำแหน่งปัจจุบันของมอเตอร์เป็นค่าใหม่

    • set_velocity — บอกมอเตอร์ให้หมุนเร็วแค่ไหน

    • set_timeout — ตั้งค่าระยะเวลาที่มอเตอร์จะพยายามทำการเคลื่อนไหวให้เสร็จสิ้น

  • ผู้รับ

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

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

    • position — ส่งคืนตำแหน่งปัจจุบันของมอเตอร์

    • velocity — ส่งคืนความเร็วในการหมุนของมอเตอร์

AI Vision - จับภาพและวิเคราะห์วัตถุโดยใช้เซ็นเซอร์ AI Vision

  • ผู้รับ

    • take_snapshot – ส่งคืนทูเปิลของวัตถุที่ตรวจพบสำหรับลายเซ็นเฉพาะ

  • คุณสมบัติ

    • width – ความกว้างของวัตถุที่ตรวจพบในหน่วยพิกเซล

    • height – ความสูงของวัตถุที่ตรวจพบในหน่วยพิกเซล

    • centerX – ตำแหน่ง X ของจุดศูนย์กลางของวัตถุในหน่วยพิกเซล

    • centerY – ตำแหน่ง Y ของจุดศูนย์กลางของวัตถุในหน่วยพิกเซล

    • originX – ตำแหน่ง X ของมุมบนซ้ายของวัตถุในหน่วยพิกเซล

    • originY – ตำแหน่ง Y ของมุมบนซ้ายของวัตถุในหน่วยพิกเซล

    • id – รหัสการจำแนกหรือแท็กของวัตถุ

คอนโซล – แสดงค่าต่างๆ บนคอนโซลและตรวจสอบค่าเหล่านั้น

  • พิมพ์

    • brain.screen.print — แสดงข้อความ ตัวเลข หรือค่าตัวแปรในคอนโซล

    • brain.screen.next_row — ย้ายเคอร์เซอร์คอนโซลไปที่ต้นแถวถัดไป

    • brain.screen.clear_screen — ล้างแถวทั้งหมดออกจากคอนโซล

  • เฝ้าสังเกต

    • monitor_variable — เพิ่มตัวแปรที่กำหนดไว้ล่วงหน้าอย่างน้อยหนึ่งตัวลงในแท็บ Monitor

    • monitor_sensor — เพิ่มค่าเซ็นเซอร์อย่างน้อยหนึ่งค่าลงในแท็บ Monitor

การรับรู้ - ใช้ประโยชน์จากเซ็นเซอร์ต่างๆ ของหุ่นยนต์

  • ออปติก

    • is_near_object – ส่งคืนว่าเซ็นเซอร์แสงตรวจพบวัตถุที่อยู่ในระยะหรือไม่

    • color – ส่งคืนสีที่ตรวจพบโดยเซ็นเซอร์แสง

    • brightness – ส่งคืนปริมาณแสงที่สะท้อนจากวัตถุ

    • hue – ส่งคืนค่าสีที่ตรวจพบโดยเซ็นเซอร์แสง

    • object_detected – ลงทะเบียนฟังก์ชันที่จะถูกเรียกเมื่อเซ็นเซอร์แสงตรวจพบวัตถุ

    • object_lost – ลงทะเบียนฟังก์ชันที่จะถูกเรียกเมื่อเซ็นเซอร์แสงสูญเสียวัตถุ

  • GPS

    • x_position – ส่งคืนพิกัด x ปัจจุบันของเซ็นเซอร์ GPS ในสนาม

    • y_position – ส่งคืนพิกัด y ปัจจุบันของเซ็นเซอร์ GPS ในสนาม

    • heading – ส่งคืนทิศทางที่หุ่นยนต์กำลังหันหน้าไปทางนั้นตามการอ่านค่าของเซ็นเซอร์ GPS ตั้งแต่ 0 ถึง 359 องศา

ตัวอย่างในหน้านี้ใช้ตำแหน่งเริ่มต้นเริ่มต้นของ Playground ตามค่าเริ่มต้น

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

ระบบขับเคลื่อนควบคุมการเคลื่อนที่และการเลี้ยวของหุ่นยนต์ VR ระบบขับเคลื่อนสามารถเคลื่อนที่ไปข้างหน้าหรือถอยหลัง เลี้ยวซ้ายหรือขวา เลี้ยวตามทิศทางต่างๆ และติดตามการหมุนของมันได้

การกระทำ#

ขับ#

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

Usage:
drivetrain.drive(direction)

พารามิเตอร์

คำอธิบาย

direction

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

def main():
    # Drive forward then stop
    drivetrain.drive(FORWARD)
    wait(2, SECONDS)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

ไดรฟ์สำหรับ#

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

Usage:
drivetrain.drive_for(direction, distance, units, wait)

พารามิเตอร์

คำอธิบาย

direction

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

distance

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

units

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

wait

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

def main():
    # Drive forward and backward
    drivetrain.drive_for(FORWARD, 200, MM)
    drivetrain.drive_for(REVERSE, 200, MM)

# VR threads — Do not delete
vr_thread(main)

เปลี่ยน#

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

Usage:
drivetrain.turn(direction)

พารามิเตอร์

คำอธิบาย

direction

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

def main():
    # Turn right and left, then stop
    drivetrain.turn(RIGHT)
    wait(2, SECONDS)
    drivetrain.turn(LEFT)
    wait(2, SECONDS)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

เลี้ยวสำหรับ#

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

Usage:
drivetrain.turn_for(direction, angle, units, wait)

พารามิเตอร์

คำอธิบาย

direction

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

angle

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

units

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

wait

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

def main():
    # Turn the robot right and left
    drivetrain.turn_for(RIGHT, 90, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_for(LEFT, 90, DEGREES)

# VR threads — Do not delete
vr_thread(main)

เปลี่ยนหัว#

ทิศทาง (Heading) คือทิศทางที่หุ่นยนต์หันหน้าไป โดยวัดเป็นองศา คำสั่ง turn_to_heading จะหมุนหุ่นยนต์ให้หันหน้าไปในทิศทางที่กำหนด ตั้งแต่ -359 ถึง 359 องศา หุ่นยนต์จะหมุนไปในทิศทางที่สั้นที่สุดเพื่อไปยังทิศทางเป้าหมาย

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

โปรเจ็กต์จะรอจนกว่าหุ่นยนต์จะหมุนเสร็จก่อนที่จะรันโค้ดบรรทัดถัดไป

Usage:
drivetrain.turn_to_heading(angle, units, wait)

พารามิเตอร์

คำอธิบาย

angle

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

units

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

wait

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

def main():
    # 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)

# VR threads — Do not delete
vr_thread(main)

หมุนเพื่อการหมุน#

turn_to_rotation หมุนหุ่นยนต์ไปยังทิศทางการหมุนที่กำหนด

การหมุนคือจำนวนองศาที่หุ่นยนต์หมุนไป ในตอนเริ่มต้นโครงการ ค่าการหมุนจะถูกตั้งไว้ที่ 0 องศา นอกจากนี้ยังสามารถตั้งค่าการหมุนได้โดยใช้เมธอด set_rotation

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

ตัวอย่างเช่น ถ้าหุ่นยนต์เริ่มต้นที่ 0 องศา และคุณหมุนเป็น 720 องศา มันจะเลี้ยวขวา 2 ครั้ง จากนั้นถ้าคุณหมุนเป็น 360 องศา มันจะเลี้ยวซ้าย 1 ครั้ง เพราะ 360 น้อยกว่า 720

โปรเจ็กต์จะรอจนกว่าหุ่นยนต์จะหมุนเสร็จก่อนที่จะรันโค้ดบรรทัดถัดไป

Usage:
drivetrain.turn_to_rotation(angle, units, wait)

พารามิเตอร์

คำอธิบาย

angle

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

units

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

wait

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

def main():
    # 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)

# VR threads — Do not delete
vr_thread(main)

หยุด#

ปุ่ม stop stop จะหยุดการเคลื่อนที่ของหุ่นยนต์

Usage:
drivetrain.stop()

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

def main():
    # Drive forward then stop
    drivetrain.drive(FORWARD)
    wait(2, SECONDS)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

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

ตั้งค่าหัว#

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

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

Usage:
drivetrain.set_heading(heading, units)

พารามิเตอร์

คำอธิบาย

heading

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

units

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

def main():
    # Face the new 0 degrees
    drivetrain.set_heading(90, DEGREES)
    drivetrain.turn_to_heading(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

ตั้งค่าการหมุน#

การหมุน คือจำนวนองศาที่หุ่นยนต์หมุนไป ในตอนเริ่มต้นโครงการ ค่าการหมุนจะถูกตั้งไว้ที่ 0 องศา คำสั่ง set_rotation จะเปลี่ยนค่าการหมุนปัจจุบันของหุ่นยนต์เป็นค่าใหม่

ตัวอย่างเช่น หากหุ่นยนต์หมุนไปทางขวาครบสองรอบ ค่าการหมุนของมันจะเป็น 720 องศา การตั้งค่าการหมุนเป็น 0 องศาจะรีเซ็ตค่าการหมุนจาก 720 เป็น 0 องศา จากนั้นหุ่นยนต์สามารถหมุนได้ตามค่าการหมุนใหม่นั้น

Usage:
drivetrain.set_rotation(rotation, units)

พารามิเตอร์

คำอธิบาย

rotation

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

units

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

def main():
    # Spin counterclockwise two times
    drivetrain.set_rotation(720, DEGREES)
    drivetrain.turn_to_rotation(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

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

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

Usage:
drivetrain.set_timeout(value, units)

พารามิเตอร์

คำอธิบาย

value

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

units

หน่วยเวลา: SECONDS หรือ MSEC (มิลลิวินาที)

def main():
    # Turn right after driving forward
    drivetrain.set_timeout(1, SECONDS)
    drivetrain.drive_for(FORWARD, 25, INCHES)
    drivetrain.turn_for(RIGHT, 90)

# VR threads — Do not delete
vr_thread(main)

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

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

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

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

Usage:
drivetrain.set_drive_velocity(velocity, units)

พารามิเตอร์

คำอธิบาย

velocity

ความเร็วในการขับขี่สามารถวัดได้ตั้งแต่ 0% ถึง 100% โดยค่านี้อาจเป็นจำนวนเต็ม integer หรือทศนิยม (float)

units

เลือกได้ หน่วยความเร็ว: PERCENT (ค่าเริ่มต้น)

def main():
    # 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)

# VR threads — Do not delete
vr_thread(main)

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

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

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

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

Usage:
drivetrain.set_turn_velocity(velocity, units)

พารามิเตอร์

คำอธิบาย

velocity

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

units

เลือกได้ หน่วยความเร็ว: PERCENT (ค่าเริ่มต้น)

def main():
    # Turn at different velocities
    # Default velocity
    drivetrain.turn_for(RIGHT, 120, DEGREES)
    wait(1, SECONDS)
    # Turn slower
    drivetrain.set_turn_velocity(20, PERCENT)
    drivetrain.turn_for(RIGHT, 120, DEGREES)
    wait(1, SECONDS)
    # Turn faster
    drivetrain.set_turn_velocity(100, PERCENT)
    drivetrain.turn_for(RIGHT, 120, DEGREES)

# VR threads — Do not delete
vr_thread(main)

ผู้รับ#

หัวข้อ#

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

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

Usage:
drivetrain.heading(units)

พารามิเตอร์

คำอธิบาย

units

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

def main():
    # Display the heading after turning
    drivetrain.turn_for(RIGHT, 450, DEGREES)
    brain.screen.print("Heading: ")
    brain.screen.print(drivetrain.heading(DEGREES))

# VR threads — Do not delete
vr_thread(main)

การหมุน#

การหมุน คือจำนวนองศาที่หุ่นยนต์หมุนไป ในตอนเริ่มต้นโครงการ ค่าการหมุนจะถูกตั้งไว้ที่ 0 องศา คำสั่ง rotation จะส่งคืนค่าการหมุนปัจจุบันของหุ่นยนต์

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

Usage:
drivetrain.rotation(units)

พารามิเตอร์

คำอธิบาย

units

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

def main():
    # Display the rotation after turning
    drivetrain.turn_for(RIGHT, 450, DEGREES)
    brain.screen.print("Rotation: ")
    brain.screen.print(drivetrain.rotation(DEGREES))

# VR threads — Do not delete
vr_thread(main)

เสร็จแล้ว#

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

  • True — หุ่นยนต์เคลื่อนที่เสร็จแล้ว

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

วิธีการนี้ทำงานร่วมกับวิธีการ Drivetrain ต่อไปนี้ที่มีพารามิเตอร์ wait : drive_for, turn_for, turn_to_heading, และ turn_to_rotation

Usage:
drivetrain.is_done()

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

กำลังเคลื่อนที่#

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

  • True — หุ่นยนต์กำลังเคลื่อนที่

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

Usage:
drivetrain.is_moving()

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

ความเร็ว#

velocity จะแสดงความเร็วในการขับเคลื่อนของหุ่นยนต์เป็นเปอร์เซ็นต์ ตั้งแต่ -100% ถึง 100%

Usage:
drivetrain.velocity(units)

พารามิเตอร์

คำอธิบาย

units

เลือกได้ หน่วยความเร็ว: PERCENT (ค่าเริ่มต้น)

ตัวอย่าง

def main():
    # Display the velocity after driving
    drivetrain.drive_for(FORWARD, 150, MM)
    brain.screen.print("Velocity: ")
    brain.screen.print(drivetrain.velocity(PERCENT))

การเคลื่อนไหว#

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

มอเตอร์แต่ละตัวมีพฤติกรรมการเคลื่อนที่ในทิศทางเฉพาะตัว คำอธิบายทิศทางจะอธิบายว่าแต่ละทิศทางทำให้มอเตอร์นั้นเคลื่อนที่บน Dex อย่างไร

การกระทำ#

หมุน#

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

วิธีใช้:
สามารถใช้มอเตอร์วัตถุได้ 1 ใน 2 แบบ ดังแสดงด้านล่าง:

มอเตอร์

สั่งการ

intake_motor

intake_motor.spin(direction) — มอเตอร์ดูดอากาศ

conveyor_motor

conveyor_motor.spin(direction) — มอเตอร์สายพานลำเลียง

พารามิเตอร์

คำอธิบาย

direction

ทิศทางการหมุนของมอเตอร์:

  • FORWARD — หมุนมอเตอร์สายพานลำเลียงขึ้น หรือหมุนมอเตอร์ดูดในทิศทางดูด
  • REVERSE — หมุนมอเตอร์สายพานลำเลียงลง หรือหมุนมอเตอร์ดูดในทิศทางปล่อย

def main():
    # Pick up a second Block
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 350, MM)

# VR threads — Do not delete
vr_thread(main)

สปินฟอร์#

คำสั่ง spin_for จะหมุนมอเตอร์เป็นระยะทางที่กำหนด การหมุนนั้นสัมพันธ์กับตำแหน่งปัจจุบันของมอเตอร์ โปรเจ็กต์จะรอจนกว่ามอเตอร์จะหยุดหมุนก่อนที่โค้ดบรรทัดถัดไปจะทำงาน

วิธีใช้:
สามารถใช้มอเตอร์วัตถุได้ 1 ใน 2 แบบ ดังแสดงด้านล่าง:

มอเตอร์

สั่งการ

intake_motor

intake_motor.spin_for(direction, distance, units, wait) — มอเตอร์ดูดอากาศ

conveyor_motor

conveyor_motor.spin_for(direction, distance, units, wait) — มอเตอร์สายพานลำเลียง

พารามิเตอร์

คำอธิบาย

direction

ทิศทางการหมุนของมอเตอร์:

  • FORWARD — หมุนมอเตอร์สายพานลำเลียงขึ้น หรือหมุนมอเตอร์ดูดในทิศทางดูด
  • REVERSE — หมุนมอเตอร์สายพานลำเลียงลง หรือหมุนมอเตอร์ดูดในทิศทางปล่อย

distance

ระยะทางที่มอเตอร์หมุน DEGREES ใช้จำนวนเต็ม TURNS สามารถใช้จำนวนเต็มหรือทศนิยมก็ได้

units

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

wait

ตัวเลือกเสริม

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

def main():
    # Pick up a second Block
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 350, MM)

# VR threads — Do not delete
vr_thread(main)

หมุนไปยังตำแหน่ง#

spin_to_position หมุนมอเตอร์ไปยังตำแหน่งที่กำหนด

ตำแหน่งของมอเตอร์คือระยะที่มอเตอร์หมุน โดยวัดเป็น DEGREES หรือ TURNSหนึ่งรอบเท่ากับ 360 องศา ในตอนเริ่มต้นโครงการ ตำแหน่งของมอเตอร์จะถูกตั้งค่าเป็น 0 องศา นอกจากนี้ยังสามารถตั้งค่าตำแหน่งของมอเตอร์ได้โดยใช้เมธอด set_position

ค่าตำแหน่งเป็นค่าสัมบูรณ์ ซึ่งหมายความว่าทิศทางการหมุนขึ้นอยู่กับตำแหน่งปัจจุบันของมอเตอร์

ตัวอย่างเช่น หากมอเตอร์เริ่มหมุนที่ 0 องศาและหมุนไปที่ตำแหน่ง 720 องศา มันจะหมุนไปข้างหน้าสองรอบ หากจากนั้นมันหมุนไปที่ตำแหน่ง 360 องศา มันจะหมุนถอยหลังหนึ่งรอบ เพราะ 360 น้อยกว่า 720

วิธีใช้:
สามารถใช้มอเตอร์วัตถุได้ 1 ใน 2 แบบ ดังแสดงด้านล่าง:

มอเตอร์

สั่งการ

intake_motor

intake_motor.spin_to_position(angle, units, wait=True) — มอเตอร์ดูดอากาศ

conveyor_motor

conveyor_motor.spin_to_position(angle, units, wait=True) — มอเตอร์สายพานลำเลียง

พารามิเตอร์

คำอธิบาย

angle

ค่าตำแหน่งที่มอเตอร์จะหมุนไป DEGREES ใช้จำนวนเต็ม TURNS สามารถใช้จำนวนเต็มหรือทศนิยมได้

units

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

wait

ตัวเลือกเสริม

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

def main():
    # Pick up a second Block
    conveyor_motor.spin_to_position(150, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 350, MM)

# VR threads — Do not delete
vr_thread(main)

หยุด#

stop หยุดมอเตอร์ไม่ให้หมุน

วิธีใช้:
สามารถใช้มอเตอร์วัตถุได้ 1 ใน 2 แบบ ดังแสดงด้านล่าง:

มอเตอร์

สั่งการ

intake_motor

intake_motor.stop() — มอเตอร์ดูดอากาศ

conveyor_motor

conveyor_motor.stop() — มอเตอร์สายพานลำเลียง

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

def main():
    # Pick up a second Block
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 350, MM)
    intake_motor.stop()

# VR threads — Do not delete
vr_thread(main)

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

ตั้งค่าตำแหน่ง#

ตำแหน่งของมอเตอร์คือระยะที่มอเตอร์หมุนไป โดยวัดเป็น DEGREES หรือ TURNSหนึ่งรอบเท่ากับ 360 องศา set_position เปลี่ยนตำแหน่งปัจจุบันของมอเตอร์เป็นค่าใหม่

ตัวอย่างเช่น หากมอเตอร์หมุนไปถึง 180 องศา การตั้งตำแหน่งเป็น 0 องศาจะรีเซ็ตตำแหน่งนั้นจาก 180 องศาเป็น 0 องศา จากนั้นมอเตอร์จะสามารถหมุนไปยังตำแหน่งต่างๆ ตามค่าใหม่นั้นได้

วิธีใช้:
สามารถใช้มอเตอร์วัตถุได้ 1 ใน 2 แบบ ดังแสดงด้านล่าง:

มอเตอร์

สั่งการ

intake_motor

intake_motor.set_position(position, units) — มอเตอร์ดูดอากาศ

conveyor_motor

conveyor_motor.set_position(position, units) — มอเตอร์สายพานลำเลียง

พารามิเตอร์

คำอธิบาย

position

ค่าตำแหน่งที่จะตั้งค่าสำหรับมอเตอร์ DEGREES ใช้จำนวนเต็ม TURNS สามารถใช้จำนวนเต็มหรือทศนิยมได้

units

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

def main():
    # Pick up a second Block
    conveyor_motor.set_position(-150, DEGREES)
    conveyor_motor.spin_to_position(0, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 350, MM)

# VR threads — Do not delete
vr_thread(main)

ตั้งค่าความเร็ว#

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

ทุกโปรเจกต์เริ่มต้นด้วยมอเตอร์แต่ละตัวหมุนด้วยความเร็ว 50% เป็นค่าเริ่มต้น

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

วิธีใช้:
สามารถใช้มอเตอร์วัตถุได้ 1 ใน 2 แบบ ดังแสดงด้านล่าง:

มอเตอร์

สั่งการ

intake_motor

intake_motor.set_velocity(velocity, units) — มอเตอร์ดูดอากาศ

conveyor_motor

conveyor_motor.set_velocity(velocity, units) — มอเตอร์สายพานลำเลียง

พารามิเตอร์

คำอธิบาย

velocity

ความเร็วในการหมุนสามารถกำหนดได้ตั้งแต่ 0% ถึง 100% โดยสามารถเป็นจำนวนเต็ม integer หรือทศนิยม (float)

units

หน่วยความเร็ว: PERCENT

def main():
    # Pick up a second Block
    conveyor_motor.set_velocity(90, PERCENT)
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 400, MM)

# VR threads — Do not delete
vr_thread(main)

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

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

วิธีใช้:
สามารถใช้มอเตอร์วัตถุได้ 1 ใน 2 แบบ ดังแสดงด้านล่าง:

มอเตอร์

สั่งการ

intake_motor

intake_motor.set_timeout(value, units) — มอเตอร์ดูดอากาศ

conveyor_motor

conveyor_motor.set_timeout(value, units) — มอเตอร์สายพานลำเลียง

พารามิเตอร์

คำอธิบาย

value

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

units

หน่วยเวลา: SECONDS หรือ MSEC (มิลลิวินาที)

def main():
    # Pick up a second Block
    conveyor_motor.set_timeout(0.5, SECONDS)
    conveyor_motor.spin_to_position(1000, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 400, MM)

# VR threads — Do not delete
vr_thread(main)

ผู้รับ#

เสร็จแล้ว#

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

  • True — มอเตอร์หยุดเคลื่อนที่แล้ว

  • False — มอเตอร์ยังคงหมุนอยู่

วิธีนี้ทำงานร่วมกับเมธอด Motion ต่อไปนี้ที่มีพารามิเตอร์ wait : spin_for และ spin_to_position

วิธีใช้:
สามารถใช้มอเตอร์วัตถุได้ 1 ใน 2 แบบ ดังแสดงด้านล่าง:

มอเตอร์

สั่งการ

intake_motor

intake_motor.is_done() — มอเตอร์ดูดอากาศ

conveyor_motor

conveyor_motor.is_done() — มอเตอร์สายพานลำเลียง

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

def main():
    # Pick up a second Block
    conveyor_motor.spin_to_position(300, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while not conveyor_motor.is_done():
        drivetrain.drive(FORWARD)
        intake_motor.spin(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()
    intake_motor.stop()

# VR threads — Do not delete
vr_thread(main)

กำลังหมุน#

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

  • True — มอเตอร์กำลังหมุน

  • False — มอเตอร์ไม่หมุน

วิธีนี้ทำงานร่วมกับเมธอด Motion ต่อไปนี้ที่มีพารามิเตอร์ wait : spin_for และ spin_to_position

วิธีใช้:
สามารถใช้มอเตอร์วัตถุได้ 1 ใน 2 แบบ ดังแสดงด้านล่าง:

มอเตอร์

สั่งการ

intake_motor

intake_motor.is_spinning() — มอเตอร์ดูดอากาศ

conveyor_motor

conveyor_motor.is_spinning() — มอเตอร์สายพานลำเลียง

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

def main():
    # Pick up a second Block
    conveyor_motor.spin_to_position(300, DEGREES, wait=False)
    wait(0.1, SECONDS)
    while conveyor_motor.is_spinning():
        drivetrain.drive_for(FORWARD, 200, MM)
        intake_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

ตำแหน่ง#

ตำแหน่งของมอเตอร์คือระยะที่มอเตอร์หมุนไป โดยวัดเป็น DEGREES หรือ TURNSหนึ่งรอบเท่ากับ 360 องศา position จะแสดงตำแหน่งปัจจุบันของมอเตอร์

ในตอนเริ่มต้นโครงการ ตำแหน่งของมอเตอร์จะถูกตั้งไว้ที่ 0 องศา หากมอเตอร์หมุนไปข้างหน้าครบหนึ่งรอบ ตำแหน่งจะเปลี่ยนเป็น 360 องศา หรือ 1 รอบ หากมอเตอร์หมุนไปในทิศทางตรงกันข้าม ตำแหน่งจะเปลี่ยนเป็นค่าลบ

วิธีใช้:
สามารถใช้มอเตอร์วัตถุได้ 1 ใน 2 แบบ ดังแสดงด้านล่าง:

มอเตอร์

สั่งการ

intake_motor

intake_motor.position(units) — มอเตอร์ดูดอากาศ

conveyor_motor

conveyor_motor.position(units) — มอเตอร์สายพานลำเลียง

พารามิเตอร์

คำอธิบาย

units

หน่วยสำหรับปรับตำแหน่งมอเตอร์กลับไปที่: DEGREES หรือ TURNS

def main():
    # Pick up a second Block
    while conveyor_motor.position(DEGREES) < 150:
        conveyor_motor.spin(FORWARD)
        wait(2, MSEC)
    conveyor_motor.stop()
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 400, MM)

# VR threads — Do not delete
vr_thread(main)

ความเร็ว#

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

ค่าบวกหมายความว่ามอเตอร์หมุนไปข้างหน้า ค่าลบหมายความว่ามอเตอร์หมุนย้อนกลับ

วิธีใช้:
สามารถใช้มอเตอร์วัตถุได้ 1 ใน 2 แบบ ดังแสดงด้านล่าง:

มอเตอร์

สั่งการ

intake_motor

intake_motor.velocity(units) — มอเตอร์ดูดอากาศ

conveyor_motor

conveyor_motor.velocity(units) — มอเตอร์สายพานลำเลียง

พารามิเตอร์

คำอธิบาย

units

หน่วยความเร็วที่จะส่งคืน: PERCENT

def main():
    # Pick up a second block
    conveyor_motor.set_velocity(100, PERCENT)
    conveyor_motor.spin_to_position(300, DEGREES, wait=False)
    wait(0.2, SECONDS)
    brain.screen.print(conveyor_motor.velocity(PERCENT))
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 400, MM)

# VR threads — Do not delete
vr_thread(main)

AI Vision#

ผู้รับ#

ถ่ายภาพสแนปช็อต#

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

The tuple stores objects ordered from largest to smallest by width, starting at index 0. Each object’s properties can be accessed using its index. An empty tuple is returned if no matching objects are detected.

Usage:
ai_vision.take_snapshot(signature)

พารามิเตอร์

คำอธิบาย

signature

กรองชุดข้อมูลเพื่อให้มีเฉพาะข้อมูลที่มีลายเซ็นที่กำหนดเท่านั้น ลายเซ็นที่ใช้ได้คือ:

  • AiVision.ALL_AIOBJS - ตรวจจับบล็อกสีแดงและสีน้ำเงิน

def main():
    # If an object is detected, pick it up
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            intake_motor.spin(FORWARD)
            drivetrain.drive(FORWARD)
            while not bumper.pressing():
                wait(2, MSEC)
            drivetrain.stop()
            break

# VR threads — Do not delete
vr_thread(main)

คุณสมบัติ#

มีคุณสมบัติเจ็ดประการที่รวมอยู่ในแต่ละวัตถุที่จัดเก็บในทูเปิลหลังจากใช้ take_snapshot

ค่าคุณสมบัติทั้งหมด ยกเว้น .id อธิบายตำแหน่งและขนาดของวัตถุที่ตรวจพบในมุมมองของเซ็นเซอร์ AI Vision ในขณะที่ take_snapshot ถูกใช้งาน ค่าเหล่านี้วัดเป็นพิกเซล โดยอิงจากความละเอียด 320 x 240 พิกเซลของเซ็นเซอร์

.ความกว้าง#

.width ส่งคืนความกว้างของวัตถุที่ตรวจพบในหน่วยพิกเซล ซึ่งเป็นจำนวนเต็มระหว่าง 1 ถึง 320

def main():
    # If an object is detected, approach and pick it up
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].width > 65:
                drivetrain.stop()
                break
            else:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

.ความสูง#

.height จะส่งคืนค่าความสูงของวัตถุที่ตรวจพบในหน่วยพิกเซล ซึ่งเป็นจำนวนเต็มระหว่าง 1 ถึง 240

def main():
    # If an object is detected, approach and pick it up
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].height > 55:
                drivetrain.stop()
                break
            else:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

.centerX#

.centerX ของวัตถุที่ตรวจพบในหน่วยพิกเซล ซึ่งเป็นจำนวนเต็มระหว่าง 0 ถึง 320

def main():
    # Pick up a Block from the top left group
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    drivetrain.turn_for(LEFT, 80, DEGREES)
    drivetrain.drive_for(FORWARD, 200, MM)
    drivetrain.set_turn_velocity(20, PERCENT)
    drivetrain.turn(LEFT)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if 140 < ai_objects[0].centerX < 180:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)
                while not bumper.pressing():
                    wait(2, MSEC)
                drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

.centerY#

.centerY ที่ตรวจพบในหน่วยพิกเซล ซึ่งเป็นจำนวนเต็มระหว่าง 0 ถึง 240

def main():
    # If an object is detected, approach and pick it up
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].centerY > 140:
                drivetrain.stop()
                break
            else:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

.originX#

.originX วัตถุที่ตรวจพบในหน่วยพิกเซล ซึ่งเป็นจำนวนเต็มระหว่าง 0 ถึง 320

def main():
    # Pick up a Block from the top left group
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    drivetrain.turn_for(LEFT, 80, DEGREES)
    drivetrain.drive_for(FORWARD, 300, MM)
    drivetrain.set_turn_velocity(20, PERCENT)
    drivetrain.turn(RIGHT)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if 100 < ai_objects[0].originX < 140:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)
                while not bumper.pressing():
                    wait(2, MSEC)
                drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

.originY#

.originY พบในหน่วยพิกเซล ซึ่งเป็นจำนวนเต็มระหว่าง 0 ถึง 240

def main():
    # If an object is detected, approach and pick it up
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            if ai_objects[0].originY > 120:
                drivetrain.stop()
                break
            else:
                intake_motor.spin(FORWARD)
                drivetrain.drive(FORWARD)

# VR threads — Do not delete
vr_thread(main)

.id#

.id ส่งคืน ID ของการจำแนกประเภท AI ที่ตรวจพบเป็นจำนวนเต็ม

การจำแนกประเภท AI

รหัส

ลายเซ็น

บลูบล็อก

1

GameElements.BLUE_BLOCK

เรดบล็อก

2

GameElements.RED_BLOCK

def main():
    # Pick up a Red Block from the top left group
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    drivetrain.turn_for(LEFT, 80, DEGREES)
    drivetrain.drive_for(FORWARD, 300, MM)
    while True:
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
        if ai_objects:
            drivetrain.drive(FORWARD)
            if (ai_objects[0].id) == 2:
                intake_motor.spin(FORWARD)
                while not bumper.pressing():
                    wait(2, MSEC)
                drivetrain.stop()
                break

# VR threads — Do not delete
vr_thread(main)

คอนโซล#

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

พิมพ์#

การพิมพ์หน้าจอสมอง#

brain.screen.print แสดงข้อความ ตัวเลข หรือค่าตัวแปรในคอนโซลโดยใช้ตำแหน่งเคอร์เซอร์ปัจจุบัน

ใช้ brain.screen.next_row เมื่อคุณต้องการให้ค่าที่พิมพ์ถัดไปเริ่มต้นในแถวใหม่

Usage:
brain.screen.print(value)

พารามิเตอร์

คำอธิบาย

value

ข้อความ ตัวเลข หรือค่าตัวแปรที่จะแสดงในคอนโซล

def main():
    # Display a message in the Console
    brain.screen.print("Hello, robot!")

# VR threads — Do not delete
vr_thread(main)

คอนโซล VEXcode แสดงคอนโซลและข้อความ "สวัสดีหุ่นยนต์!"

สมอง.หน้าจอ.แถวถัดไป#

brain.screen.next_row จะย้ายเคอร์เซอร์ไปยังคอลัมน์ที่ 1 ในแถวถัดไปในคอนโซล ค่าถัดไปที่พิมพ์จะปรากฏในแถวนั้น

Usage:
brain.screen.next_row()

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

def main():
    # Print on two rows
    brain.screen.print("Row 1")
    brain.screen.next_row()
    brain.screen.print("Row 2")

# VR threads — Do not delete
vr_thread(main)

คอนโซล VEXcode แสดงคอนโซลและข้อความ "แถวที่ 1" ที่แสดงบนบรรทัดแรกและ "แถวที่ 2" บนบรรทัดที่สอง

สมอง.หน้าจอ.เคลียร์หน้าจอ#

brain.screen.clear_screen จะล้างแถวทั้งหมดออกจากคอนโซลและย้ายเคอร์เซอร์กลับไปที่แถวที่ 1

Usage:
brain.screen.clear_screen()

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

def main():
    # Display text, then clear it after two seconds
    brain.screen.print("This will disappear...")
    wait(2, SECONDS)
    brain.screen.clear_screen()

# VR threads — Do not delete
vr_thread(main)

เฝ้าสังเกต#

ตัวแปรมอนิเตอร์#

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

ตัวแปรต้องเป็น monitor_variable เพื่อให้สามารถตรวจสอบตัวแปรเหล่านั้นได้อย่างสำเร็จ ระบุชื่อตัวแปรแต่ละตัวเป็นสตริง

Usage:
monitor_variable(“variable”)
monitor_variable(“variable1”, “variable2”)

พารามิเตอร์

คำอธิบาย

variable

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

def main():
    # Monitor the amount of loops
    global loops
    monitor_variable("loops")

    # Drive in a square 3 times
    for loops in range(12):
        drivetrain.turn_for(RIGHT, 90, DEGREES)
        drivetrain.drive_for(FORWARD, 150, MM)

# VR threads — Do not delete
vr_thread(main)

มอนิเตอร์เซนเซอร์#

monitor_sensor เพิ่มค่าเซ็นเซอร์อย่างน้อยหนึ่งค่าลงในแท็บ Monitor ใน VEXcode ซึ่งช่วยให้คุณสามารถดูการเปลี่ยนแปลงของค่าเซ็นเซอร์ขณะที่โปรเจ็กต์กำลังทำงานอยู่

ระบุค่าเซ็นเซอร์แต่ละค่าเป็นสตริง

Usage:
monitor_sensor(“sensor”)
monitor_sensor(“sensor1”, “sensor2”)

พารามิเตอร์

คำอธิบาย

sensor

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

  • สมอง
    • brain.timer.time
  • ระบบขับเคลื่อน
    • drivetrain.is_done
    • drivetrain.is_moving
    • drivetrain.heading
    • drivetrain.rotation
    • drivetrain.velocity
  • มอเตอร์
    • pusher_motor.is_done
    • pusher_motor.is_spinning
    • pusher_motor.position
    • pusher_motor.velocity
  • มอเตอร์แขน
    • arm_motor.is_done
    • arm_motor.is_spinning
    • arm_motor.position
    • arm_motor.velocity
  • เซ็นเซอร์วัดระยะด้านหน้า
    • front_distance.is_object_detected
    • front_distance.object_distance_mm
    • front_distance.object_distance_inches
  • เซ็นเซอร์วัดแสงด้านหน้า
    • front_optical.is_near_object
    • front_optical.color
    • front_optical.brightness
    • front_optical.hue
  • เซ็นเซอร์ GPS
    • gps.position_mm
    • gps.position_inches
    • gps.heading
  • การหมุนของตัวดัน
    • pusher_rotation.angle
    • pusher_rotation.position
  • เซ็นเซอร์ AI Vision
    • ai_vision.object_count
    • ai_vision.height
    • ai_vision.width
    • ai_vision.centerX
    • ai_vision.centerY
    • ai_vision.originX
    • ai_vision.originY
    • ai_vision.id

def main():
    # Monitor the robot's heading
    monitor_sensor("drivetrain.heading")
    drivetrain.turn_for(RIGHT, 450, DEGREES)

# VR threads — Do not delete
vr_thread(main)

การรับรู้#

ออปติคอล#

อยู่ใกล้วัตถุ#

is_near_object ส่งคืนค่าบูลีนที่ระบุว่าเซ็นเซอร์แสงตรวจพบวัตถุที่อยู่ในระยะหรือไม่

  • True – เซ็นเซอร์แสงตรวจจับวัตถุได้

  • False – เซ็นเซอร์แสงไม่ตรวจพบวัตถุ

Usage:
optical.is_near_object()

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

def main():
    # Move the preloaded Block to the top of the Conveyor
    conveyor_motor.spin(FORWARD)
    while not optical.is_near_object():
        wait(2, MSEC)
    conveyor_motor.stop()

# VR threads — Do not delete
vr_thread(main)

สี#

color ส่งคืนอินสแตนซ์ของคลาส Color โดยอิงตามค่าเฉดสีที่ตรวจพบ ซึ่งสามารถนำไปเปรียบเทียบกับออบเจ็กต์ Color ที่กำหนดไว้ล่วงหน้าเพื่อสร้างคำสั่งเงื่อนไขได้

สีที่เป็นไปได้ ได้แก่:

  • NONE

  • RED - ค่าเฉดสีระหว่าง 340° - 20°

  • GREEN - ค่าเฉดสีระหว่าง 80° - 140°

  • BLUE - ค่าเฉดสีระหว่าง 200° - 240°

  • YELLOW - ค่าเฉดสีระหว่าง 40° - 60°

  • ORANGE - ค่าเฉดสีระหว่าง 20° - 40°

  • PURPLE - ค่าเฉดสีระหว่าง 240° - 280°

  • CYAN - ค่าเฉดสีระหว่าง 140° - 200°

หมายเหตุ: เซ็นเซอร์แสงจะมองหาช่วงเฉดสีที่ตรงกับสีที่ระบุ สำหรับการตรวจจับช่วงเฉดสีที่เฉพาะเจาะจง โปรดดู hue

Usage:
optical.color()

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

def main():
    # Pick up and move a Blue Block to the top of the Conveyor
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 360, MM)
    conveyor_motor.spin(FORWARD)
    while not optical.color() == BLUE:
        wait(2, MSEC)
    conveyor_motor.stop()

# VR threads — Do not delete
vr_thread(main)

ความสว่าง#

ความสว่าง brightness ส่งคืนปริมาณแสงที่สะท้อนจากวัตถุเป็นทศนิยม (float) ซึ่งแสดงถึงเปอร์เซ็นต์

เปอร์เซ็นต์ที่สูงขึ้นหมายความว่ามีแสงสะท้อนกลับไปยังเซ็นเซอร์แสงมากขึ้น เปอร์เซ็นต์ที่ต่ำลงหมายความว่ามีแสงสะท้อนกลับน้อยลง

Usage:
optical.brightness()

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

def main():
    # Move the preloaded Block to the top of the Conveyor
    conveyor_motor.spin(FORWARD)
    while not 0 < optical.brightness():
        wait(2, MSEC)
    conveyor_motor.stop()

# VR threads — Do not delete
vr_thread(main)

เฉดสี#

hue ส่งคืนค่าเฉดสีของสีที่ตรวจพบเป็นค่าทศนิยม (float) ตั้งแต่ 0 ถึง 359

เฉดสี คือวิธีการอธิบายสีโดยใช้ตัวเลขรอบวงล้อสี

วงล้อสีวงกลมที่แสดงเฉดสีครบทุกเฉดพร้อมระบุค่าองศาไว้รอบขอบ โดยเพิ่มขึ้นทีละ 30 องศาจาก 0° ที่ด้านบนถึง 360°

Usage:
optical.hue()

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

def main():
    # Pick up and move a Blue Block to the top of the Conveyor
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive_for(FORWARD, 360, MM)
    conveyor_motor.spin(FORWARD)
    while not 220 < optical.hue() < 260:
        wait(2, MSEC)
    conveyor_motor.stop()

# VR threads — Do not delete
vr_thread(main)

ตรวจพบวัตถุ#

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

Usage:
optical.object_detected(callback, arg)

พารามิเตอร์

คำอธิบาย

callback

A previously defined function that executes when the Optical Sensor detects a new object.

arg

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

def ready_block():
  # Stop the conveyor when Block is at the Sensor
  conveyor_motor.stop()

def main():
  # Move the preloaded Block near the top of the Conveyor
  conveyor_motor.spin(FORWARD)
  optical.object_detected(ready_block)

# VR threads — Do not delete
vr_thread(main)

วัตถุหายไป#

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

Usage:
optical.object_lost(callback, arg)

พารามิเตอร์

คำอธิบาย

callback

A previously defined function that executes when the Optical Sensor loses a detected object.

arg

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

def ready_block():
  # Stop the conveyor when Block is at the top
  conveyor_motor.stop()

def main():
  # Move the preloaded Block to the top of the Conveyor
  conveyor_motor.spin(FORWARD)
  optical.object_lost(ready_block)

# VR threads — Do not delete
vr_thread(main)

จีเอส#

ตำแหน่ง x#

x_position จะส่งคืนค่าพิกัด x ปัจจุบันของเซ็นเซอร์ GPS (Game Positioning System™) ในสนาม

Usage:
gps.x_position(units)

พารามิเตอร์

คำอธิบาย

หน่วย

หน่วยของค่าชดเชย: INCHES หรือ MM

def main():
    # Pick up a second Block
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive(FORWARD)
    while not gps.x_position(MM) > -795:
        wait(2, MSEC)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

ตำแหน่ง y#

y_position จะส่งคืนค่าพิกัด y ปัจจุบันของเซ็นเซอร์ GPS (Game Positioning System™) ในสนาม

Usage:
gps.y_position(units)

พารามิเตอร์

คำอธิบาย

หน่วย

หน่วยของค่าชดเชย: INCHES หรือ MM

def main():
    # Pick up a second Block
    conveyor_motor.spin_for(FORWARD, 200, DEGREES)
    intake_motor.spin(FORWARD)
    drivetrain.drive(FORWARD)
    while not -450 > gps.y_position(MM):
        wait(2, MSEC)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

หัวข้อ#

คำสั่ง heading จะส่งคืนค่าทิศทางที่หุ่นยนต์กำลังหันหน้าไป โดยอิงจากค่าที่อ่านได้จากเซ็นเซอร์ GPS (Game Positioning System™) ตั้งแต่ 0 ถึง 359 องศา

Usage:
gps.heading()

พารามิเตอร์

คำอธิบาย

เมธอดนี้ไม่มีพารามิเตอร์

def main():
    # Score the preloaded Block into a Center Goal
    drivetrain.set_turn_velocity(30, PERCENT)
    drivetrain.turn(LEFT)
    while not 40 > gps.heading():
        wait(2, MSEC)
    drivetrain.drive_for(FORWARD, 1000, MM)
    drivetrain.turn(RIGHT)
    while not gps.heading() > 310:
        wait(2, MSEC)
    drivetrain.drive_for(REVERSE, 400, MM)
    conveyor_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)