Skip to main content

บทเรียนที่ 2: ขับรถไปยังดิสก์ถัดไป

ขับรถไปที่บลูดิสก์ส

โครงการก่อนหน้านี้มีหุ่นยนต์ VR เลี้ยวขวาเมื่อเซ็นเซอร์ดวงตาด้านหน้าตรวจพบดิสก์สีเขียวซึ่งนำหุ่นยนต์ VR ผ่านขั้นตอนแรกในเขาวงกต ตอนนี้เราจะสร้างโครงการต่อไปเพื่อให้ VR Robot ขับเคลื่อนไปยังดิสก์สี่ตัวแรกบน Disk MazePlayground

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

  • เพิ่มความคิดเห็นอื่นใต้ TURN_FOR ในโครงการที่มีอยู่เพื่ออธิบายพฤติกรรมถัดไปของหุ่นยนต์ VR โปรเจกต์ของคุณควรมีลักษณะดังนี้:
def main ():
    # Drive to 1st disk (green), turn right
    while not front_eye.detect (GREEN): drivetrain.drive (
        forward)
        wait (5, msec) drivetrain.turn_for

    (RIGHT, 90, DEGREES)

    # Drive to 2nd disk (blue), turn left
  • ใต้ความคิดเห็นใหม่ ให้เพิ่มอีก while loop ด้วยเงื่อนไข not. ตั้งเงื่อนไขเป็นคำสั่ง detect และตั้งค่าพารามิเตอร์เป็น "BLUE" เนื่องจากดิสก์ถัดไปที่ VR Robot จะพบคือสีน้ำเงิน
    # Drive to 2nd disk (blue), turn left
    while not front_eye.detect (BLUE):
        เดี๋ยวก่อน (5, MSEC)
  • ภายในลูป while ให้ลากหรือพิมพ์คำสั่ง drive แบบไม่รอ 
    # Drive to 2nd disk (blue), turn left
    while not front_eye.detect (BLUE): drivetrain.drive
        (FORWARD)
        wait (5, MSEC)
  • ลากเข้าหรือพิมพ์คำสั่ง turn_for และตั้งค่าพารามิเตอร์ให้เลี้ยวซ้าย 90 องศา
    # Drive to 2nd disk (blue), turn left
    while not front_eye.detect (BLUE): drivetrain.drive
        (FORWARD)
        wait (5, MSEC)

    drivetrain.turn_for (LEFT, 90, DEGREES)
  • เรียกใช้โครงการเพื่อดูว่าหุ่นยนต์ VR เคลื่อนที่ผ่าน Disk Maze Playgroundอย่างไรมุมมองด้านบนของหุ่นยนต์ VR บน Disk Maze Playground ด้วยลูกศรสีดำที่ระบุว่าหุ่นยนต์จะขับไปยังดิสก์สีเขียวโดยตรงจากตำแหน่งเริ่มต้นจากนั้นเลี้ยวขวาขับไปข้างหน้าไปยังดิสก์สีน้ำเงินเลี้ยวซ้ายแล้วหยุดขับ
    • สังเกตว่าหุ่นยนต์ VR จะเลี้ยวขวาเมื่อเซ็นเซอร์ตรวจจับดวงตาด้านหน้าตรวจพบดิสก์สีเขียวและเลี้ยวซ้ายเมื่อเซ็นเซอร์ตรวจจับดวงตาด้านหน้าตรวจพบดิสก์สีน้ำเงิน
  • สร้างโครงการนี้ต่อไปเพื่อขับเคลื่อนหุ่นยนต์ VR ไปยังดิสก์สีน้ำเงินอีกสองตัวบน Disk Maze Playground โดยใช้เซ็นเซอร์ดวงตาด้านหน้า เพิ่มคำสั่งไปยังโครงการนำทางหุ่นยนต์ VR ไปยังดิสก์สองแผ่นถัดไปแล้วหยุด ตอนนี้โปรเจกต์เต็มรูปแบบของคุณควรมีลักษณะดังนี้:
def main ():
    # Drive to 1st disk (green), turn right
    while not front_eye.detect (GREEN): drivetrain.drive (
        FORWARD)
        wait (5, msec) drivetrain.turn_for (

    RIGHT, 90, DEGREES)

    # Drive to 2nd disk (blue), turn left
    while not front_eye.detect (BLUE): drivetrain.drive (
        FORWARD)
        wait (5, msec) drivetrain.turn_for

    (LEFT, 90, DEGREES)

    # Drive to 3rd disk (blue), turn left
    while not front_eye.detect (BLUE): drivetrain.drive (
        FORWARD)
        wait (5, msec) drivetrain.turn_for

    (LEFT, 90, DEGREES)

    # Drive to 4th disk (blue), turn left
    while not front_eye.detect (BLUE): drivetrain.drive
        (FORWARD)
        wait (5, msec) drivetrain.turn_for

    (LEFT, 90, DEGREES)

การระบุรูปแบบในการเคลื่อนไหวของหุ่นยนต์ VR

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

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

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

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

def main ():
    # Drive to 1st disk (green), turn right
    while not front_eye.detect (GREEN): drivetrain.drive (
        forward)
        wait (5, msec) drivetrain.turn_for

    (RIGHT, 90, DEGREES)

    # Drive to the next 3 disks (blue), turn left
    for value in range (3): 
        while not front_eye.detect (BLUE): drivetrain.drive
            (FORWARD)
            wait (5, msec) drivetrain.turn_for

        (LEFT, 90, DEGREES)

การใช้ for loop สามารถทำให้โปรเจกต์ของคุณง่ายขึ้นและอ่านง่ายขึ้นแต่มีคำสั่งซ้ำๆอยู่ภายในลูปเดียว

  • เปิด Disk Maze Playground หากยังไม่ได้เปิดและเรียกใช้โครงการ
  • ดู VR Robot นำทางไปยังดิสก์สี่ตัวบน Disk MazePlayground

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

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