Skip to main content

บทเรียนที่ 2: ขับรถไปยังหมายเลข '5'

ในบทเรียนนี้หุ่นยนต์ VR จะขับไปที่หมายเลข ‘5’ และกลับไปที่หมายเลข ‘1’ บน Number Grid Map Playground!

ภาพด้านบนของสนามเด็กเล่น Number Grid Map หุ่นยนต์ VR สามารถมองเห็นได้ที่มุมซ้ายล่างของหมายเลข 1 สัญลักษณ์สามารถมองเห็นได้ตรงกลางของแถวล่างบนหมายเลข 5

สังเกตว่าหุ่นยนต์ VR จะเคลื่อนที่ไปตามแกน X โดยมีค่า X เพิ่มขึ้นเพื่อย้ายไปยังหมายเลข ‘5’ บน Number Grid MapPlayground

สนามเด็กเล่นแผนที่ตารางตัวเลขที่มีแกน x วางอยู่ตรงกลางสนามเด็กเล่น ศูนย์กลางของแต่ละสี่เหลี่ยมถูกทำเครื่องหมายด้วยค่าแกน X เริ่มต้นด้วย -900 ทางด้านซ้ายและเพิ่มขึ้น 200 แต่ละสี่เหลี่ยมเป็น 900 ทางด้านขวา หุ่นยนต์ VR สามารถมองเห็นได้ที่หมายเลข 1 ที่มุมล่างซ้ายโดยมีลูกศรชี้ไปที่หมายเลข 5

หุ่นยนต์ VR จะขับไปยังตำแหน่งของหมายเลข ‘5’ บน Number Grid MapPlayground อย่างไรก็ตามก่อนที่หุ่นยนต์ VR จะไปยังหมายเลขนั้นได้หุ่นยนต์ VR จะต้องบอกตำแหน่งของหมายเลขนั้นว่าอยู่ที่ไหน เริ่มต้นที่ศูนย์กลางของสนามเด็กเล่นพิกัดของหมายเลข ‘5’ คือ (-100, -900)

มุมล่างซ้ายของสนามเด็กเล่นแผนที่ตารางตัวเลขจากเดิมที่มีแกน x และ y ซ้อนทับอยู่ ลูกศรถูกแสดงจากลบ 100 บนแกน x ไปยังหมายเลข 5 และลบ 900 บนแกน y ไปยังหมายเลข 5 หุ่นยนต์ VR ยังคงอยู่ในอันดับ 1 ที่มีพิกัดลบ 900 ลบ 900 ด้านล่างหุ่นยนต์

  • ในการเริ่มต้นหุ่นยนต์ VR จะต้องหันหน้าไปทางหมายเลข ‘5’ ลากเข้าหรือพิมพ์คำสั่ง turn_for
# เพิ่มรหัสโครงการใน "main"
def main (): drivetrain.turn_for
    (ขวา, 90, องศา)
  • ลากในลูป while ใต้คำสั่ง turn_for  โปรเจกต์ของคุณควรมีลักษณะดังนี้:
# เพิ่มรหัสโครงการใน "main"
def main (): drivetrain.turn_for
    (RIGHT, 90, DEGREES)

    while condition:
        wait (5, MSEC)
  • เช่นเดียวกับหน่วยเซ็นเซอร์ระยะทางโครงการนี้จะใช้เงื่อนไขของตำแหน่งเซ็นเซอร์ตำแหน่งพร้อมตัวดำเนินการเปรียบเทียบเพื่อนำทางไปยังสนามเด็กเล่น Number GridMap ตั้งค่าเงื่อนไขสำหรับลูป while ไปยังคำสั่ง ในแกน X น้อยกว่า -100 ในหน่วยมิลลิเมตร (มม.) โปรเจกต์ของคุณควรมีลักษณะดังนี้:
# เพิ่มรหัสโครงการใน "main"
def main (): drivetrain.turn_for
    (RIGHT, 90, DEGREES)

    while location.position (X, MM )-100 < :
        wait (5, MSEC)
  • ลากหรือพิมพ์คำสั่งที่ไม่รอ drive ภายในลูป while โปรเจกต์ของคุณควรมีลักษณะดังนี้:
# เพิ่มรหัสโครงการใน "main"
def main (): drivetrain.turn_for
    (RIGHT, 90, DEGREES)

    while location.position (X, MM )-100 < : drivetrain.drive
        (FORWARD)
        wait (5, MSEC)
  • โปรดทราบว่ามีการใช้ตัวดำเนินการน้อยกว่าแทนตัวดำเนินการมากกว่าเนื่องจากหุ่นยนต์ VR กำลังขับไปทางขวาจากด้านซ้ายของสนามเด็กเล่น หุ่นยนต์ VR เริ่มต้นที่ค่า X -900 มิลลิเมตร (มม.) เมื่อหุ่นยนต์ VR ขับเคลื่อนไปข้างหน้าค่า X จะเพิ่มขึ้นและหุ่นยนต์จะขับเคลื่อนไปข้างหน้าต่อไปในขณะที่ค่า X น้อยกว่า -100

มุมล่างซ้ายของสนามเด็กเล่นแผนที่ตารางตัวเลขจากเดิมที่มีแกน x และ y ซ้อนทับอยู่ ลูกศรถูกแสดงจากลบ 100 บนแกน x ไปยังหมายเลข 5 และลบ 900 บนแกน y ไปยังหมายเลข 5 หุ่นยนต์ VR ยังคงอยู่ในอันดับ 1 ที่มีพิกัดลบ 900 ลบ 900 ด้านล่างหุ่นยนต์

สำหรับข้อมูลของคุณ

คุณจะต้องเลือกตัวดำเนินการเปรียบเทียบที่จะใช้ในโครงการของคุณขึ้นอยู่กับทิศทางที่คุณต้องการให้หุ่นยนต์ VR เดินทางไปตามแกน X หรือ Y เมื่อหุ่นยนต์ VR เคลื่อนที่ไปทางค่าที่มากขึ้น ตัวดำเนินการน้อยกว่า (<) จะถูกใช้กับลูป ในขณะที่ และเมื่อหุ่นยนต์ VR เคลื่อนที่ไปทางค่าที่เล็กลง ตัวดำเนินการมากกว่า (>) จะถูกใช้กับลูป ในขณะที่

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

มุมมองจากบนลงล่างสองมุมของสนามเด็กเล่น Number grid map ในขั้นแรกหุ่นยนต์ VR จะแสดงในหมายเลข 51 โดยมีลูกศรชี้ว่าหุ่นยนต์จะเคลื่อนที่ไปทางขวาไปยังหมายเลข 60 ข้อความด้านบนเขียนว่า 'ไดรฟ์ขณะที่ตำแหน่งน้อยกว่า' ในประการที่สองหุ่นยนต์ VR จะแสดงบนหมายเลข 6 โดยมีลูกศรชี้ว่าหุ่นยนต์จะเคลื่อนที่ไปที่หมายเลข 96 ข้อความด้านบนเขียนว่า 'ไดรฟ์ขณะที่ตำแหน่งน้อยกว่า'

หากหุ่นยนต์ VR เคลื่อนที่จากขวาไปซ้ายหรือจากบนลงล่าง (ค่าน้อยกว่า) ผู้ปฏิบัติงานจะถูกใช้เพื่อขับเคลื่อนในขณะที่ตำแหน่ง มาก กว่าค่าเป้าหมาย

มุมมองจากบนลงล่างสองมุมของสนามเด็กเล่น Number grid map ในขั้นแรกหุ่นยนต์ VR จะแสดงในหมายเลข 60 โดยมีลูกศรชี้ว่าหุ่นยนต์จะเคลื่อนที่ไปทางซ้ายไปยังหมายเลข 51 ข้อความด้านบนเขียนว่า 'ไดรฟ์ขณะที่ตำแหน่งมากกว่า' ในประการที่สองหุ่นยนต์ VR จะแสดงบนหมายเลข 96 โดยมีลูกศรชี้ว่าหุ่นยนต์จะเคลื่อนที่ไปยังหมายเลข 6 ข้อความด้านบนเขียนว่า 'ไดรฟ์ขณะที่ตำแหน่งมากกว่า'

การใช้ตัวดำเนินการเปรียบเทียบหุ่นยนต์ VR จะเคลื่อนที่ในขณะที่ค่าที่รายงานโดยเซ็นเซอร์ตำแหน่งมากกว่า>() หรือน้อยกว่า<() ค่าเกณฑ์ ในตัวอย่างนี้หุ่นยนต์ VR จะนำทางไปยังบวก 500 มิลลิเมตร (มม.) บนแกน X หุ่นยนต์ VR จะขับเคลื่อนในขณะที่ ตำแหน่ง บนแกน X อยู่ที่ใดก็ได้ตั้งแต่ 0 ถึงบวก 499 เมื่อเซนเซอร์ตรวจจับตำแหน่งรายงานว่า ตำแหน่ง เป็น 501 หรือสูงกว่าหุ่นยนต์ VR จะหยุดการขับขี่ 

# เพิ่มรหัสโครงการใน "main"
def main ():
    monitor_sensor (location.position) drivetrain.turn_for
    (RIGHT, 90, DEGREES)

    while location.position (X, MM) < 500:
        drivetrain.drive (FORWARD)
        wait (5, msec
    ) drivetrain.stop ()

สังเกตว่าค่าที่รายงานโดยเซ็นเซอร์ตำแหน่งไม่ ใช่ 500 มิลลิเมตร (มม.) เช่นเดียวกับเซ็นเซอร์ระยะทางผู้ปฏิบัติงานเปรียบเทียบจะถูกใช้เนื่องจากใช้เวลานานกว่าที่หุ่นยนต์ VR จะทำซ้ำผ่านโครงการและรายงานค่า

  • ลากหรือพิมพ์คำสั่ง หยุด นอกลูป ขณะ โปรเจกต์ของคุณควรมีลักษณะดังนี้:
# เพิ่มรหัสโครงการใน "main"
def main (): drivetrain.turn_for
    (RIGHT, 90, DEGREES)

    while location.position (X, MM < )-100:
        drivetrain.drive (FORWARD)
        wait (5, msec
    ) drivetrain.stop ()
  • เปิดหน้าต่างสนามเด็กเล่น  หากยังไม่ได้เปิด ตรวจสอบให้แน่ใจว่า Number Grid Map Playground เปิดขึ้นและดำเนินโครงการ
  • ดู VR Robot ขับไปที่หมายเลข ‘5’ บน Number Grid MapPlayground

ภาพด้านบนของสนามเด็กเล่น Number Grid Map หุ่นยนต์ VR สามารถมองเห็นได้ที่ด้านล่างของหมายเลข 5

  • ในโครงการนี้หุ่นยนต์ VR จะขับไปที่หมายเลข ‘5’ บน Number Grid MapPlayground ในขณะที่ ลูปถูกใช้เพื่อให้หุ่นยนต์ VR ยังคงขับเคลื่อนไปข้างหน้าในขณะที่ ค่า X น้อย กว่าค่า X ของพิกัดที่ตัวเลขที่ระบุเปิดอยู่
  • เมื่อค่า X มากกว่า -100 โปรเจ็กต์จะย้ายไปยังคำสั่งถัดไปนอกลูป ซึ่งคือคำสั่ง หยุด เนื่องจากค่า X ของตัวเลข ‘5’ คือ -100 หุ่นยนต์ VR จะหยุดการขับขี่เมื่อค่า X มากกว่า -100

Flow ของโปรเจกต์ไพธอนที่เพิ่งทำงาน ลูกศรแสดงให้เห็นว่าหุ่นยนต์เคลื่อนที่ไปยังลูปขณะที่เมื่อเลี้ยวขวา 90 องศาเสร็จสมบูรณ์ ลูกศรแบบวนรอบอยู่ถัดจากลูปขณะที่มีข้อความที่เขียนว่า 'ค่า x น้อยกว่าค่าลบ 100 จะส่งกลับค่า True, VR Robot จะขับเคลื่อนไปข้างหน้า' ข้างใต้นั่นคือลูกศรสีแดงที่มีข้อความที่เขียนว่า 'x value greater than negative 100 จะได้ค่า False VR Robot หยุดขับ '

สำหรับข้อมูลของคุณ

โปรดสังเกตว่าค่าที่รายงานโดยเซ็นเซอร์ตำแหน่งอาจไม่ ตรง -100 มิลลิเมตร (มม.) เช่นเดียวกับเซ็นเซอร์ระยะทางผู้ปฏิบัติงานเปรียบเทียบจะถูกใช้เนื่องจากใช้เวลานานกว่าที่หุ่นยนต์ VR จะทำซ้ำผ่านโครงการและรายงานค่า

แดชบอร์ดในหน้าต่างสนามเด็กเล่นซูมเข้าเพื่อแสดงค่า x ที่รายงานของเซ็นเซอร์ตำแหน่งเป็นลบ 90 มิลลิเมตร

ใน VEXcode VR Python คุณสามารถใช้ตัวดำเนินการเปรียบเทียบมากกว่า หรือเท่ากับ >(=) หรือน้อยกว่า หรือเท่ากับ <(=) ในโครงการของคุณเพื่อให้มีความแม่นยำเพิ่มเติมในการเคลื่อนไหวของคุณ

# เพิ่มรหัสโครงการใน "main"
def main (): drivetrain.turn_for
    (RIGHT, 90, DEGREES)

    while location.position (X, MM) <= -100:
        drivetrain.drive (FORWARD)
        wait (5, msec
    ) drivetrain.stop ()

ขึ้นอยู่กับความเร็วของหุ่นยนต์ VR และความรวดเร็วในการวนซ้ำของโครงการผ่านลูป คุณอาจเห็นว่าหุ่นยนต์ VR สามารถหยุดได้ใกล้ค่าเกณฑ์มากขึ้นเมื่อเพิ่มหรือเท่ากับ (<= หรือ >=) เข้าไปในตัวดำเนินการ

เลือกปุ่ม ถัดไป เพื่อดำเนินการกับบทเรียนส่วนที่เหลือนี้ต่อไป