ฉันจะปรับพารามิเตอร์ PID โดยอัตโนมัติได้อย่างไร


15

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

หุ่นยนต์ของฉันเป็นแขนที่มีน้ำหนักเบาพร้อมมอเตอร์ไฟฟ้าแบบขับเคลื่อนกลับได้ซึ่งคล้ายกับอันนี้:

แขนหุ่นยนต์น้ำหนักเบา

แขนทำหน้าที่หลายอย่างรวมถึงการยกน้ำหนักหนักผลักและดึงวัตถุข้ามโต๊ะ งานเหล่านี้แต่ละงานต้องการพารามิเตอร์การปรับค่า PID ที่แตกต่างกันซึ่งฉันไม่สามารถคาดเดาได้ง่าย

สิ่งที่ฉันต้องการสำหรับฟังก์ชั่นระดับที่สูงขึ้นซึ่งสามารถปรับพารามิเตอร์อย่างระมัดระวังเพื่อตอบสนองต่อพฤติกรรมของแขน ตัวอย่างเช่นหากสังเกตว่าแขนกำลังสั่นอาจลด P และเพิ่ม D หรือถ้าสังเกตว่าแขนไม่ถึงเป้าหมายมันอาจเพิ่ม I

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

คำตอบ:


10

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

หรือในวิกิพีเดียพูด:

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

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

ภาพเคลื่อนไหวของ Nelder-Mead

Nedler-Mead ทำงานได้ดีที่สุดในกรณีของเราเพราะมันสามารถไล่ล่าเซต นี่เป็นสิ่งสำคัญเนื่องจากเป้าหมายปัจจุบันของเราเปลี่ยนไปเมื่อความต้องการแรงบิดเพิ่มขึ้น

เทคนิค Nelder – Mead เป็นวิธีการค้นหาแบบฮิวริสติกที่สามารถมาบรรจบกันเป็นจุดที่ไม่หยุดนิ่ง


คุณสามารถเชื่อมโยงวิธีการและผลลัพธ์ของคุณได้ไหม
SPRajagopal

@SPRajagopal ขออภัย แต่ไม่ใช่ ฉันไม่ทำงานกับ บริษัท นั้นอีกต่อไปและไม่สามารถเข้าถึงข้อมูลใด ๆ ได้
embedded.kyle

4

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

แก้ไขเพื่อตอบสนองต่อการสืบค้น @Rocketmagnets:

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

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


คุณช่วยอธิบายวิธีการได้ไหม?
Rocketmagnet

1
ฉันสงสัยว่าฉันสามารถทำได้อย่างยุติธรรมเพราะฉันเพิ่งเรียนรู้วิธีการนี้มาไม่นาน Furhtermore ไม่ใช่วิธีการเดียว แต่เป็นการรวบรวมเทคนิคที่ได้รับการพัฒนาในช่วง 50 ปีที่ผ่านมา อย่างไรก็ตามฉันจะแก้ไขคำตอบของฉันให้ละเอียดยิ่งขึ้นอีกเล็กน้อย
DaemonMaker

2

กระบวนการที่คุณอธิบายนั้นเรียกว่า PID แบบปรับตัว

ดูเหมือนว่าชนิดของ overkill ฉันพบว่า PID นั้นค่อนข้างแข็งแกร่งเมื่อต้องเผชิญกับการรบกวนจากภายนอกและงานที่คุณอธิบายนั้นดูจะไม่เกินความสามารถของกำไรชุดเดียว


สิ่งเหล่านี้เป็นมากกว่าสิ่งรบกวนภายนอก นี่คือการเปลี่ยนแปลงในลักษณะของข้อต่อ ยกตัวอย่างเช่นการเพิ่มมวลของหุ่นยนต์นำไปสู่การเกินขนาด
Rocketmagnet
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.