Skip to main content

บทเรียนที่ 3: เมื่อตรวจพบสีแดง

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

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

    def main ():
    	# มองหาอาคารในขณะที่ตรวจไม่พบขอบสีแดง
    	ในขณะที่ไม่ได้ down_eye.detect (สีแดง):
    		# เซ็นเซอร์ระยะทางตรวจพบปราสาทหรือไม่?
    		
    		หาก front_distance.found_object ():
    			# Crash castle detected by Distance Sensor 			drivetrain.drive
    			(FORWARD)
    		
    		else:
    			# Turn to find a castle using the Distance Sensor 			drivetrain.turn
    			(RIGHT)
    			
    		wait (5, MSEC)
    		
    	# Reverse and turn when red border detected
  • เพิ่ม drive_for และ turn_for คำสั่งใต้ความคิดเห็นเพื่อให้ VR Robot สามารถย้อนกลับและหมุนได้เมื่อ Down Eye Sensor ตรวจพบสีแดง

    def main ():
    	# มองหาอาคารในขณะที่ตรวจไม่พบขอบสีแดง
    	ในขณะที่ไม่ได้ down_eye.detect (สีแดง):
    		# เซ็นเซอร์ระยะทางตรวจพบปราสาทหรือไม่?
    		
    		หาก front_distance.found_object ():
    			# Crash castle detected by Distance Sensor 			drivetrain.drive (
    			forward)
    		
    		else:
    			# Turn to find a castle using the Distance Sensor 			drivetrain.turn
    			(RIGHT)
    			
    		wait (5, msec)
    		
    	# Reverse and turn when red border detected
    	drivetrain.drive_for (REVERSE, 300, MM)
    	drivetrain.turn_for (RIGHT, 90, DEGREES)
  • เปิด Dynamic Castle Crasher Playground หากยังไม่เปิดและดำเนินโครงการ หุ่นยนต์ VR ทำงานตามที่คุณตั้งใจหรือไม่?
  • เมื่อโครงการนี้ดำเนินการมีสองเงื่อนไขที่ตรวจสอบแล้ว ประการแรกคือสภาวะที่เซนเซอร์ตรวจจับตาลงตรวจจับสีแดงภายในลูป ขณะที่ โปรดสังเกตว่ากระแสข้อมูลของโครงการจะเคลื่อนไปยังสภาวะถัดไปของวัตถุที่ถูกตรวจจับ เท่านั้น หากเซนเซอร์ตรวจจับตาลงไม่เห็นสีแดง หากเซนเซอร์ตรวจจับแสงสีแดง โปรเจ็กต์จะข้ามคำสั่ง if else และข้ามไปที่การขับรถถอยหลังและการเลี้ยว
    รหัสโปรเจกต์ Python ของบทเรียนนี้พร้อมแผนภาพที่แสดงลำดับงานของโปรเจกต์ที่ด้านข้าง ตรวจสอบเงื่อนไขแรกแล้ว: เซ็นเซอร์ตรวจจับดวงตาลงตรวจจับสีแดงเป็นสีส้มแสดงถึงการเริ่มต้นของลูป มีห่วงลูกศรสีแดงสำหรับเมื่อ Down Eye Sensor ตรวจพบสีแดงซึ่งจะรายงาน True และโครงการจะออกจากรูปลักษณ์ที่ทำซ้ำ หากรายงานเป็นเท็จรหัสจะย้ายไปที่คำสั่ง if then และทำซ้ำต่อไปจนกว่า Down Eye Sensor จะตรวจพบสีแดง
 
  • เงื่อนไขที่ 2 ที่ได้รับการตรวจสอบคือคำสั่ง if else  ในขณะที่เซ็นเซอร์ตรวจจับดวงตาลงไม่พบสีแดงโครงการจะดำเนินการต่อใน ขณะที่ วนซ้ำเพื่อตรวจสอบสภาพของเซ็นเซอร์ระยะทาง หุ่นยนต์ VR จะใช้ข้อมูลจากเซ็นเซอร์ระยะทางเพื่อตัดสินใจที่จะขับไปข้างหน้าหรือเลี้ยวขวา รหัสโปรเจกต์ Python ของบทเรียนนี้พร้อมแผนภาพที่แสดงลำดับงานของโปรเจกต์ที่ด้านข้าง มันอ่านเงื่อนไขที่สองที่ตรวจสอบแล้ว: เซ็นเซอร์ระยะทางตรวจจับวัตถุ มันแสดงให้เห็นว่าจะเกิดอะไรขึ้นหากตรวจสอบเงื่อนไขที่สองและหากรายงานเป็นจริงหุ่นยนต์ VR จะขับเคลื่อนไปข้างหน้าและหากเงื่อนไขที่สองรายงานเป็นเท็จหุ่นยนต์ VR จะเลี้ยวขวา
  • อย่างไรก็ตามเมื่อ Down Eye Sensor ตรวจพบสีแดงหุ่นยนต์ VR จะขับย้อนกลับเลี้ยวจากนั้นหยุดเนื่องจากนั่นคือจุดสิ้นสุดของการไหลของโครงการ ไม่มีการวนซ้ำเพื่อทำพฤติกรรมซ้ำอีก

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

การเพิ่มอนันต์ ขณะ วนซ้ำ

  • ไม่มีที่สิ้นสุดใน ขณะที่ ลูปเป็นสิ่งจำเป็นเพื่อให้พฤติกรรมทำซ้ำบนลูป ลากหรือพิมพ์ ลูปขณะ ที่ ด้านบนของโครงการและตั้งเงื่อนไขเป็น True เพื่อสร้างลูปที่ไม่มีที่สิ้นสุด จากนั้นคัดลอกและวางรหัสก่อนหน้าภายในอนันต์ใน ขณะที่ วนซ้ำ ตรวจสอบให้แน่ใจว่าคำสั่งถูกเยื้องอย่างถูกต้องภายใต้ส่วนหัวที่ถูกต้องมิฉะนั้นโครงการอาจไม่ทำงานตามที่คาดไว้ ตอนนี้โปรเจกต์ของคุณควรมีลักษณะดังนี้:

    def main ():
    
    	while True:
    		# มองหาอาคารในขณะที่ตรวจไม่พบขอบสีแดง
    		ในขณะที่ไม่ได้ down_eye.detect (สีแดง):
    			# เซ็นเซอร์ระยะทางตรวจพบปราสาทหรือไม่?
    		
    			หาก front_distance.found_object ():
    				# Crash castle detected by Distance Sensor 				drivetrain.drive (
    				forward)
    		
    			else:
    				# Turn to find a castle using the Distance Sensor 				drivetrain.turn
    				(RIGHT)
    			
    			wait (5, msec)
    		
    		# Reverse and turn when red border detected
    		drivetrain.drive_for (REVERSE, 300, MM)
    		drivetrain.turn_for (RIGHT, 90, DEGREES)
    
  • เปิด Dynamic Castle Crasher Playground หากยังไม่เปิดและดำเนินโครงการ หุ่นยนต์ VR ทำงานตามที่คุณตั้งใจหรือไม่? 
  • เมื่อโครงการนี้ทำงานหุ่นยนต์ VR จะขับไปยังปราสาทที่ตรวจพบและเลี้ยวขวาหากไม่มีการรายงานปราสาท เมื่อ Down Eye Sensor ตรวจพบสีแดงหุ่นยนต์ VR จะขับในทิศทางย้อนกลับเลี้ยวและขับต่อไปยังปราสาทอื่น

    มุมมองด้านบนของสนามเด็กเล่น Dynamic Castle Crasher แสดงให้เห็นว่าหุ่นยนต์ VR ได้โค่นล้มปราสาทหลายแห่งในสนามเด็กเล่นและตอนนี้กำลังเคลื่อนที่ไปยังปราสาทที่ยืนอยู่สุดท้าย

คำถาม

โปรดเลือกลิงก์ด้านล่างเพื่อเข้าถึงแบบทดสอบบทเรียน

Google Doc /.docx /.pdf