สารบัญ:

การสร้างหุ่นยนต์ปรับสมดุลตนเอง Arduino ควบคุมจากระยะไกล: B-robot EVO: 8 ขั้นตอน
การสร้างหุ่นยนต์ปรับสมดุลตนเอง Arduino ควบคุมจากระยะไกล: B-robot EVO: 8 ขั้นตอน

วีดีโอ: การสร้างหุ่นยนต์ปรับสมดุลตนเอง Arduino ควบคุมจากระยะไกล: B-robot EVO: 8 ขั้นตอน

วีดีโอ: การสร้างหุ่นยนต์ปรับสมดุลตนเอง Arduino ควบคุมจากระยะไกล: B-robot EVO: 8 ขั้นตอน
วีดีโอ: Could this tiny tube of metal fix our broken suspension? - Edd China's Workshop Diaries 28 2024, กรกฎาคม
Anonim
Image
Image
การสร้างหุ่นยนต์ปรับสมดุลตนเอง Arduino ควบคุมจากระยะไกล: B-robot EVO
การสร้างหุ่นยนต์ปรับสมดุลตนเอง Arduino ควบคุมจากระยะไกล: B-robot EVO
การสร้างหุ่นยนต์ปรับสมดุลตนเอง Arduino ควบคุมจากระยะไกล: B-robot EVO
การสร้างหุ่นยนต์ปรับสมดุลตนเอง Arduino ควบคุมจากระยะไกล: B-robot EVO

By jjrobotsjjrobotsติดตามเพิ่มเติมโดยผู้เขียน:

Pybot: Python + แขนหุ่นยนต์พิมพ์ 3 มิติ
Pybot: Python + แขนหุ่นยนต์พิมพ์ 3 มิติ
Pybot: Python + แขนหุ่นยนต์พิมพ์ 3 มิติ
Pybot: Python + แขนหุ่นยนต์พิมพ์ 3 มิติ
จอแสดงผลแบบหมุนด้วยมอเตอร์อย่างง่าย (ตาม Arduino + ควบคุมจากสมาร์ทโฟนของคุณ)
จอแสดงผลแบบหมุนด้วยมอเตอร์อย่างง่าย (ตาม Arduino + ควบคุมจากสมาร์ทโฟนของคุณ)
จอแสดงผลแบบหมุนด้วยมอเตอร์อย่างง่าย (ตาม Arduino + ควบคุมจากสมาร์ทโฟนของคุณ)
จอแสดงผลแบบหมุนด้วยมอเตอร์อย่างง่าย (ตาม Arduino + ควบคุมจากสมาร์ทโฟนของคุณ)
กริปเปอร์แขนหุ่นยนต์
กริปเปอร์แขนหุ่นยนต์
กริปเปอร์แขนหุ่นยนต์
กริปเปอร์แขนหุ่นยนต์

เกี่ยวกับ: เรารักหุ่นยนต์ DIY และวิทยาศาสตร์ที่ตลกขบขัน JJROBOTS ตั้งเป้าที่จะนำโครงการหุ่นยนต์แบบเปิดเข้ามาใกล้ผู้คนมากขึ้นโดยการจัดหาฮาร์ดแวร์ เอกสารประกอบที่ดี คำแนะนำในการสร้าง+รหัส ข้อมูล "วิธีการทำงาน" … ข้อมูลเพิ่มเติมเกี่ยวกับ jjrobots »

-------------------------------------------------

UPDATE: มีหุ่นยนต์รุ่นใหม่และปรับปรุงแล้วที่นี่: B-robot EVO พร้อมคุณสมบัติใหม่

-------------------------------------------------

มันทำงานอย่างไร?

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

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

ขั้นตอนที่ 1: ลึกขึ้นอีกเล็กน้อย…

เจาะลึกมากขึ้น…
เจาะลึกมากขึ้น…
เจาะลึกมากขึ้น…
เจาะลึกมากขึ้น…
เจาะลึกมากขึ้น…
เจาะลึกมากขึ้น…

ปัญหาทางกายภาพที่ B-ROBOT แก้ไขเรียกว่า Inverted Pendulum นี่เป็นกลไกเดียวกับที่คุณต้องทำให้ร่มสมดุลเหนือมือคุณ จุดหมุนอยู่ใต้จุดศูนย์กลางมวลของวัตถุ ข้อมูลเพิ่มเติมเกี่ยวกับ Inverted Pendulum ที่นี่ การแก้ปัญหาทางคณิตศาสตร์ไม่ใช่เรื่องง่าย แต่เราไม่จำเป็นต้องเข้าใจมันเพื่อแก้ปัญหาเรื่องความสมดุลของหุ่นยนต์ สิ่งที่เราจำเป็นต้องรู้คือควรทำอย่างไรเพื่อคืนความสมดุลของหุ่นยนต์ เพื่อให้เราสามารถนำอัลกอริธึมการควบคุมไปใช้เพื่อแก้ไขปัญหาได้

ระบบควบคุมมีประโยชน์มากในวิทยาการหุ่นยนต์ (ระบบอัตโนมัติทางอุตสาหกรรม) โดยทั่วไปเป็นรหัสที่ได้รับข้อมูลจากเซ็นเซอร์และคำสั่งเป้าหมายเป็นอินพุตและสร้างสัญญาณเอาต์พุตเพื่อขับเคลื่อนตัวกระตุ้นหุ่นยนต์ (มอเตอร์ในตัวอย่างของเรา) เพื่อควบคุมระบบ เรากำลังใช้ตัวควบคุม PID (สัดส่วน + อนุพันธ์ + อินทิกรัล) การควบคุมประเภทนี้มี 3 ค่าคงที่ในการปรับ kP, kD, kI จากวิกิพีเดีย: “ตัวควบคุม PID คำนวณค่า 'ข้อผิดพลาด' เป็นความแตกต่างระหว่าง [อินพุต] ที่วัดได้และค่าเซ็ตพอยต์ที่ต้องการ ตัวควบคุมพยายามลดข้อผิดพลาดโดยการปรับ [เอาต์พุต]” ดังนั้น คุณบอก PID ว่าจะวัดอะไร ("อินพุต") ที่คุณต้องการให้การวัดนั้นเป็น ("จุดตั้งค่า",) และตัวแปรที่คุณต้องการปรับเพื่อให้เกิดขึ้น ("เอาต์พุต")

จากนั้น PID จะปรับเอาต์พุตที่พยายามทำให้อินพุตเท่ากับค่าที่ตั้งไว้ สำหรับการอ้างอิง ถังเก็บน้ำที่เราต้องการเติมให้ถึงระดับ Input, Setpoint และ Output จะเป็นระดับตามเซ็นเซอร์ระดับน้ำ ระดับน้ำที่ต้องการ และน้ำที่สูบเข้าไปในถัง kP คือส่วนตามสัดส่วนและเป็นส่วนหลักของตัวควบคุม ส่วนนี้เป็นสัดส่วนกับข้อผิดพลาด kD คือส่วนอนุพันธ์และนำไปใช้กับอนุพันธ์ของข้อผิดพลาด ส่วนนี้ขึ้นอยู่กับไดนามิกของระบบ (ขึ้นอยู่กับหุ่นยนต์, มอเตอร์น้ำหนัก, ความเฉื่อย…) อันสุดท้าย ki ถูกนำไปใช้กับอินทิกรัลของข้อผิดพลาดและใช้เพื่อลดข้อผิดพลาดคงที่ มันเหมือนกับการตัดแต่งบนเอาต์พุตสุดท้าย (ลองนึกถึงปุ่มตัดแต่งบนพวงมาลัยรถ RC เพื่อให้รถตรงทั้งหมด kI ลบออฟเซ็ตระหว่างเป้าหมายที่ต้องการกับค่าจริง)

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

ขั้นตอนที่ 2: แล้วรีโมทคอนโทรลล่ะ?

"กำลังโหลด="ขี้เกียจ"

แนะนำ: