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

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

สร้างโครงการต่อไป
- ทำงานต่อ ใน โครงการ 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 มิลลิเมตร (มม.)

-
โดยใช้การวัดเหล่านั้นศูนย์กลางของเป้าหมายสามารถกำหนดได้ประมาณ 200 มิลลิเมตร (มม.) จากผนังของสนามเด็กเล่น Using those measurements, the center of the goal can be determined to approx 200 mm (mm) from the wall of the Playground.

-
หุ่นยนต์ 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 จะใช้ค่าจากเซ็นเซอร์ระยะทางเพื่อกำหนดเวลาที่จะหยุดการขับขี่และวางดิสก์

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