Lego ev3 เคลื่อนตัวไปตามเส้น เริ่มต้นในวิทยาศาสตร์ เซ็นเซอร์สี - โหมด "ความสว่างของแสงโดยรอบ"

มาดูอัลกอริธึมที่ง่ายที่สุดในการเคลื่อนที่ตามเส้นสีดำบนเซ็นเซอร์สีเดียวบน EV3

อัลกอริธึมนี้ช้าที่สุด แต่เสถียรที่สุด

หุ่นยนต์จะไม่เคลื่อนที่ตามเส้นสีดำอย่างเคร่งครัด แต่เคลื่อนที่ไปตามขอบ เลี้ยวซ้ายและขวา และค่อยๆ เคลื่อนที่ไปข้างหน้า

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

การใช้งานในสภาพแวดล้อม Lego Mindstorms EV3

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

อย่าลืมเพิ่มวงจร หุ่นยนต์จะไม่ไปไหนถ้าไม่มีมัน

ตรวจสอบออก เพื่อผลลัพธ์ที่ดีที่สุด ให้ลองเปลี่ยนการตั้งค่าพวงมาลัยและพลังงาน

การเคลื่อนไหวด้วยเซ็นเซอร์สองตัว:

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


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

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

โปรแกรมที่มีความคิดเห็น:

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

http://studrobots.ru/

โปรแกรมเดียวกันสำหรับรุ่น NXT:

ศึกษาโปรแกรมการเคลื่อนไหว ตั้งโปรแกรมหุ่นยนต์ ส่งวิดีโอการทดสอบโมเดล

ข้อความของงานถูกโพสต์โดยไม่มีรูปภาพและสูตร
ผลงานเวอร์ชันเต็มมีอยู่ในแท็บ "ไฟล์งาน" ในรูปแบบ PDF

เลโก้มายด์สตอร์ม EV3

ขั้นตอนการเตรียมการ

การสร้างโปรแกรมและการสอบเทียบ

บทสรุป

วรรณกรรม

1. บทนำ.

วิทยาการหุ่นยนต์เป็นหนึ่งในพื้นที่ที่สำคัญที่สุดของความก้าวหน้าทางวิทยาศาสตร์และเทคโนโลยี ซึ่งปัญหาของกลไกและเทคโนโลยีใหม่ ๆ เข้ามาติดต่อกับปัญหาของปัญญาประดิษฐ์

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

นักออกแบบ Mindstorms EV3 ขอเชิญเราเข้าสู่โลกอันน่าทึ่งของหุ่นยนต์ และดำดิ่งสู่สภาพแวดล้อมที่ซับซ้อนของเทคโนโลยีสารสนเทศ

เป้าหมาย: เรียนรู้การเขียนโปรแกรมหุ่นยนต์ให้เคลื่อนที่เป็นเส้นตรง

    ทำความคุ้นเคยกับนักออกแบบ Mindstorms EV3 และสภาพแวดล้อมการเขียนโปรแกรม

    เขียนโปรแกรมให้หุ่นยนต์เคลื่อนที่เป็นเส้นตรงที่ 30 ซม. 1 ม. 30 ซม. และ 2 ม. 17 ซม.

    ตัวสร้าง Mindstorms EV3

ชิ้นส่วนก่อสร้าง - 601 ชิ้น, เซอร์โวมอเตอร์ - 3 ชิ้น, เซ็นเซอร์สี, เซ็นเซอร์ตรวจจับความเคลื่อนไหวแบบสัมผัส, เซ็นเซอร์อินฟราเรด และเซ็นเซอร์สัมผัส หน่วยไมโครโปรเซสเซอร์ EV3 เป็นสมองของตัวสร้าง LEGO Mindstorms

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

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

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

    ขั้นตอนการเตรียมการ

    การสร้างสนามเทคนิค

ลองใช้เครื่องหมายกับพื้นที่ทำงานของหุ่นยนต์โดยใช้เทปพันสายไฟและไม้บรรทัดเพื่อสร้างเส้นสามเส้นยาว 30 ซม. - เส้นสีเขียว 1 ม. 15 ซม. - สีแดง และ 2 ม. 17 ซม. - เส้นสีดำ

    การคำนวณที่จำเป็น:

เส้นผ่านศูนย์กลางของล้อหุ่นยนต์คือ 5 ซม. 7 มม. = 5.7 ซม.

การหมุนวงล้อหุ่นยนต์หนึ่งครั้งเท่ากับความยาวของวงกลมที่มีเส้นผ่านศูนย์กลาง 5.7 ซม. เราค้นหาเส้นรอบวงโดยใช้สูตร

โดยที่ r คือรัศมีของล้อ d คือเส้นผ่านศูนย์กลาง π = 3.14

ล = 5,7 * 3,14 = 17,898 = 17,9.

เหล่านั้น. สำหรับการหมุนวงล้อหนึ่งครั้ง หุ่นยนต์จะเคลื่อนที่ได้ 17.9 ซม.

ลองคำนวณจำนวนรอบที่ต้องใช้ในการขับเคลื่อน:

ยังไม่มีข้อความ = 30: 17.9 = 1.68

    1 ม. 30 ซม. = 130 ซม

ยังไม่มีข้อความ = 130: 17.9 = 7.26

    2 ม. 17 ซม. = 217 ซม.

ยังไม่มีข้อความ = 217: 17.9 = 12.12

    การสร้างและสอบเทียบโปรแกรม

เราจะสร้างโปรแกรมโดยใช้อัลกอริทึมต่อไปนี้:

อัลกอริทึม:

    เลือกบล็อกการเคลื่อนไหวในโปรแกรม Mindstorms EV3

    เปิดมอเตอร์ทั้งสองตัวในทิศทางที่กำหนด

    รอให้การอ่านเซ็นเซอร์การหมุนของมอเตอร์ตัวใดตัวหนึ่งเปลี่ยนเป็นค่าที่ระบุ

    ปิดมอเตอร์

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

    สนามนี้ติดตั้งอยู่บนโต๊ะนักเรียน ดังนั้นจึงอาจเกิดการโก่งตัวของพื้นผิวได้เล็กน้อย

    พื้นผิวของสนามเรียบ ดังนั้นจึงเป็นไปได้ที่ล้อของหุ่นยนต์จะยึดเกาะกับสนามได้ไม่ดี

    ในการคำนวณจำนวนรอบ เราต้องปัดเศษตัวเลข และด้วยเหตุนี้ เมื่อเปลี่ยนหนึ่งในร้อยของการปฏิวัติ เราจึงได้ผลลัพธ์ที่ต้องการ

5. สรุป.

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

ในขั้นต่อไปของการทำความรู้จักกับหุ่นยนต์ Lego Mindstorms EV3 คุณจะต้องเรียนรู้วิธีการเขียนโปรแกรมการหมุนในมุมที่กำหนด การเคลื่อนที่ในวงกลม และการหมุนวน

การทำงานร่วมกับนักออกแบบนั้นน่าสนใจมาก เมื่อเรียนรู้เพิ่มเติมเกี่ยวกับความสามารถ คุณจะสามารถแก้ไขปัญหาทางเทคนิคได้ และในอนาคตอาจสร้างโมเดลหุ่นยนต์ Lego Mindstorms EV3 ที่น่าสนใจของคุณเอง

วรรณกรรม.

    Koposov D.G. “ก้าวแรกสู่วิทยาการหุ่นยนต์สำหรับเกรด 5-6” - ม.: บินอม. ห้องปฏิบัติการความรู้, 2555 - 286 น.

    Filippov S. A. “หุ่นยนต์สำหรับเด็กและผู้ปกครอง” - “วิทยาศาสตร์” 2010

    แหล่งข้อมูลทางอินเทอร์เน็ต

    http://เลโก้. rkc-74.ru/

    http://www.9151394.ru/projects/lego/lego6/beliovskaya/

    http://www. เลโก้ คอม/การศึกษา/

ปัญหานี้คลาสสิก เรียบง่ายตามอุดมคติ สามารถแก้ไขได้หลายครั้ง และทุกครั้งที่คุณค้นพบสิ่งใหม่ๆ

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

ในตัวอย่างของเรา หุ่นยนต์สามตัวอย่างจะได้รับการวิเคราะห์ตามโมเดลการศึกษาหลักของ Robot Educator

ขั้นแรก เราได้ประกอบโมเดลพื้นฐานของหุ่นยนต์เพื่อการศึกษา Robot Educator ซึ่งคุณสามารถใช้คำแนะนำในซอฟต์แวร์ MINDSTORMS EV3 ได้

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

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

· เซนเซอร์ หนึ่งตัว พร้อมตัวปรับแรงดันลม P

· เซนเซอร์ หนึ่งตัว พร้อมตัวควบคุม PC

· เซ็นเซอร์สองตัว

ตัวอย่างที่ 1 เซ็นเซอร์หนึ่งตัวพร้อมตัวควบคุม P

ออกแบบ

มีการติดตั้งเซ็นเซอร์วัดแสงบนลำแสงซึ่งอยู่ในตำแหน่งที่สะดวกบนโมเดล


อัลกอริทึม

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


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

ด้วยเหตุนี้ ในโปรแกรม ฟังก์ชันเครื่องคิดเลขจึงเป็นตัวควบคุมสัดส่วนอย่างง่าย ฟังก์ชันที่ ( (a-50)*1.5 ) ในช่วงการทำงานของเซ็นเซอร์วัดแสงจะสร้างค่าการหมุนตามกราฟ:

ตัวอย่างวิธีการทำงานของอัลกอริทึม

ตัวอย่างที่ 2 เซ็นเซอร์หนึ่งตัวพร้อมตัวควบคุม PK

ตัวอย่างนี้อิงจากโครงสร้างเดียวกัน

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

เรายังเพิ่มตัวควบคุมลูกบาศก์แบบธรรมดาให้กับตัวควบคุมสัดส่วนของเราด้วย ซึ่งจะเพิ่มความโค้งงอให้กับฟังก์ชันตัวควบคุม วิธีนี้จะลดการแกว่งของหุ่นยนต์ใกล้กับขอบเขตวิถีที่ต้องการ และกระตุกแรงขึ้นเมื่ออยู่ห่างจากหุ่นยนต์

ในบทนี้ เราจะสำรวจการใช้เซ็นเซอร์สีต่อไป เนื้อหาที่นำเสนอด้านล่างนี้มีความสำคัญมากสำหรับการศึกษาหลักสูตรวิทยาการหุ่นยนต์เพิ่มเติม หลังจากที่เราเรียนรู้วิธีใช้เซ็นเซอร์ทั้งหมดของตัวสร้าง Lego Mindstorms EV3 แล้ว เมื่อแก้ไขปัญหาในทางปฏิบัติ เราจะอาศัยความรู้ที่ได้รับในบทเรียนนี้

6.1. เซ็นเซอร์สี - โหมด "ความสว่างของแสงสะท้อน"

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

ข้าว. 1

มาดูแบบฝึกหัดภาคปฏิบัติกัน: เซ็นเซอร์สีได้รับการติดตั้งบนหุ่นยนต์ของเราแล้ว และถูกส่งลงไปที่พื้นผิวของสารเคลือบตามที่หุ่นยนต์ของเราจะเคลื่อนที่ไป ระยะห่างระหว่างเซ็นเซอร์กับพื้นเป็นไปตามที่แนะนำ เซ็นเซอร์สีเชื่อมต่อกับพอร์ตแล้ว "2" โมดูล EV3 มาโหลดสภาพแวดล้อมการเขียนโปรแกรม เชื่อมต่อหุ่นยนต์กับสภาพแวดล้อม และเพื่อทำการวัด ให้ใช้ฟิลด์ที่มีแถบสีที่เราสร้างขึ้นเพื่อทำงานในส่วนที่ 5.4 ของบทเรียนที่ 5 ให้เสร็จสิ้น มาติดตั้งหุ่นยนต์เพื่อให้เซ็นเซอร์สีอยู่เหนือพื้นผิวสีขาวกัน "หน้าฮาร์ดแวร์"เปลี่ยนสภาพแวดล้อมการเขียนโปรแกรมเป็นโหมด "ดูพอร์ต" (รูปที่ 2 รายการที่ 1). ในโหมดนี้เราสามารถสังเกตการเชื่อมต่อทั้งหมดที่เราทำ บน ข้าว. 2การเชื่อมต่อกับพอร์ตจะปรากฏขึ้น "บี"และ "ค"มอเตอร์ขนาดใหญ่สองตัวและไปยังท่าเรือ "2" - เซ็นเซอร์สี

ข้าว. 2

หากต้องการเลือกตัวเลือกสำหรับการแสดงการอ่านเซ็นเซอร์ ให้คลิกที่ภาพเซ็นเซอร์และเลือกโหมดที่ต้องการ (รูปที่ 3)

ข้าว. 3

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

ข้าว. 4

ตอนนี้เรามาแก้ปัญหาเชิงปฏิบัติกันดีกว่า

งาน #11:จำเป็นต้องเขียนโปรแกรมการเคลื่อนที่ของหุ่นยนต์ซึ่งจะหยุดเมื่อถึงเส้นสีดำ

สารละลาย:

การทดลองแสดงให้เราเห็นว่าเมื่อข้ามเส้นสีดำค่าของเซ็นเซอร์สีในโหมด “ความสว่างของแสงสะท้อน”เท่ากับ 6 . ดังนั้นเพื่อดำเนินการ ปัญหาหมายเลข 11หุ่นยนต์ของเราต้องเคลื่อนที่เป็นเส้นตรงจนกว่าค่าที่ต้องการของเซ็นเซอร์สีจะน้อยลง 7 . ลองใช้บล็อกโปรแกรมที่เราคุ้นเคยกันดีอยู่แล้ว "ความคาดหวัง"จานสีส้ม ให้เราเลือกโหมดการทำงานของบล็อกซอฟต์แวร์ที่ต้องการตามเงื่อนไขปัญหา "กำลังรอ" (รูปที่ 5)

ข้าว. 5

นอกจากนี้ยังจำเป็นต้องกำหนดค่าพารามิเตอร์ของบล็อกโปรแกรมด้วย "ความคาดหวัง". พารามิเตอร์ "ประเภทการเปรียบเทียบ" (รูปที่ 6 รายการที่ 1)สามารถรับค่าต่อไปนี้: "เท่าเทียมกัน"=0, "ไม่เท่ากับ"=1, "มากกว่า"=2, “มากกว่าหรือเท่ากัน”=3, "น้อย"=4, “น้อยกว่าหรือเท่ากัน”=5. ในกรณีของเรา มาตั้งค่ากัน "ประเภทการเปรียบเทียบ"ในความหมาย "น้อย". พารามิเตอร์ “ค่าเกณฑ์”ตั้งค่าให้เท่ากัน 7 (รูปที่ 6 รายการที่ 2).

ข้าว. 6

ทันทีที่ค่าเซ็นเซอร์สีถูกตั้งค่าให้น้อยลง 7 สิ่งที่จะเกิดขึ้นคือเมื่อเซ็นเซอร์สีอยู่เหนือเส้นสีดำ เราจะต้องปิดมอเตอร์ และหยุดหุ่นยนต์ แก้ไขปัญหา (รูปที่ 7).

ข้าว. 7

หากต้องการเรียนต่อ เราจะต้องสร้างสนามใหม่ซึ่งเป็นวงกลมสีดำที่มีเส้นผ่านศูนย์กลางประมาณ 1 เมตร ใช้กับสนามสีขาว ความหนาของเส้นวงกลมคือ 2 - 2.5 ซม. สำหรับฐานของสนามคุณสามารถใช้กระดาษขนาด A0 หนึ่งแผ่น (841x1189 มม.) ติดกาวกระดาษขนาด A1 สองแผ่น (594x841 มม.) เข้าด้วยกัน ในฟิลด์นี้ ให้ทำเครื่องหมายเส้นวงกลมแล้วทาสีด้วยหมึกสีดำ คุณยังสามารถดาวน์โหลดเค้าโครงฟิลด์ที่สร้างในรูปแบบ Adobe Illustrator แล้วสั่งพิมพ์บนผ้าแบนเนอร์ที่โรงพิมพ์ ขนาดเค้าโครงคือ 1250x1250 มม. (คุณสามารถดูเค้าโครงที่ดาวน์โหลดด้านล่างโดยเปิดใน Adobe Acrobat Reader)

สาขานี้จะเป็นประโยชน์สำหรับเราในการแก้ปัญหาคลาสสิกหลายประการในหลักสูตรวิทยาการหุ่นยนต์

งาน #12:จำเป็นต้องเขียนโปรแกรมสำหรับหุ่นยนต์ที่เคลื่อนที่ภายในวงกลมที่มีขอบวงกลมสีดำตามกฎต่อไปนี้:

  • หุ่นยนต์เคลื่อนที่ไปข้างหน้าเป็นเส้นตรง
  • เมื่อถึงเส้นสีดำ หุ่นยนต์จะหยุด
  • หุ่นยนต์จะเคลื่อนที่กลับไปสองรอบของมอเตอร์
  • หุ่นยนต์หมุนไปทางขวา 90 องศา
  • การเคลื่อนไหวของหุ่นยนต์ซ้ำแล้วซ้ำอีก

ความรู้ที่ได้รับในบทเรียนก่อนหน้านี้จะช่วยให้คุณสร้างโปรแกรมที่ช่วยแก้ปัญหาข้อ 12 ได้อย่างอิสระ

แนวทางแก้ไขปัญหาหมายเลข 12

  1. เริ่มการเคลื่อนไหวไปข้างหน้าตรง (รูปที่ 8 รายการที่ 1);
  2. รอให้เซ็นเซอร์สีข้ามเส้นสีดำ (รูปที่ 8 รายการที่ 2);
  3. ถอยหลัง 2 รอบ (รูปที่ 8 รายการที่ 3);
  4. เลี้ยวขวา 90 องศา (รูปที่ 8 รายการที่ 4); ค่ามุมการหมุนจะถูกคำนวณสำหรับหุ่นยนต์ที่ประกอบตามคำแนะนำ Small-robot-45544 (รูปที่ 8 รายการที่ 5);
  5. ทำซ้ำคำสั่ง 1 - 4 ในวงวนไม่มีที่สิ้นสุด (รูปที่ 8 ข้อ 6).

ข้าว. 8

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

6.2. เซ็นเซอร์สี - โหมด "ความสว่างของแสงโดยรอบ"

โหมดการทำงานของเซ็นเซอร์สี “ความสว่างของแสงภายนอก”คล้ายกับโหมดมาก “ความสว่างของแสงสะท้อน”เฉพาะในกรณีนี้เซ็นเซอร์จะไม่ปล่อยแสง แต่จะวัดแสงธรรมชาติที่ส่องสว่างจากสิ่งแวดล้อม เมื่อมองด้วยสายตา โหมดการทำงานของเซ็นเซอร์นี้สามารถกำหนดได้ด้วยไฟ LED สีฟ้าที่ส่องสว่างเล็กน้อย ค่าที่อ่านได้จากเซนเซอร์จะแตกต่างกันไป 0 (ไม่มีแสงสว่าง) จนกระทั่ง 100 (แสงที่สว่างที่สุด) เมื่อแก้ไขปัญหาในทางปฏิบัติที่ต้องมีการวัดแสงภายนอก ขอแนะนำให้วางตำแหน่งเซ็นเซอร์เพื่อให้เซ็นเซอร์ยังคงเปิดกว้างที่สุดเท่าที่จะเป็นไปได้ และไม่มีชิ้นส่วนและโครงสร้างอื่นบัง

มาติดตั้งเซ็นเซอร์สีเข้ากับหุ่นยนต์ของเราในลักษณะเดียวกับที่เราติดเซ็นเซอร์สัมผัสในบทที่ #4 (รูปที่ 9). เชื่อมต่อเซ็นเซอร์สีด้วยสายเคเบิลเข้ากับพอร์ต "2" โมดูล EV3 มาดูการแก้ปัญหาเชิงปฏิบัติกันดีกว่า

ข้าว. 9

งาน #13:เราจำเป็นต้องเขียนโปรแกรมที่เปลี่ยนความเร็วของหุ่นยนต์ของเราขึ้นอยู่กับความเข้มของแสงภายนอก

เพื่อแก้ปัญหานี้ เราจำเป็นต้องรู้วิธีรับค่าปัจจุบันของเซ็นเซอร์ และจานสีเหลืองของบล็อกโปรแกรมซึ่งเรียกว่า "เซนเซอร์".

6.3. จานสีเหลือง - "เซ็นเซอร์"

จานสีเหลืองของสภาพแวดล้อมการเขียนโปรแกรม Lego mindstorms EV3 มีบล็อกซอฟต์แวร์ที่ช่วยให้คุณได้รับการอ่านเซ็นเซอร์ปัจจุบันสำหรับการประมวลผลเพิ่มเติมในโปรแกรม ต่างจากตัวอย่างเช่น บล็อกโปรแกรม "ความคาดหวัง"ในจานสีส้ม บล็อกโปรแกรมในจานสีเหลืองจะถ่ายโอนการควบคุมไปยังบล็อกโปรแกรมต่อไปนี้ทันที

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

สภาพแวดล้อมการเขียนโปรแกรมเวอร์ชันเพื่อการศึกษาประกอบด้วยบล็อกการเขียนโปรแกรมสำหรับเซ็นเซอร์ทั้งหมดที่สามารถใช้กับตัวสร้าง Lego Mindstorms EV3

กลับมาที่วิธีแก้ปัญหากันดีกว่า ปัญหาหมายเลข 13มาดูกันว่าคุณจะรับและประมวลผลการอ่านเซ็นเซอร์สีได้อย่างไร ดังที่เราทราบแล้ว: ช่วงของค่าเซ็นเซอร์สีในโหมด “ความสว่างของแสงภายนอก”อยู่ในช่วงของ 0 ก่อน 100 . พารามิเตอร์ที่ควบคุมกำลังมอเตอร์มีช่วงเดียวกัน ลองใช้การอ่านเซ็นเซอร์สีเพื่อควบคุมกำลังของมอเตอร์ในบล็อกซอฟต์แวร์ "พวงมาลัย".

สารละลาย:


ข้าว. 10

มาโหลดโปรแกรมผลลัพธ์ลงในหุ่นยนต์และรันเพื่อดำเนินการกัน หุ่นยนต์ขับช้าๆ หรือไม่? มาเปิดไฟฉาย LED แล้วลองนำไปที่เซ็นเซอร์สีที่ระยะต่างๆ เกิดอะไรขึ้นกับหุ่นยนต์? เรามาคลุมเซ็นเซอร์สีด้วยฝ่ามือของเรา - เกิดอะไรขึ้นในกรณีนี้? เขียนคำตอบของคำถามเหล่านี้ลงในความคิดเห็นของบทเรียน

ความท้าทาย - โบนัส

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

15.01.2012, 18:51

จนถึงขณะนี้ ในบทความเกี่ยวกับอัลกอริธึมที่ใช้ในการเคลื่อนที่ไปตามเส้น วิธีการหนึ่งได้รับการพิจารณาเมื่อเซ็นเซอร์แสงดูเหมือนจะตรวจสอบขอบด้านซ้ายหรือด้านขวา: ทันทีที่หุ่นยนต์เคลื่อนที่เข้าไปในส่วนสีขาวของสนาม ผู้ควบคุมจะส่งคืนหุ่นยนต์ ไปที่เส้นขอบเซ็นเซอร์เริ่มเคลื่อนที่ลึกเข้าไปในเส้นสีดำ - ตัวควบคุมจะยืดมันกลับ
แม้ว่าภาพด้านบนจะแสดงสำหรับตัวควบคุมรีเลย์ แต่หลักการทั่วไปของการเคลื่อนที่ตามสัดส่วน (P-regulator) จะเหมือนกัน ดังที่ได้กล่าวไปแล้ว ความเร็วเฉลี่ยของการเคลื่อนไหวดังกล่าวไม่สูงมาก และมีการพยายามหลายครั้งเพื่อเพิ่มความเร็วโดยทำให้อัลกอริธึมซับซ้อนเล็กน้อย: ในกรณีหนึ่งมีการใช้การเบรกแบบ "นุ่มนวล" ในอีกกรณีหนึ่งนอกเหนือจากการเลี้ยวแล้วการเคลื่อนที่ไปข้างหน้า ได้รับการแนะนำ
เพื่อให้หุ่นยนต์เคลื่อนที่ไปข้างหน้าในบางพื้นที่ จึงมีการจัดสรรพื้นที่แคบในช่วงของค่าที่สร้างโดยเซ็นเซอร์วัดแสง ซึ่งตามอัตภาพอาจเรียกว่า "เซ็นเซอร์อยู่ที่ขอบของเส้น"
วิธีการนี้มีข้อเสียเปรียบเล็กน้อย - หากหุ่นยนต์ "ตาม" ขอบเขตด้านซ้ายของเส้น เมื่อเลี้ยวขวา หุ่นยนต์จะไม่ตรวจจับความโค้งของวิถีในทันที และด้วยเหตุนี้ หุ่นยนต์จึงใช้เวลามากขึ้นในการค้นหาเส้นและเลี้ยว ยิ่งกว่านั้นเราสามารถพูดได้อย่างมั่นใจว่ายิ่งเลี้ยวได้คมชัดการค้นหานี้ก็จะยิ่งนานขึ้นเท่านั้น
รูปต่อไปนี้แสดงให้เห็นว่าหากเซ็นเซอร์ไม่ได้อยู่ที่ด้านซ้ายของเส้นขอบ แต่ทางด้านขวา เซ็นเซอร์ก็จะตรวจพบความโค้งของวิถีแล้ว และจะเริ่มทำการเลี้ยว

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

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

แผนภาพด้านบนแสดงให้เห็นทันทีว่าพฤติกรรมของมอเตอร์ควรเปลี่ยนแปลงในโปรแกรมอย่างไร ทีนี้ การเขียนโปรแกรมไม่ควรยาก คุณควรเริ่มต้นด้วยการเลือกเซ็นเซอร์ที่จะโพลก่อน ไม่เป็นไรมากก็ปล่อยมันไปเถอะ จำเป็นต้องพิจารณาว่าอยู่เหนือพื้นผิวที่สว่างหรือมืด:
การกระทำนี้ยังไม่อนุญาตให้คุณบอกได้ว่าหุ่นยนต์ควรไปในทิศทางใด แต่จะแบ่งรัฐที่ระบุไว้ข้างต้นออกเป็นสองกลุ่ม: (I, II) สำหรับสาขาบนและ (III, IV) สำหรับสาขาล่าง ตอนนี้แต่ละกลุ่มมีสองรัฐ ดังนั้นคุณต้องเลือกหนึ่งรัฐ หากคุณดูสองสถานะแรก I และ II อย่างใกล้ชิด ตำแหน่งของเซ็นเซอร์ด้านขวาจะแตกต่างกัน - ในกรณีหนึ่งอยู่เหนือพื้นผิวที่สว่าง ส่วนอีกสถานะหนึ่งอยู่เหนือพื้นผิวที่มืด นี่คือสิ่งที่จะกำหนดทางเลือกของการดำเนินการที่จะดำเนินการ:
ตอนนี้คุณสามารถแทรกบล็อกที่กำหนดพฤติกรรมของมอเตอร์ตามตารางด้านบน: สาขาด้านบนของสภาพที่ซ้อนกันกำหนดชุดค่าผสม "เซ็นเซอร์ทั้งสองบนแสง" ด้านบน - "ซ้ายบนแสง ขวาในความมืด":
สาขาล่างของเงื่อนไขหลักมีหน้าที่รับผิดชอบกลุ่มเงื่อนไข III และ IV อีกกลุ่มหนึ่ง สถานะทั้งสองยังแตกต่างกันในระดับแสงที่เซ็นเซอร์ด้านขวาตรวจจับได้ ซึ่งหมายความว่าจะกำหนดทางเลือกของแต่ละรายการ:
ผลที่ได้คือสองกิ่งที่เต็มไปด้วยบล็อกการเคลื่อนไหว สาขาด้านบนรับผิดชอบสถานะ "ซ้ายบนความมืด ขวาบนแสง" และสาขาล่างรับผิดชอบ "เซ็นเซอร์ทั้งสองในความมืด"
ควรสังเกตว่าการออกแบบนี้กำหนดวิธีการเปิดมอเตอร์เท่านั้นโดยขึ้นอยู่กับการอ่านเซ็นเซอร์ในตำแหน่งใดตำแหน่งหนึ่งในสนาม โดยปกติแล้ว หลังจากผ่านไปครู่หนึ่งโปรแกรมจะต้องตรวจสอบว่าการอ่านมีการเปลี่ยนแปลงหรือไม่เพื่อปรับ พฤติกรรมของมอเตอร์ตามนั้น และหลังจากนั้นครู่หนึ่ง อีกครั้ง อีกครั้ง ฯลฯ .d. ดังนั้นจึงควรวางไว้ในวงที่จะให้การตรวจสอบซ้ำนี้:

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

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



กำลังโหลด...กำลังโหลด...