สารบัญ:

SnappyXO หุ่นยนต์ผู้เสนอญัตติที่แม่นยำ: 6 ขั้นตอน
SnappyXO หุ่นยนต์ผู้เสนอญัตติที่แม่นยำ: 6 ขั้นตอน

วีดีโอ: SnappyXO หุ่นยนต์ผู้เสนอญัตติที่แม่นยำ: 6 ขั้นตอน

วีดีโอ: SnappyXO หุ่นยนต์ผู้เสนอญัตติที่แม่นยำ: 6 ขั้นตอน
วีดีโอ: Introducing SnappyXO: Crowdfunding Campaign 2024, พฤศจิกายน
Anonim
SnappyXO หุ่นยนต์ผู้เสนอญัตติที่แม่นยำ
SnappyXO หุ่นยนต์ผู้เสนอญัตติที่แม่นยำ

ทำให้หุ่นยนต์ Arduino ของคุณเดินตรงไปยังระยะทางที่กำหนดหรือบิดเป็นมุมที่กำหนดโดยใช้ไลบรารี PreciseMovement Arduino

หุ่นยนต์ต้องการลูกกลิ้งลูกกลิ้งหรือเทียบเท่าเพื่อลดแรงเสียดทานขณะบิด

www.pololu.com/product/954

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

สิ่งนี้ได้รับการทดสอบเพื่อทำงานกับหุ่นยนต์ SnappyXO

ขั้นตอนที่ 1: เปลี่ยนตำแหน่งการสอน

กวดวิชาถูกย้ายไปที่หน้าด้านล่าง บทแนะนำนี้ไม่ได้รับการดูแลอีกต่อไป

sites.google.com/stonybrook.edu/premo

ขั้นตอนที่ 2: สร้าง SnappyXO Differential Drive Robot

ไลบรารี PreciseMovement ที่เราจะใช้นั้นเข้ากันได้กับหุ่นยนต์ขับเคลื่อนส่วนต่างเท่านั้น คุณสามารถเลือกใช้หุ่นยนต์ขับเคลื่อน 2 ล้อตัวอื่นๆ ได้

ขั้นตอนที่ 3: เชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์

เชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์
เชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์

สำหรับตัวเข้ารหัสออปติคัล SnappyXO มาตรฐาน:

D0 (เอาต์พุตตัวเข้ารหัส) -> Arduino Digital Pin

VCC -> Arduino 5V

GND -> GND

กำลังมอเตอร์และ Arduino:

แหล่งพลังงานของมอเตอร์ควรเพียงพอสำหรับมอเตอร์ที่คุณใช้งาน สำหรับชุด SnappyXO นั้นจะใช้แบตเตอรี่ 4AA สำหรับกำลังมอเตอร์และแบตเตอรี่ 9V สำหรับพลังงาน Arduino ตรวจสอบให้แน่ใจว่าพวกเขาทั้งหมดมี GND ร่วมกัน

ขั้นตอนที่ 4: ติดตั้ง PreciseMovement Arduino Library

ดาวน์โหลด:

github.com/jaean123/PreciseMovement-library/releases

วิธีการติดตั้ง Arduino Library:

wiki.seeedstudio.com/How_to_install_Arduino_Library/

ขั้นตอนที่ 5: รหัส

รหัส Arduino:

create.arduino.cc/editor/whileloop/7a35299d-4e73-409d-9f39-2c517b3000d5/preview

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

  • ตรวจสอบและตั้งหมุดมอเตอร์ภายใต้ ARDUINO PINS
  • ตั้งค่า LENGTH และ RADIUS

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

    • โปรดทราบว่าสิ่งนี้แตกต่างจากจำนวนพัลส์ที่เอาท์พุตของตัวเข้ารหัสสำหรับการหมุนเพลามอเตอร์หนึ่งครั้ง เว้นแต่ว่าตัวเข้ารหัสจะเชื่อมต่อเพื่ออ่านโดยตรงจากเพลาล้อ
    • PULSES_PER_REV = (พัลส์ต่อหนึ่งรอบการหมุนของเพลามอเตอร์) x (อัตราทดเกียร์)
  • ตั้งค่า STOP_LENGTH หากคุณเห็นว่าหุ่นยนต์กำลังยิงเกินหลังจากเคลื่อนที่ไปข้างหน้า

    หุ่นยนต์จะหยุดเมื่อตำแหน่งโดยประมาณอยู่ห่างจากเป้าหมาย STOP_LENGTH ดังนั้น STOP_LENGTH คือระยะทางโดยประมาณที่จำเป็นสำหรับหุ่นยนต์ในการหยุด

  • พารามิเตอร์ PID

    KP_FW: นี่คือองค์ประกอบตามสัดส่วนของการเคลื่อนที่ไปข้างหน้า เพิ่มสิ่งนี้จนกว่าหุ่นยนต์จะตรงไป หากคุณไม่สามารถทำให้มันตรงโดยการปรับแต่งนี้ แสดงว่าฮาร์ดแวร์น่าจะมีปัญหา (เช่น ล้อไม่ตรง ฯลฯ)

    KP_TW: นี่คือองค์ประกอบตามสัดส่วนของ PID การเคลื่อนที่แบบบิด เพียงเริ่มจากค่าต่ำและเพิ่มความเร็วนี้จนกว่าความเร็วบิดหรือความเร็วเชิงมุมของหุ่นยนต์ขณะบิดจะเร็วพอ แต่ไม่ทำให้เกิดการโอเวอร์โหลด ในการสังเกตการณ์ คุณสามารถให้หุ่นยนต์สลับจาก 0 ถึง 90 และย้อนกลับโดยใส่สิ่งต่อไปนี้ในฟังก์ชันวนรอบ

วางสิ่งนี้ในลูปเพื่อปรับแต่ง KP_FW:

ผู้เสนอญัตติไปข้างหน้า (99999);

วางสิ่งนี้ในลูปเพื่อสลับจาก 0 ถึง 90 เพื่อปรับแต่ง KP_TW:

ผู้เสนอญัตติบิด (90); // บิด 90 CW

ล่าช้า (2000);

ผู้เสนอญัตติบิด (-90) // บิด 90 CCW

ล่าช้า (2000);

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

ขั้นตอนที่ 6: มันทำงานอย่างไร

หากคุณอยากรู้ว่ามันทำงานอย่างไรอ่านต่อ

การเคลื่อนที่ไปข้างหน้าจะคงเส้นตรงโดยใช้อัลกอริธึมการไล่ตามที่แท้จริงบนเส้นทางเส้นตรง ข้อมูลเพิ่มเติมเกี่ยวกับ Pure Pursuit:

ตัวควบคุม twist PID จะพยายามรักษาความเร็วเชิงมุมของการหมุนไว้ที่ TARGET_TWIST_OMEGA โปรดทราบว่าความเร็วเชิงมุมนี้เป็นความเร็วเชิงมุมของหุ่นยนต์ทั้งหมด ไม่ใช่ล้อ ใช้คอนโทรลเลอร์ PID เพียงตัวเดียวและเอาต์พุตคือความเร็วในการเขียน PWM ของมอเตอร์ทั้งซ้ายและขวา การคำนวณที่ตายแล้วจะทำเพื่อคำนวณมุม เมื่อมุมถึงเกณฑ์ข้อผิดพลาด หุ่นยนต์จะหยุด

แนะนำ: