สารบัญ:
วีดีโอ: หุ่นยนต์ Chaotic ที่เรียนรู้ด้วยตนเอง: 3 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
คุณสนใจแมชชีนเลิร์นนิง, หุ่นยนต์ AI หรือไม่? คุณไม่จำเป็นต้องทำงานในมหาวิทยาลัยที่หรูหราบางแห่ง นี่คือคำอธิบายของหุ่นยนต์ที่วุ่นวายของฉัน เป็นหุ่นยนต์ที่ง่ายมากในการสาธิตวิธีใช้โค้ดการเรียนรู้ด้วยตนเองและวิธีนำไปใช้ในแพลตฟอร์ม Arduino ในกรณีนี้คือ Arduino เนื่องจาก มันเป็นแพลตฟอร์มราคาถูกมาก!
รหัสพัฒนาหุ่นยนต์เพื่อให้หุ่นยนต์เรียนรู้ที่จะคลาน ได้รับการตอบรับจากเมาส์ที่ถูกลากไปข้างหลัง รหัสคือ "พันธุกรรม" ซึ่งหมายความว่ามีการทดสอบบุคคลจำนวนหนึ่งและคนที่ดีที่สุดจะถูกเก็บไว้และจะมีลูก ซึ่งหมายความว่ารหัสวิวัฒนาการในทางวิวัฒนาการ
ขั้นตอนที่ 1: ฮาร์ดแวร์ AKA the Robot
คุณต้องการ:
- 1 Arduino Due
- 8 ไมโครเซอร์โว
- เมาส์ PS/2 1 ตัว
- ตัวเลื่อนระดับ 1 ตัว
- เซนเซอร์ชิลด์บางรุ่นหรือคล้ายกัน ฉันเบื่อแผงเซ็นเซอร์และเชื่อมตัวเอง
-สายไฟ
- แหล่งจ่ายไฟ 5V ภายนอกสำหรับเซอร์โว
- เศษเหล็กบางส่วน กาวบางส่วน และด้ายเหล็กบางส่วน และเทป!
เลยวาง Due ไว้บนพื้น ใส่เซอร์โวในวงแหวนรอบ ๆ ประกอบเข้ากับเศษเหล็ก กาว และด้าย นี่คือส่วนที่วุ่นวาย! เนื่องจากการออกแบบนั้นไม่เป็นระเบียบ จึงคาดเดาไม่ได้ว่าจะเคลื่อนไหวอย่างไรเพื่อให้คลานได้ นี่คือเหตุผลที่รหัสการเรียนรู้ด้วยตนเองเป็นวิธีที่จะไป!
เคล็ดลับ: ใช้ชิ้นส่วนโลหะที่ค่อนข้างหนักบางชิ้นเพื่อให้หุ่นยนต์เคลื่อนที่ได้ง่ายขึ้น
เชื่อมต่อเซอร์โวกับครบกำหนดในกรณีของฉันเชื่อมต่อกับ D39, 41, 43, 45, 47, 49, 51, 53
เชื่อมต่อเซอร์โวกับแหล่งจ่ายไฟ 5V ภายนอก สำหรับสิ่งนี้ ให้สร้างเกราะป้องกันบางชนิด หรือใช้แผงป้องกันเซ็นเซอร์หรือสิ่งที่คล้ายกัน อย่าป้อนเซอร์โวจากขา 5V เนื่องจากไม่เพียงพอ เนื่องจากจะไหม้ ฉันใช้บอร์ดต้นแบบขนาดเล็กเพื่อแจกจ่าย 5 V ไปยังเซอร์โวทั้งหมด บอร์ดนี้ยังมีตัวเลื่อนระดับสำหรับนาฬิกาเมาส์ PS/2 และสายข้อมูล บอร์ดยังป้อนเมาส์ด้วย 5V อย่าลืมเชื่อมต่อกราวด์จากพลังงานภายนอกไปยัง Arduino เนื่องจากกราวด์! แผนผังแสดงวิธีเชื่อมต่อทั้งหมด
ต่อ PS/2 เข้ากับแหล่งจ่ายไฟ (5V) และกราวด์ เชื่อมต่อนาฬิกาและสายข้อมูลของ PS/2 กับ Due ผ่านตัวเลื่อนระดับ (เนื่องจากไป 3.3V, PS/2 เป็น 5V) เชื่อมต่อนาฬิกาบน D12 และข้อมูลบน D13
สำหรับรายละเอียดเกี่ยวกับโปรโตคอล PS/2 นี่เป็นคำแนะนำที่ดีมาก:
www.instructables.com/id/Optical-Mouse-Od…
ห้องสมุด PS/2 โดย jazzycamel ที่ฉันใช้:
ขั้นตอนที่ 2: รหัส
ตอนแรกให้ฉันพูดว่า: ฉันไม่ใช่โปรแกรมเมอร์ บางส่วนมีความกว้างขวางมาก แน่นอนว่าโปรแกรมเมอร์ที่มีทักษะสามารถย่อให้สั้นลงได้ เป็นต้น
รหัสคือการเรียนรู้ด้วยตนเองและนี่คือแกนหลักของโครงการ นี่คือส่วนที่สนุกของมัน! หมายความว่าหุ่นยนต์มีวิวัฒนาการและดีขึ้นเรื่อยๆ ในกรณีนี้ หุ่นยนต์จะคลานได้ดีขึ้น สิ่งที่น่าทึ่งเกี่ยวกับสิ่งนี้คือหุ่นยนต์จะพัฒนาไปเป็นสิ่งที่คุณป้อนกลับเข้าไป ในกรณีนี้ มันจะลากเมาส์ PS/2 และยิ่งลากเมาส์นานเท่าไหร่ แต้มก็จะยิ่งสูงขึ้นเท่านั้น
นี่ก็หมายความว่าคุณสามารถใช้รหัสนี้เพื่อฝึกให้หุ่นยนต์ของคุณทำอย่างอื่นได้ ตราบใดที่มันถูกวัดและป้อนกลับให้หุ่นยนต์!
ดังที่คุณเห็นในภาพ เมาส์ถูกลากบนสายเส้นเล็ก ตอนแรกมันถูกลากในสายเมาส์ อย่างไรก็ตาม สายเคเบิลค่อนข้างแข็ง ดังนั้นหุ่นยนต์จึงเรียนรู้ที่จะเขย่าเมาส์แทนการลาก การสั่นทำให้คะแนนสูง…
รหัสใช้ 50 บุคคล แก่นของสิ่งนี้คืออาร์เรย์ขนาด 50x50 ไบต์
individ คืออาร์เรย์ของไบต์ เมื่อตัวแยกถูกใช้เพื่อเรียกใช้หุ่นยนต์ตัวแยกนี้จะถูกส่งไปยังฟังก์ชันในรหัสที่เรียกว่า "โทลเคน"
ในช่วงเริ่มต้นของการวิ่ง มี 8 ตัวแปร m1, m2, m3, m4, m5, m6, m7 และ m8 (หนึ่งตัวแปรสำหรับแต่ละเซอร์โว) ในหุ่นยนต์ตัวนี้ พวกเขาทั้งหมดมีค่าเริ่มต้นคงที่ ใน "tolken" mś จะถูกแปลงเป็น case/swich loop ขึ้นอยู่กับค่าของ individ ตัวอย่างเช่น ค่าของ "1" ดำเนินการดังต่อไปนี้: m1 = m1 + m2
หากบุคคลคือ: 1, 2, 3, 0, 0, 0, 0….. จากนั้น mś จะถูกแปลงด้วยวิธีต่อไปนี้:
m1 = m1 + m2;
m1 = m1 + m3;
m1 = m1 + m4;
Tolken เป็นรายการการดำเนินการทางคณิตศาสตร์ที่แตกต่างกัน 256 รายการ ดังนั้นทุกค่าที่เป็นไปได้ของอาร์เรย์ individs จะแสดงการเปลี่ยนแปลงทางคณิตศาสตร์ของค่า m
กระบวนการโทลเคนเสร็จสิ้น 4 ครั้ง โดยมีการอ่านค่าระหว่างทุกรอบ สร้างรหัสมอเตอร์ที่แตกต่างกันสี่รหัสสำหรับแต่ละ "m" motorcodes เป็นค่าที่ส่งไปยังเซอร์โวในภายหลัง
ในทุกขั้นตอนของการวิวัฒนาการ บุคคล 4 คนแข่งขันกันในการคลาน บุคคลที่ดีที่สุดสองคนจะเป็นพ่อแม่ของลูกสองคน ลูกจะเข้ามาแทนที่ตัวที่แย่ที่สุดสองคน เมื่อมีการสร้างทารก การประกบกันของ "รหัสพันธุกรรม" จากพ่อแม่คนหนึ่งจะถูกแลกเปลี่ยนเป็นชิ้นๆ จากพ่อแม่อีกคนหนึ่ง ซึ่งจะสร้าง individs ใหม่สองตัว
หากไม่มีบุคคลใดดำเนินการเลย การกลายพันธุ์ของตัวบุคคลจะเกิดขึ้นเพื่อสร้างสิ่งใหม่
คุณสามารถหารหัสได้ที่ GitHub:
ขั้นตอนที่ 3: จะฝึกอย่างไร?
นี่เป็นส่วนที่ยุ่งยาก ในการฝึกซ้อมอย่างถูกต้อง คุณต้อง "รีเซ็ต" ทุกครั้งที่วิ่ง ซึ่งหมายความว่าคุณต้องวางไว้ในตำแหน่งเดิมทุกครั้ง
ฉันได้ใส่จุดตรวจสอบสองสามจุดในโค้ดเพื่อให้แน่ใจว่าหุ่นยนต์อยู่ในตำแหน่งเริ่มต้น
ดังนั้นจัดตำแหน่งหุ่นยนต์และปล่อยให้มันทำงาน
สอบได้ 4 ตัว แล้วเลือก 2 ตัวที่ดีที่สุดมาเป็นพ่อแม่ หลังจากแทนที่ตัวที่แย่ที่สุดด้วยตัวอ่อน มันจะพิมพ์ข้อมูลบางอย่างเกี่ยวกับประสิทธิภาพของตัวอ่อน นอกจากนี้ยังพิมพ์อาร์เรย์ 50x50 ก็ควรที่จะคัดลอกสิ่งนี้ลงในแผ่นงาน Excel หรือที่คล้ายกัน (หรือเขียนโค้ดที่จำเป็นในการประมวลผล) หาก Due ถูกรีเซ็ต (สิ่งนี้เกิดขึ้นจากหลายสาเหตุ) คุณจะไม่สูญเสียงานการฝึกอบรมของคุณ คุณสามารถคัดลอก/วางอาร์เรย์ลงในโค้ดและฝึกฝนต่อไปได้
หุ่นยนต์ของฉันเรียนรู้ที่จะรวบรวมข้อมูลหลังจากผ่านไปสองสามชั่วโมง ดาวน์โหลดวิดีโอเพื่อดูการรวบรวมข้อมูล มันไม่ได้ไปในทางที่ฉันคิด!
ลองชั้นที่แตกต่างกันด้วย! หุ่นยนต์ของฉันทำงานได้ดีที่สุดบนพรมไนลอน
การปรับปรุงที่เป็นไปได้:
1. จะดีกว่าถ้ามีนาโนแยกต่างหากเพื่ออ่านเมาส์ PS/2 และส่งระยะทางที่ประมวลผลที่ย้ายผ่านอนุกรมไปยังนาโน การอ่านเมาส์ PS/2 ของฉันค่อนข้างสั่นคลอน นี่คือสาเหตุของการอ่าน/ล้างส่วนต่างๆ ของโค้ดด้วยเมาส์
2. อุปกรณ์ทดสอบบางประเภทที่ลากหุ่นยนต์กลับไปที่ตำแหน่งเริ่มต้นจะทำให้การฝึกเร็วขึ้น
3. ฉันคิดว่ามันฉลาดที่จะฝึกฝนให้ช้ากว่าที่ฉันทำเล็กน้อย การฝึกอบรมที่ช้าลงทำให้มั่นใจได้ว่าได้รับการฝึกฝน "ไปในทิศทางที่ถูกต้อง" ประสิทธิภาพเฉลี่ยของการทดสอบหลายๆ ครั้งอาจเป็นวิธีที่เป็นไปได้
แนะนำ:
"ไฮไฟว์" หุ่นยนต์ Cardboard Micro:bit: 18 ขั้นตอน (พร้อมรูปภาพ)
"ไฮไฟว์" หุ่นยนต์ Cardboard Micro:bit: ติดอยู่ที่บ้าน แต่ยังต้องการไฮไฟว์ใครสักคน? เราสร้างหุ่นยนต์ตัวน้อยที่เป็นมิตรด้วยกระดาษแข็งและ micro:bit พร้อมด้วย Crazy Circuits Bit Board และทั้งหมดที่เธอต้องการจากคุณคือการไฮไฟว์เพื่อให้ความรักที่เธอมีต่อคุณมีชีวิตอยู่ ถ้าคุณชอบ
หุ่นยนต์ ShotBot: 11 ขั้นตอน
ShotBot Robot: คำแนะนำนี้ถูกสร้างขึ้นเพื่อตอบสนองความต้องการของโครงการ Makecourse ที่มหาวิทยาลัยเซาท์ฟลอริดา (www.makecourse.com)
หุ่นยนต์ Telepresence ขนาดมนุษย์พร้อมแขนจับ: 5 ขั้นตอน (พร้อมรูปภาพ)
หุ่นยนต์ Telepresence ขนาดมนุษย์พร้อมแขนกริปเปอร์: MANIFESTOA ความคลั่งไคล้ของฉันเชิญฉันไปที่งานปาร์ตี้ฮัลโลวีน (30+ คน) ระหว่างการระบาดใหญ่ ดังนั้นฉันจึงบอกเขาว่าฉันจะเข้าร่วมและออกแบบหุ่นยนต์ telepresence เพื่อสร้างความหายนะในงานปาร์ตี้ สถานที่. หากคุณไม่คุ้นเคยกับสิ่งที่โทร
Snap Circuits หุ่นยนต์ Telepresence: 9 ขั้นตอน
Snap Circuits Telepresence Robot: วันหยุดในปี 2020 แตกต่างกันเล็กน้อย ครอบครัวของฉันกระจายอยู่ทั่วประเทศ และเนื่องจากโรคระบาด เราจึงไม่สามารถมารวมตัวกันในช่วงวันหยุดได้ ฉันต้องการวิธีที่จะทำให้ปู่ย่าตายายรู้สึกเหมือนเป็นส่วนหนึ่งในการเฉลิมฉลองวันขอบคุณพระเจ้าของเรา เครื่องโทรสาร
หุ่นยนต์ทรงตัว / หุ่นยนต์ 3 ล้อ / หุ่นยนต์ STEM: 8 ขั้นตอน
หุ่นยนต์ทรงตัว / หุ่นยนต์ 3 ล้อ / หุ่นยนต์ STEM: เราได้สร้างหุ่นยนต์ทรงตัวแบบผสมผสานและ 3 ล้อสำหรับใช้ในการศึกษาในโรงเรียนและโปรแกรมการศึกษาหลังเลิกเรียน หุ่นยนต์นี้ใช้ Arduino Uno, ชิลด์แบบกำหนดเอง (รายละเอียดการก่อสร้างทั้งหมดที่มีให้), ชุดแบตเตอรี่ Li Ion (ข้อจำกัดทั้งหมด