บล็อกเฉพาะสำหรับหุ่นยนต์#

การแนะนำ#

หุ่นยนต์ฮีโร่ Flex ประกอบด้วยมอเตอร์สำหรับกรงเล็บ มอเตอร์สำหรับแขน เซ็นเซอร์ตรวจจับภาพด้วย AI เซ็นเซอร์วัดระยะทาง และเซ็นเซอร์ระบบระบุตำแหน่งในเกม (GPS)

บล็อก VEXcode VR มาตรฐานทั้งหมดสามารถใช้งานได้ใน V5 26-27 Override Playground

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

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

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

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

  • การกระทำ

    • รับข้อมูลวัตถุ – บันทึกข้อมูลสำหรับลายเซ็นเฉพาะ เช่น การจำแนกประเภท AI ที่ตรวจพบ

  • การตั้งค่า

    • set object item – เลือกวัตถุเฉพาะจากรายการ

  • ค่านิยม

    • วัตถุมีอยู่ – ส่งคืนว่าตรวจพบการจำแนกประเภทหรือไม่

    • object is – คืนค่าว่าตรวจพบการจำแนกประเภทหรือไม่

    • object is AprilTag – คืนค่าว่าวัตถุที่ตรวจพบเป็น AprilTag ที่ตรงกับ ID ที่ระบุหรือไม่

    • จำนวนวัตถุ – ส่งคืนจำนวนวัตถุที่ตรวจพบ

    • คุณสมบัติของวัตถุ – ส่งคืนรายละเอียดต่างๆ เช่น:

      • width & height – ขนาดของวัตถุ

      • centerX & centerY – พิกัดตำแหน่งศูนย์กลางในมุมมองของเซ็นเซอร์

      • originX & originY – พิกัดตำแหน่งมุมบนซ้ายในมุมมองของเซ็นเซอร์

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

  • ระยะทาง

  • GPS

    • ตำแหน่ง GPS – ส่งคืนตำแหน่ง X หรือ Y จากเซ็นเซอร์ GPS

    • ทิศทาง GPS – ส่งคืนทิศทางที่หุ่นยนต์กำลังหันหน้าไปในขณะนี้

ตัวอย่างในหน้านี้ใช้ตำแหน่งเริ่มต้น C จากรายการตรวจสอบก่อนการแข่งขันของ Playground

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

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

การกระทำ#

ขับ#

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

ขับ [ไปข้างหน้า v]

พารามิเตอร์

คำอธิบาย

ทิศทาง

ทิศทางการเคลื่อนที่ของหุ่นยนต์: ไปข้างหน้า หรือ ถอยหลัง

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Raise the Arm, drive to the Goal, release the Pin.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v]
รอ (0.5) วินาที
หยุดขับ
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

ขับเพื่อ#

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

ขับ [ไปข้างหน้า v] เป็น (200) [มม. v] ▶

พารามิเตอร์

คำอธิบาย

ทิศทาง

ทิศทางการเคลื่อนที่ของหุ่นยนต์: ไปข้างหน้า หรือ ถอยหลัง

ระยะทาง

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

หน่วย

หน่วยวัดระยะทาง: มม. (มิลลิเมตร) หรือ นิ้ว

และอย่ารอช้า

เลือกไอคอนลูกศร ( ▶ ) เพื่อขยายบล็อกให้แสดงข้อความว่า และไม่ต้องรอ เพื่อให้บล็อกถัดไปในลำดับทำงานทันที

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Raise the Arm, drive to the Goal, release the Pin.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (10) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

เปลี่ยน#

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

เลี้ยว [ขวา v]

พารามิเตอร์

คำอธิบาย

ทิศทาง

ทิศทางที่หุ่นยนต์หมุน: ซ้าย หรือ ขวา

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Score a Pin in a Neutral Goal.]
เลี้ยว [ซ้าย v]
รอ (0.78) วินาที
หยุดขับ
หมุน [ArmMotor v] [ขึ้น v] เป็น (800) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (25) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

เลี้ยวเพื่อ#

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

เลี้ยว [ขวา v] เป็น (90) องศา ▶

พารามิเตอร์

คำอธิบาย

ทิศทาง

ทิศทางที่หุ่นยนต์หมุน: ซ้าย หรือ ขวา

มุม

จำนวนองศาที่หุ่นยนต์หมุน ค่านี้อาจเป็นจำนวนเต็มหรือทศนิยมก็ได้

และอย่ารอช้า

เลือกไอคอนลูกศร ( ▶ ) เพื่อขยายบล็อกให้แสดงข้อความว่า และไม่ต้องรอ เพื่อให้บล็อกถัดไปในลำดับทำงานทันที

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Score a Pin in a Neutral Goal.]
เลี้ยว [ซ้าย v] เป็น (110) องศา ▶
หมุน [ArmMotor v] [ขึ้น v] เป็น (800) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (25) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

หันไปที่หัวข้อ#

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

ทิศทางเริ่มต้นคือ 0 องศา

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

เลี้ยวไปทิศทาง (90) องศา ▶

พารามิเตอร์

คำอธิบาย

หัวข้อ

ทิศทางที่หุ่นยนต์ควรหันไปคือ ตั้งแต่ -359 ถึง 359 องศา

และอย่ารอช้า

เลือกไอคอนลูกศร ( ▶ ) เพื่อขยายบล็อกให้แสดงข้อความว่า และไม่ต้องรอ เพื่อให้บล็อกถัดไปในลำดับทำงานทันที

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Score a Pin in a Neutral Goal.]
เลี้ยวไปทิศทาง (-110) องศา ▶
หมุน [ArmMotor v] [ขึ้น v] เป็น (800) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (25) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

หมุนเพื่อหมุน#

บล็อก หมุน จะหมุนหุ่นยนต์ให้ไปในทิศทางการหมุนที่กำหนดไว้

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

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

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

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

เลี้ยวไปการหมุน (90) องศา ▶

พารามิเตอร์

คำอธิบาย

การหมุน

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

และอย่ารอช้า

เลือกไอคอนลูกศร ( ▶ ) เพื่อขยายบล็อกให้แสดงข้อความว่า และไม่ต้องรอ เพื่อให้บล็อกถัดไปในลำดับทำงานทันที

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Score a Pin in a Neutral Goal.]
เลี้ยวไปการหมุน (-110) องศา ▶
หมุน [ArmMotor v] [ขึ้น v] เป็น (800) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (25) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

หยุดขับรถ#

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

หยุดขับ

พารามิเตอร์

คำอธิบาย

บล็อกนี้ไม่มีพารามิเตอร์

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Score a Pin in a Neutral Goal.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v]
รอ (0.5) วินาที
หยุดขับ
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

การตั้งค่า#

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

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

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

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

ตั้งความเร็วขับเป็น (50) [% v]

พารามิเตอร์

คำอธิบาย

ความเร็ว

ความเร็วในการขับขี่สามารถปรับได้ตั้งแต่ 0% ถึง 100%

หน่วย

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

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Score a Pin in a Neutral Goal.]
เลี้ยว [ซ้าย v] เป็น (110) องศา ▶
หมุน [ArmMotor v] [ขึ้น v] เป็น (800) [องศา v] ▶
ตั้งความเร็วขับเป็น (100) [% v]
ขับ [ไปข้างหน้า v] เป็น (25) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

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

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

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

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

ตั้งความเร็วเลี้ยวเป็น (50) [% v]

พารามิเตอร์

คำอธิบาย

ความเร็ว

ความเร็วในการหมุนตั้งแต่ 0% ถึง 100%

หน่วย

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

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Turn to face the Neutral Goal faster.]
ตั้งความเร็วเลี้ยวเป็น (100) [% v]
เลี้ยว [ซ้าย v] เป็น (110) องศา ▶

ตั้งทิศทางการขับเคลื่อน#

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

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

ตั้งทิศทางขับเป็น (0) องศา

พารามิเตอร์

คำอธิบาย

หัวข้อ

ค่าทิศทาง (หน่วยเป็นองศา) ที่จะตั้งค่าให้กับหุ่นยนต์

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Make facing the Neutral Goal the new heading.]
ตั้งทิศทางขับเป็น (110) องศา
เลี้ยวไปทิศทาง (0) องศา ▶

ตั้งค่าการหมุนของไดรฟ์#

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

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

ตั้งการหมุนขับเป็น (0) องศา

พารามิเตอร์

คำอธิบาย

การหมุน

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

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Make facing the Neutral Goal the new rotation.]
ตั้งการหมุนขับเป็น (110) องศา
เลี้ยวไปการหมุน (0) องศา ▶

ตั้งค่าหมดเวลาไดรฟ์#

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

ตั้งหมดเวลาขับเป็น (1) วินาที

พารามิเตอร์

คำอธิบาย

เวลา

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

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Turn to face the Neutral Goal.]
ตั้งหมดเวลาขับเป็น (0.8) วินาที
เลี้ยว [ซ้าย v] เป็น (180) องศา ▶

ค่านิยม#

การขับรถเสร็จสิ้นแล้ว#

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

  • จริง — หุ่นยนต์เคลื่อนไหวเสร็จแล้ว

  • ไม่จริง — หุ่นยนต์ยังคงเคลื่อนที่อยู่

บล็อกนี้ทำงานร่วมกับบล็อกระบบขับเคลื่อนที่มีพารามิเตอร์ และอย่ารอ

<ขับเสร็จแล้ว?>

พารามิเตอร์

คำอธิบาย

บล็อกนี้ไม่มีพารามิเตอร์

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Score a Pin in a Neutral Goal.]
เลี้ยว [ซ้าย v] เป็น (110) องศา ▶
หมุน [ArmMotor v] [ขึ้น v] เป็น (800) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (25) [นิ้ว v] ◀ และไม่รอ
รอจนกว่า <ขับเสร็จแล้ว?>
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

ไดรฟ์กำลังเคลื่อนที่#

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

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

  • เท็จ — หุ่นยนต์ไม่ได้เคลื่อนที่

บล็อกนี้ทำงานร่วมกับบล็อกระบบขับเคลื่อนที่มีพารามิเตอร์ และอย่ารอ

<กำลังขับอยู่?>

พารามิเตอร์

คำอธิบาย

บล็อกนี้ไม่มีพารามิเตอร์

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Raise the Arm once stopped near the Goal.]
เลี้ยว [ซ้าย v] เป็น (110) องศา ▶
ขับ [ไปข้างหน้า v] เป็น (25) [นิ้ว v] ◀ และไม่รอ
ในขณะที่ <กำลังขับอยู่?>
รอ (0.005) วินาที
fine
หมุน [ArmMotor v] [ขึ้น v] เป็น (800) [องศา v] ▶

ทิศทางการขับขี่#

ทิศทางการเคลื่อนที่ของหุ่นยนต์นั้นวัดเป็นองศา บล็อกรายงานทิศทางการเคลื่อนที่ (Drive Heading Reporter Block) จะรายงานทิศทางการเคลื่อนที่ตั้งแต่ 0 ถึง 359.99 องศา

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

(ทิศทางขับในองศา)

พารามิเตอร์

คำอธิบาย

บล็อกนี้ไม่มีพารามิเตอร์

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Turn to the Goal, then show heading.]
เลี้ยว [ขวา v] เป็น (450) องศา ▶
พิมพ์ (ทิศทางขับในองศา) บนหน้าจอ ◀ และตั้งเคอร์เซอร์ไปแถวถัดไป

การหมุนของไดรฟ์#

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

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

(การหมุนขับในองศา)

พารามิเตอร์

คำอธิบาย

บล็อกนี้ไม่มีพารามิเตอร์

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Spin to find a Pin, then show rotation.]
เลี้ยว [ขวา v] เป็น (450) องศา ▶
พิมพ์ (การหมุนขับในองศา) บนหน้าจอ ◀ และตั้งเคอร์เซอร์ไปแถวถัดไป

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

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

(ความเร็วขับใน [% v])

พารามิเตอร์

คำอธิบาย

หน่วย

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

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Show speed while driving to the Goal.]
ขับ [ไปข้างหน้า v] เป็น (150) [มม. v] ▶
พิมพ์ (ความเร็วขับใน [% v]) บนหน้าจอ ◀ และตั้งเคอร์เซอร์ไปแถวถัดไป

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

Flex ใช้มอเตอร์แขน (ArmMotor) ในการยกและลดระดับแขน และใช้มอเตอร์กรงเล็บ (ClawMotor) ในการเปิดและปิดกรงเล็บ

มอเตอร์แต่ละตัวมีตัวเลือกทิศทางการเคลื่อนที่ของตัวเอง ชื่อทิศทางจะอธิบายว่ามอเตอร์นั้นเคลื่อนที่อย่างไรบน Flex

การกระทำ#

มอเตอร์หมุน#

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

หมุน [ArmMotor v] [ขึ้น v]

พารามิเตอร์

คำอธิบาย

มอเตอร์

มอเตอร์ที่ใช้หมุน: มอเตอร์แขน หรือ มอเตอร์กรงเล็บ

ทิศทาง

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

  • มอเตอร์แขน — ขึ้น หรือ ลง
  • มอเตอร์กรงเล็บ — เปิด หรือ ปิด

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm before driving toward a Pin.]
หมุน [ArmMotor v] [ขึ้น v]
รอ (1) วินาที
หยุด [ArmMotor v]

มอเตอร์หมุนสำหรับ#

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

หมุน [ArmMotor v] [ขึ้น v] เป็น (90) [องศา v] ▶

พารามิเตอร์

คำอธิบาย

มอเตอร์

มอเตอร์ที่ใช้หมุน: มอเตอร์แขน หรือ มอเตอร์กรงเล็บ

ทิศทาง

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

  • มอเตอร์แขน — ขึ้น หรือ ลง
  • มอเตอร์กรงเล็บ — เปิด หรือ ปิด

ระยะทาง

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

หน่วย

หน่วยวัดระยะทาง: องศา หรือ รอบ

และอย่ารอช้า

เลือกไอคอนลูกศร ( ▶ ) เพื่อขยายบล็อกให้แสดงข้อความว่า และไม่ต้องรอ เพื่อให้บล็อกถัดไปในลำดับทำงานทันที

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm to carry the Pin to the Goal.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (800) [องศา v] ▶

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

บล็อก หมุนมอเตอร์ไปยังตำแหน่งที่กำหนด จะหมุนมอเตอร์ไปยังตำแหน่งที่ระบุ

ตำแหน่งของมอเตอร์คือระยะการหมุน ซึ่งวัดเป็น องศา หรือ รอบ หนึ่ง รอบ เท่ากับ 360 องศา ในตอนเริ่มต้นโปรเจ็กต์ ตำแหน่งของ ArmMotor จะถูกตั้งค่าเป็น 0 องศา ยกเว้น ClawMotor ซึ่งเริ่มต้นที่ 467 องศา (ปิดสนิท) สามารถตั้งค่าตำแหน่งมอเตอร์ได้โดยใช้บล็อก set motor position

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

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

หมุน [ArmMotor v] ไปตำแหน่ง (90) [องศา v] ▶

พารามิเตอร์

คำอธิบาย

มอเตอร์

มอเตอร์ที่ใช้หมุน: มอเตอร์แขน หรือ มอเตอร์กรงเล็บ

ตำแหน่ง

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

หน่วย

หน่วยวัดตำแหน่ง: องศา หรือ รอบ

และอย่ารอช้า

เลือกไอคอนลูกศร ( ▶ ) เพื่อขยายบล็อกให้แสดงข้อความว่า และไม่ต้องรอ เพื่อให้บล็อกถัดไปในลำดับทำงานทันที

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm, then release the Pin.]
หมุน [ArmMotor v] ไปตำแหน่ง (800) [องศา v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

หยุดมอเตอร์#

บล็อกตัวหยุดมอเตอร์จะหยุดมอเตอร์ที่เลือกไว้

หยุด [ArmMotor v]

พารามิเตอร์

คำอธิบาย

มอเตอร์

มอเตอร์ที่ต้องการหยุด: มอเตอร์แขน หรือ มอเตอร์กรงเล็บ

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm partway to hold the Pin.]
หมุน [ArmMotor v] [ขึ้น v]
รอ (1) วินาที
หยุด [ArmMotor v]

การตั้งค่า#

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

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

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

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

ตั้งความเร็ว [ArmMotor v] เป็น [50] [% v]

พารามิเตอร์

คำอธิบาย

มอเตอร์

มอเตอร์สำหรับกำหนดความเร็วของ: มอเตอร์แขน หรือ มอเตอร์กรงเล็บ

ความเร็ว

ความเร็วรอบของมอเตอร์ เปอร์เซ็นต์ ใช้ตัวเลขจำนวนเต็มตั้งแต่ 0% ถึง 100%

หน่วย

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

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm fast to release the Pin.]
ตั้งความเร็ว [ArmMotor v] เป็น [100] [% v]
หมุน [ArmMotor v] [ขึ้น v] เป็น (800) [องศา v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

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

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

ตั้งหมดเวลา [ArmMotor v] เป็น [1] วินาที

พารามิเตอร์

คำอธิบาย

มอเตอร์

มอเตอร์สำหรับตั้งค่าหมดเวลา: มอเตอร์แขน หรือ มอเตอร์กรงเล็บ

เวลา

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

ตัวอย่าง

เมื่อเริ่มต้น
[Score a Pin in a Neutral Goal.]
เลี้ยว [ซ้าย v] เป็น (110) องศา ▶
ตั้งหมดเวลา [ArmMotor v] เป็น [1] วินาที
หมุน [ArmMotor v] [ขึ้น v] เป็น (1800) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (25) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

ตำแหน่ง#

ตำแหน่งมอเตอร์#

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

ในตอนเริ่มต้นโครงการ ตำแหน่งของมอเตอร์แขน (ArmMotor) จะถูกตั้งไว้ที่ 0 องศา ยกเว้นมอเตอร์กรงเล็บ (ClawMotor) ซึ่งจะเริ่มต้นที่ 467 องศา (ปิดสนิท) หากมอเตอร์หมุนไปข้างหน้าหนึ่งรอบเต็ม ตำแหน่งจะเพิ่มขึ้น หากมอเตอร์หมุนไปในทิศทางตรงกันข้าม ตำแหน่งจะลดลง

(ตำแหน่ง [ArmMotor v] ใน [องศา v])

พารามิเตอร์

คำอธิบาย

มอเตอร์

มอเตอร์สำหรับรายงานตำแหน่ง: มอเตอร์แขน หรือ มอเตอร์กรงเล็บ

หน่วย

หน่วยที่ใช้รายงานตำแหน่งมอเตอร์เป็น: องศา หรือ รอบ

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm, then release the Pin.]
ในขณะที่ <(ตำแหน่ง [ArmMotor v] ใน [องศา v]) < (800)>
หมุน [ArmMotor v] [ขึ้น v]
รอ (0.002) วินาที
fine
หยุด [ArmMotor v]
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

ตั้งตำแหน่งมอเตอร์#

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

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

ตั้งตำแหน่ง [ArmMotor v] เป็น (0) [องศา v]

พารามิเตอร์

คำอธิบาย

มอเตอร์

มอเตอร์สำหรับกำหนดตำแหน่งของ: มอเตอร์แขน หรือ มอเตอร์กรงเล็บ

ตำแหน่ง

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

หน่วย

หน่วยวัดตำแหน่ง: องศา หรือ รอบ

ตัวอย่าง

เมื่อเริ่มต้น
[Reset encoder, raise Arm, place Pin.]
ตั้งตำแหน่ง [ArmMotor v] เป็น (0) [องศา v]
หมุน [ArmMotor v] ไปตำแหน่ง (800) [องศา v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

ค่านิยม#

มอเตอร์ทำงานเสร็จแล้ว#

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

  • จริง — มอเตอร์หยุดทำงานแล้ว

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

บล็อกนี้ทำงานร่วมกับบล็อกการเคลื่อนไหวต่อไปนี้ที่มีพารามิเตอร์ และไม่ต้องรอ: หมุนมอเตอร์เป็นเวลา และ หมุนมอเตอร์ไปยังตำแหน่ง

<[ArmMotor v] เสร็จแล้ว?>

พารามิเตอร์

คำอธิบาย

มอเตอร์

มอเตอร์ที่ใช้แจ้งว่าการเคลื่อนไหวเสร็จสิ้นแล้วหรือไม่: มอเตอร์แขน หรือ มอเตอร์กรงเล็บ

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm while driving to the Goal.]
หมุน [ArmMotor v] ไปตำแหน่ง (800) [องศา v] ◀ และไม่รอ
รอ (0.1) วินาที
ในขณะที่ <ไม่ <[ArmMotor v] เสร็จแล้ว?>>
ขับ [ไปข้างหน้า v]
รอ (0.005) วินาที
fine
หยุดขับ

มอเตอร์กำลังหมุน#

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

  • จริง — มอเตอร์กำลังหมุนอยู่

  • เท็จ — มอเตอร์ไม่หมุน

บล็อกนี้ทำงานร่วมกับบล็อกการเคลื่อนไหวต่อไปนี้ที่มีพารามิเตอร์ และไม่ต้องรอ: หมุนมอเตอร์เป็นเวลา และ หมุนมอเตอร์ไปยังตำแหน่ง

<[ArmMotor v] กำลังหมุน?>

พารามิเตอร์

คำอธิบาย

มอเตอร์

มอเตอร์ที่ใช้รายงานว่ากำลังหมุนอยู่หรือไม่: มอเตอร์แขน หรือ มอเตอร์กรงเล็บ

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm while driving to the Goal, then release the Pin.]
หมุน [ArmMotor v] ไปตำแหน่ง (800) [องศา v] ◀ และไม่รอ
รอ (0.1) วินาที
ในขณะที่ <[ArmMotor v] กำลังหมุน?>
ขับ [ไปข้างหน้า v] เป็น (20) [มม. v] ▶
fine
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

ความเร็วของมอเตอร์#

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

(ความเร็ว [ArmMotor v] ใน [% v] :: custom-motion)

พารามิเตอร์

คำอธิบาย

มอเตอร์

มอเตอร์ที่ใช้รายงานความเร็ว ได้แก่ มอเตอร์แขน หรือ มอเตอร์กรงเล็บ

หน่วย

หน่วยที่ใช้รายงานความเร็วของมอเตอร์: %

ตัวอย่าง

เมื่อเริ่มต้น
[Show Arm Motor velocity while raising.]
ตั้งความเร็ว [ArmMotor v] เป็น [100] [% v]
หมุน [ArmMotor v] ไปตำแหน่ง (800) [องศา v] ◀ และไม่รอ
รอ (0.2) วินาที
พิมพ์ (ความเร็ว [ArmMotor v] ใน [% v] :: custom-motion) บนหน้าจอ ◀ และตั้งเคอร์เซอร์ไปแถวถัดไป

AI Vision#

การกระทำ#

รับข้อมูลวัตถุ#

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

ชุดข้อมูลจะจัดเก็บวัตถุที่เรียงลำดับจากขนาดใหญ่ที่สุดไปเล็กที่สุดตามความกว้าง โดยเริ่มต้นที่ดัชนี 0 คุณสมบัติของวัตถุแต่ละชิ้นสามารถเข้าถึงได้โดยใช้บล็อก AI Vision object property หากไม่พบวัตถุที่ตรงกัน จะส่งคืนชุดข้อมูลว่างเปล่า

บล็อกสแต็ก Get object data#
รับข้อมูล [การจำแนก AI v] จาก [AIVision v]

พารามิเตอร์

คำอธิบาย

ลายเซ็น

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

  • การจำแนกประเภท AI - ตรวจจับองค์ประกอบเกม RedBluePin, BlueYellowPin, RedYellowPin, YellowPin และ Cup
  • AprilTags - ตรวจจับรหัส AprilTag ที่พบในสนาม

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm, drive to the Goal, release the Pin.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (10) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶
เลี้ยว [ซ้าย v] เป็น (70) องศา ▶
[Turn to face the Pin.]
ตั้งความเร็วเลี้ยวเป็น (30) [% v]
ทำตลอดไป
รับข้อมูล [การจำแนก AI v] จาก [AIVision v]
ถ้า <[AIVision v] พบวัตถุ?> แล้ว
if <(วัตถุ [AIVision v] [centerX v]) < (140)> then
เลี้ยว [ซ้าย v]
else if <([AIVision v] object [centerX v]) > (180)> then
เลี้ยว [ขวา v]
มิฉะนั้น
หยุดขับ
หยุด
fine
fine
fine

การตั้งค่า#

ตั้งค่าวัตถุรายการ#

บล็อก set object item ใช้สำหรับกำหนดว่าควรใช้รายการใดในชุดข้อมูล

บล็อกสแต็กรายการวัตถุ Set AI Vision#
ตั้งรายการวัตถุ [AIVision v] เป็น [1]

พารามิเตอร์

คำอธิบาย

รายการ

หมายเลขของรายการในชุดข้อมูลที่จะใช้

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm, drive to the Goal, release the Pin.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (10) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶
เลี้ยว [ซ้าย v] เป็น (70) องศา ▶
รับข้อมูล [การจำแนก AI v] จาก [AIVision v]
[Check if any AI Classifications were detected in the last snapshot.]
ถ้า <[AIVision v] พบวัตถุ?> แล้ว
[If any AI Classification is detected, check if any of them are a specific game element.]
ถ้า <วัตถุ [AIVision v] เป็น [RedBluePin v]?> แล้ว
พิมพ์ [RedBluePin detected.] ▶
มิฉะนั้น
พิมพ์ [No RedBluePin detected.] ▶
fine
fine

ค่านิยม#

วัตถุมีอยู่จริง#

บล็อก object exists จะส่งคืนค่าบูลีนที่ระบุว่าตรวจพบวัตถุใด ๆ ในชุดข้อมูลหรือไม่

  • จริง – ชุดข้อมูลประกอบด้วยวัตถุที่ตรวจพบ

  • เท็จ – ชุดข้อมูลนี้ไม่มีวัตถุใดๆ ที่ตรวจพบ

วัตถุ AI Vision มีอยู่ในบล็อก Boolean#
<[AIVision v] พบวัตถุ?>

พารามิเตอร์

คำอธิบาย

บล็อกนี้ไม่มีพารามิเตอร์

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm, drive to the Goal, release the Pin.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (10) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶
เลี้ยว [ซ้าย v] เป็น (70) องศา ▶
รับข้อมูล [การจำแนก AI v] จาก [AIVision v]
[Check if any AI Classifications were detected in the last snapshot.]
ถ้า <[AIVision v] พบวัตถุ?> แล้ว
พิมพ์ (จำนวนวัตถุ [AIVision v]) ◀ และตั้งเคอร์เซอร์ไปแถวถัดไป
fine

วัตถุคือ#

บล็อก object is จะส่งคืนค่าบูลีนที่ระบุว่าวัตถุที่ตรวจพบตรงกับการจำแนกประเภทที่ระบุหรือไม่

  • ถูกต้อง – รายการในชุดข้อมูลคือวัตถุเฉพาะนั้น

  • เท็จ – รายการในชุดข้อมูลไม่ใช่วัตถุเฉพาะนั้น

อ็อบเจ็กต์ AI Vision เป็นบล็อกบูลีน#
<วัตถุ [AIVision v] เป็น [RedBluePin v]?>

พารามิเตอร์

คำอธิบาย

วัตถุ

ควรเปรียบเทียบสิ่งของนี้กับวัตถุใด:

  • เข็มสีแดงน้ำเงิน
  • เข็มสีน้ำเงินเหลือง
  • เข็มสีแดงเหลือง
  • เข็มสีเหลือง
  • ถ้วย

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm, drive to the Goal, release the Pin.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (10) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶
เลี้ยว [ซ้าย v] เป็น (70) องศา ▶
รับข้อมูล [การจำแนก AI v] จาก [AIVision v]
ถ้า <[AIVision v] พบวัตถุ?> แล้ว
ถ้า <วัตถุ [AIVision v] เป็น [RedBluePin v]?> แล้ว
พิมพ์ [RedBluePin detected.] ▶
มิฉะนั้น
พิมพ์ [No RedBluePin detected.] ▶
fine
fine

วัตถุคือ AprilTag#

บล็อก object is AprilTag จะส่งคืนค่าบูลีนที่ระบุว่าวัตถุที่ตรวจพบนั้นเป็น AprilTag ที่ตรงกับ ID ที่ระบุหรือไม่

  • ถูกต้อง – วัตถุที่ตรวจพบคือ AprilTag ที่มี ID ที่ระบุไว้

  • เท็จ – วัตถุที่ตรวจพบไม่ใช่ AprilTag ที่มี ID ที่กำหนด

วัตถุนี้คือบล็อกบูลีน AprilTag#
<วัตถุ [AIVision v] เป็น AprilTag [0]?>

พารามิเตอร์

คำอธิบาย

รหัสแท็กเดือนเมษายน

หมายเลขประจำตัวที่จะใช้เปรียบเทียบกับ AprilTag ที่ตรวจพบ

ตัวอย่าง

เมื่อเริ่มต้น
[Report if AprilTag 3 is detected.]
รับข้อมูล [AprilTags v] จาก [AIVision v]
ถ้า <[AIVision v] พบวัตถุ?> แล้ว
ถ้า <วัตถุ [AIVision v] เป็น AprilTag [3]?> แล้ว
พิมพ์ [That is 3!] ▶
มิฉะนั้น
พิมพ์ [That isn't 3!] ▶
fine
fine

จำนวนวัตถุ#

บล็อก นับวัตถุ จะส่งคืนจำนวนวัตถุที่ตรวจพบในชุดข้อมูลเป็นจำนวนเต็ม

บล็อกสแต็กรายการวัตถุ Set AI Vision#
(จำนวนวัตถุ [AIVision])

พารามิเตอร์

คำอธิบาย

บล็อกนี้ไม่มีพารามิเตอร์

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm, drive to the Goal, release the Pin.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (10) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶
เลี้ยว [ซ้าย v] เป็น (70) องศา ▶
รับข้อมูล [การจำแนก AI v] จาก [AIVision v]
ถ้า <[AIVision v] พบวัตถุ?> แล้ว
พิมพ์ (จำนวนวัตถุ [AIVision v]) ◀ และตั้งเคอร์เซอร์ไปแถวถัดไป
fine

คุณสมบัติของวัตถุ#

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

บล็อกรายงานคุณสมบัติวัตถุ AI Vision#
(วัตถุ [AIVision v] [ความกว้าง v])

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

พารามิเตอร์

คำอธิบาย

คุณสมบัติ

ควรใช้คุณสมบัติใดของวัตถุที่ตรวจพบ:

ความกว้าง#

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

บล็อกสแต็กคุณสมบัติของวัตถุ AI Vision โดยตั้งค่าพารามิเตอร์เป็นความกว้าง#
(วัตถุ [AIVision v] [ความกว้าง v])

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm, drive to the Goal, release the Pin.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (10) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶
เลี้ยว [ซ้าย v] เป็น (70) องศา ▶
[Approach the next Cup and Pin.]
ตั้งความเร็วขับเป็น (30) [% v]
ทำตลอดไป
รับข้อมูล [การจำแนก AI v] จาก [AIVision v]
ถ้า <[AIVision v] พบวัตถุ?> แล้ว
if <([AIVision v] object [width v]) > (140)> then
หยุดขับ
หยุด
มิฉะนั้น
ขับ [ไปข้างหน้า v]
fine
fine
fine
ความสูง#

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

บล็อกคุณสมบัติของวัตถุ AI Vision ที่มีพารามิเตอร์ตั้งค่าเป็นความสูง#
(วัตถุ [AIVision v] [ความสูง v])

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm, drive to the Goal, release the Pin.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (10) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶
เลี้ยว [ซ้าย v] เป็น (70) องศา ▶
[Approach the next Cup and Pin.]
ตั้งความเร็วขับเป็น (30) [% v]
ทำตลอดไป
รับข้อมูล [การจำแนก AI v] จาก [AIVision v]
ถ้า <[AIVision v] พบวัตถุ?> แล้ว
if <([AIVision v] object [height v]) > (200)> then
หยุดขับ
หยุด
มิฉะนั้น
ขับ [ไปข้างหน้า v]
fine
fine
fine
เซ็นเตอร์เอ็กซ์#

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

บล็อกสแต็กคุณสมบัติของวัตถุ AI Vision โดยตั้งค่าพารามิเตอร์เป็น centerX#
(วัตถุ [AIVision v] [centerX v])

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm, drive to the Goal, release the Pin.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (10) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶
เลี้ยว [ซ้าย v] เป็น (70) องศา ▶
[Turn and approach the next Cup and Pin.]
ตั้งความเร็วเลี้ยวเป็น (30) [% v]
ทำตลอดไป
รับข้อมูล [การจำแนก AI v] จาก [AIVision v]
ถ้า <[AIVision v] พบวัตถุ?> แล้ว
if <(วัตถุ [AIVision v] [centerX v]) < (140)> then
เลี้ยว [ซ้าย v] เป็น (5) องศา ▶
มิฉะนั้น
ขับ [ไปข้างหน้า v] เป็น (25) [นิ้ว v] ▶
หยุด
fine
fine
fine
เซ็นเตอร์วาย#

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

บล็อกสแต็กคุณสมบัติของวัตถุ AI Vision โดยตั้งค่าพารามิเตอร์เป็น centerY#
(วัตถุ [AIVision v] [centerY v])

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm, drive to the Goal, release the Pin.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (10) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶
เลี้ยว [ซ้าย v] เป็น (70) องศา ▶
[Approach the next Cup and Pin.]
ตั้งความเร็วขับเป็น (30) [% v]
ทำตลอดไป
รับข้อมูล [การจำแนก AI v] จาก [AIVision v]
ถ้า <[AIVision v] พบวัตถุ?> แล้ว
if <([AIVision v] object [centerY v]) > (230)> then
หยุดขับ
หยุด
มิฉะนั้น
ขับ [ไปข้างหน้า v]
fine
fine
fine
ออริจินเอ็กซ์#

คุณสมบัติ originX รายงานค่าพิกัด x ของมุมบนซ้ายของกรอบล้อมรอบวัตถุที่ตรวจพบในหน่วยพิกเซล โดยแสดงเป็นจำนวนเต็มตั้งแต่ 0 ถึง 320

บล็อกสแต็กคุณสมบัติของวัตถุ AI Vision โดยตั้งค่าพารามิเตอร์เป็น originX#
(วัตถุ [AIVision v] [originX v])

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm, drive to the Goal, release the Pin.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (10) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶
เลี้ยว [ซ้าย v] เป็น (70) องศา ▶
[Turn and approach the next Cup and Pin.]
ตั้งความเร็วเลี้ยวเป็น (30) [% v]
ทำตลอดไป
รับข้อมูล [การจำแนก AI v] จาก [AIVision v]
ถ้า <[AIVision v] พบวัตถุ?> แล้ว
if <(วัตถุ [AIVision v] [originX v]) < (100)> then
เลี้ยว [ซ้าย v] เป็น (5) องศา ▶
มิฉะนั้น
ขับ [ไปข้างหน้า v] เป็น (25) [นิ้ว v] ▶
หยุด
fine
fine
fine
ออริจินวาย#

คุณสมบัติ originY รายงานค่าพิกัด y ของมุมบนซ้ายของกรอบล้อมรอบวัตถุที่ตรวจพบในหน่วยพิกเซล โดยแสดงเป็นจำนวนเต็มตั้งแต่ 0 ถึง 240

บล็อกสแต็กคุณสมบัติของวัตถุ AI Vision โดยตั้งค่าพารามิเตอร์เป็น originY#
(วัตถุ [AIVision v] [originY v])

ตัวอย่าง

เมื่อเริ่มต้น
[Raise the Arm, drive to the Goal, release the Pin.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (10) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶
เลี้ยว [ซ้าย v] เป็น (70) องศา ▶
[Approach the next Cup and Pin.]
ตั้งความเร็วขับเป็น (30) [% v]
ทำตลอดไป
รับข้อมูล [การจำแนก AI v] จาก [AIVision v]
ถ้า <[AIVision v] พบวัตถุ?> แล้ว
if <([AIVision v] object [originY v]) > (140)> then
หยุดขับ
หยุด
มิฉะนั้น
ขับ [ไปข้างหน้า v]
fine
fine
fine

การรับรู้#

ระยะทาง#

ระยะทางพบวัตถุ#

บล็อก Boolean ระยะทางที่พบวัตถุ จะรายงานว่าเซ็นเซอร์ระยะทางตรวจพบวัตถุภายในระยะ 2000 มม. หรือไม่

  • จริง — เซ็นเซอร์วัดระยะทางตรวจจับวัตถุได้

  • เท็จ — เซ็นเซอร์วัดระยะทางไม่ตรวจจับวัตถุใดๆ

<[FrontDistance v] พบวัตถุ?>

พารามิเตอร์

คำอธิบาย

เซ็นเซอร์วัดระยะทาง

เซ็นเซอร์วัดระยะทางที่จะใช้ เลือกจากเซ็นเซอร์วัดระยะทางที่มีให้เลือกสำหรับ Flex

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Turn until something is detected, then release the Pin.]
เลี้ยว [ขวา v]
รอจนกว่า <[FrontDistance v] พบวัตถุ?>
หยุดขับ
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (10) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

ระยะห่างของวัตถุ#

บล็อกรายงานระยะห่างของวัตถุจะรายงานระยะห่างระหว่างเซ็นเซอร์วัดระยะทางกับวัตถุที่ตรวจพบใกล้ที่สุด

(ระยะ [FrontDistance v] ใน [มม. v])

พารามิเตอร์

คำอธิบาย

เซ็นเซอร์วัดระยะทาง

เซ็นเซอร์วัดระยะทางที่จะใช้ เลือกจากเซ็นเซอร์วัดระยะทางที่มีให้เลือกสำหรับ Flex

หน่วย

หน่วยวัดระยะทาง: มม. หรือ นิ้ว

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Drive until 200 mm from the Goal, then release the Pin.]
ขับ [ไปข้างหน้า v]
รอจนกว่า <(ระยะ [FrontDistance v] ใน [มม. v]) < (200)>
หยุดขับ
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (10) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

จีเอส#

ตำแหน่ง GPS#

บล็อก ตำแหน่ง GPS จะส่งคืนค่าชดเชยตำแหน่งของจุดอ้างอิงการหมุนของหุ่นยนต์จากจุดศูนย์กลางของสนามโดยใช้เซ็นเซอร์ GPS (Game Positioning System™)

(ตำแหน่ง [GPS v] [X v] ใน [มม. v])

พารามิเตอร์

คำอธิบาย

แกน

ควรรายงานแกนใด:

  • X
  • Y

หน่วย

หน่วยที่ใช้แสดงตำแหน่ง: มม. หรือ นิ้ว

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Raise the Arm, drive to the Goal, release the Pin.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v]
wait until <([GPS v] position [X v] in [mm v]) > (-1370)>
หยุดขับ
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶

ทิศทาง GPS#

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

(ทิศทาง [GPS v] ในองศา)

พารามิเตอร์

คำอธิบาย

บล็อกนี้ไม่มีพารามิเตอร์

ตัวอย่าง

เมื่อเริ่มต้น :: hat events
[Raise the Arm, drive to the Goal, release the Pin.]
หมุน [ArmMotor v] [ขึ้น v] เป็น (300) [องศา v] ▶
ขับ [ไปข้างหน้า v] เป็น (10) [นิ้ว v] ▶
หมุน [ClawMotor v] [เปิด v] เป็น (180) [องศา v] ▶
[Turn left to face the Neutral Goal.]
ตั้งความเร็วเลี้ยวเป็น (30) [% v]
เลี้ยว [ซ้าย v]
รอจนกว่า <(ทิศทาง [GPS v] ในองศา) < (18)>
หยุดขับ