Skip to main content

บทเรียนที่ 3: การใช้เซ็นเซอร์และแม่เหล็กไฟฟ้าเพื่อวางดิสก์ในเป้าหมาย

การเพิ่มเซ็นเซอร์ระยะทางไปยังโครงการ

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

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

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

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

คำสั่ง turn_to_heading จะเปลี่ยนหุ่นยนต์ VR ไปยังทิศทางที่ระบุโดยใช้เซ็นเซอร์ Gyro ทิศทางที่หุ่นยนต์ VR จะหมุน (ซ้ายหรือขวา) จะถูกกำหนดตามส่วนหัวปัจจุบันของเซ็นเซอร์ Gyro หันไปที่หัวเรื่องคำสั่ง VEXcode VR Python อ่าน drivetrain dot เลี้ยวขีดล่างเพื่อขีดล่างหัวเรื่องโดยมี 90 และองศาในวงเล็บ

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

มุมมองด้านบนของหุ่นยนต์ VR ที่อยู่ตรงกลางของวงกลมที่แสดงหัวข้อของหุ่นยนต์ ที่ตำแหน่ง 12 นาฬิกาอยู่ในแนวเดียวกับด้านหน้าของหุ่นยนต์คือ 0 องศา หัวเรื่องวิ่งตามเข็มนาฬิการอบวงกลมด้วย 90 องศาในตำแหน่ง 3 นาฬิกา 180 องศาในตำแหน่ง 6 นาฬิกาและ 270 องศาในตำแหน่ง 9 นาฬิกา

สร้างโครงการต่อไป 

  • ทำงานต่อ ใน โครงการ Unit8Lesson3
  • เพิ่มคำสั่ง turn_to_heading หลังจาก ความคิดเห็นที่สาม ตั้งค่าพารามิเตอร์เป็น 180 องศาตอนนี้โปรเจกต์จึงมีลักษณะดังนี้: 

    def main ():
        #1. ไดรฟ์ไปยังดิสก์แรก
        ในขณะที่ไม่ใช่
            down_eye.near_object (): drivetrain.drive (FORWARD)
            wait (5
        , msec)
    
        drivetrain.stop () #2 หยิบแผ่นดิสก์
        แรก magnet.energize (BOOST)
    
        #3 ขับไปยัง
        เป้าหมาย drivetrain.turn_to_heading (180,
    
        DEGREES )#4 วางดิสก์ลงในเป้าหมาย
  • ตอนนี้หุ่นยนต์ VR มุ่งไปยังเป้าหมายแล้วหุ่นยนต์ VR จะต้องขับรถกลับไปยังเป้าหมาย เพิ่มลูป while ใต้คำสั่ง turn_to_heading เพื่อให้ส่วนที่สามของโปรเจกต์มีลักษณะดังนี้: 

    	#3. ขับไปยังเป้าหมาย
        drivetrain.turn_to_heading (180, DEGREES)
        ในขณะที่เงื่อนไข:
            รอ (5, มิลลิวินาที)
  • ในการขับรถกลับไปยังเป้าหมายหุ่นยนต์ VR จะใช้ข้อมูลจากเซ็นเซอร์ระยะทางเพื่อกำหนดว่าหุ่นยนต์ VR อยู่ภายในเป้าหมายเมื่อใด ตามที่กล่าวไว้ในบทเรียนก่อนหน้าตารางสี่เหลี่ยมแต่ละตารางบน Disk Mover Playground มี ขนาด 200 มิลลิเมตร (มม.) 200 มิลลิเมตร (มม.)ภาพระยะใกล้ของมุมซ้ายล่างของสนามเด็กเล่นแสดงให้เห็นว่าแต่ละตาราง 10 คูณ 10 ตารางบนพื้นของสนามเด็กเล่นมีขนาด 200 มม. คูณ 200 มม.
  • โดยใช้การวัดเหล่านั้นศูนย์กลางของเป้าหมายสามารถกำหนดได้ประมาณ 200 มิลลิเมตร (มม.) จากผนังของสนามเด็กเล่น Using those measurements, the center of the goal can be determined to approx 200 mm (mm) from the wall of the Playground.

    ภาพระยะใกล้ของมุมซ้ายล่างของ Disk Mover Playground หุ่นยนต์ VR มีดิสก์สีน้ำเงินติดอยู่กับแม่เหล็กไฟฟ้าและหันหน้าไปทางเป้าหมายสีน้ำเงิน การวัดจากผนังด้านหลังของสนามเด็กเล่นไปยังศูนย์กลางของเป้าหมายสีน้ำเงินมีข้อความ 200 มิลลิเมตร
  • หุ่นยนต์ VR ควรขับรถ  ในขณะที่เซ็นเซอร์ระยะทางรายงานว่าหุ่นยนต์ VR อยู่ห่างจากผนังของสนามเด็กเล่นมากกว่า 200 มิลลิเมตร (มม.) ตั้งค่าเงื่อนไขของลูป while เป็นคำสั่ง get_distance โดยใช้พารามิเตอร์มิลลิเมตร (mm) จากนั้นเพิ่มตัวดำเนินการเปรียบเทียบให้มากกว่า>() 200 ส่วนที่สามของโครงการตอนนี้ควรมีลักษณะดังนี้: 

    	#3. ขับไปยังเป้าหมาย
        drivetrain.turn_to_heading (180, DEGREES)
        ในขณะที่ front_distance.get_distance (MM) > 200:
            เดี๋ยวก่อน (5, MSEC)
  • เพิ่มคำสั่ง drive ลงในลูป while นี้ เพื่อให้ส่วนที่สามของโปรเจ็กต์มีลักษณะดังนี้ สิ่งนี้จะสั่งให้หุ่นยนต์ VR ขับไปข้างหน้าในขณะที่เซ็นเซอร์ระยะทางรายงานระยะทางมากกว่า 200 มิลลิเมตร (มม.)

    	#3. ขับไปยังเป้าหมาย
        drivetrain.turn_to_heading (180, DEGREES)
        ในขณะที่ front_distance.get_distance (MM) > 200
            : drivetrain.drive (FORWARD)
            wait (5, MSEC)
  • เมื่อหุ่นยนต์ VR ไปถึงเป้าหมาย (200 มม. จากกำแพง) หุ่นยนต์ VR จะต้องหยุดการขับขี่ เพิ่มคำสั่ง หยุด นอก ลูป ขณะที่ เพื่อให้ส่วนที่สามของโปรเจ็กต์มีลักษณะดังนี้:

    	#3. ขับไปยังเป้าหมาย
        drivetrain.turn_to_heading (180, DEGREES)
        ในขณะที่ front_distance.get_distance (MM) > 200
            : drivetrain.drive (FORWARD)
            wait (5, msec
        ) drivetrain.stop ()
  • ตอนนี้หุ่นยนต์ VR หยุดทำงานในเป้าหมายแล้วมันสามารถวางดิสก์ได้ เพิ่มคำสั่ง energize ใต้ความคิดเห็นที่สี่ และตั้งค่าพารามิเตอร์ เป็น 'DROP' ส่วนที่สี่ของโครงการตอนนี้ควรมีลักษณะดังนี้:

    	#4. วางดิสก์ลงในแม่เหล็กเป้าหมายให้
        พลังงาน (หล่น)
  • หุ่นยนต์ VR จะต้องขับรถในระยะทางสั้นๆเพื่อหลีกเลี่ยงการชนหรือชนกับดิสก์ใดๆ การชนกับดิสก์อาจทำให้หุ่นยนต์ VR หลุดออกจากเส้นทางได้ จากนั้นหุ่นยนต์ VR จะต้องหมุนเพื่อให้หันหน้าไปทางดิสก์อีกครั้ง เพิ่มคำสั่งต่อไปนี้หลังจากคำสั่ง ENERGIZE สุดท้ายตามที่แสดงเพื่อสั่งให้หุ่นยนต์ VR ขับรถย้อนกลับเป็นเวลา 100 มิลลิเมตร (มม.) และหันกลับไปที่หัวเรื่อง 0 องศา ตรวจสอบให้แน่ใจว่าคำสั่งถูกเยื้องอย่างถูกต้องในโปรเจกต์ของคุณ

    	#4. วางดิสก์ลงในแม่เหล็กเป้าหมายให้
        พลังงาน (หล่น)
    
    	drivetrain.drive_for (ย้อนกลับ, 100, MM)
        drivetrain.turn_to_heading (0, องศา)
  • เปิด Disk Mover Playground หากยังไม่ได้เปิดและเรียกใช้โครงการ
  • หุ่นยนต์ VR ขับเคลื่อนไปข้างหน้าหยิบดิสก์ตัวแรกขึ้นมาจากนั้นหันไปที่ส่วนหัว 180 องศาเพื่อเผชิญกับเป้าหมาย จากนั้นหุ่นยนต์ VR จะใช้ค่าจากเซ็นเซอร์ระยะทางเพื่อกำหนดเวลาที่จะหยุดการขับขี่และวางดิสก์

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

โปรเจกต์โฟลว์เพื่อวางดิสก์แรกในเป้าหมาย

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

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

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