มีวิธีใดบ้างในการจัดการกับความล่าช้าของเข็มทิศ (hysteresis ขึ้นอยู่กับอัตรา)?


12

ฉันมีหุ่นยนต์ที่ใช้ดอกยางโดยมีตัวเข้ารหัสล้อที่มีความแม่นยำต่ำสำหรับการติดตามระยะทางและเข็มทิศอิเล็กทรอนิกส์เพื่อกำหนดหัวเรื่อง เข็มทิศมีความล่าช้าอย่างมีนัยสำคัญ (> 1 วินาที) เมื่อหุ่นยนต์หมุนอย่างรวดเร็วเช่นหลังจากไปถึงจุดอ้างอิงแล้ว - เปลี่ยนตำแหน่งเพื่อชี้ไปยังส่วนหัวใหม่

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

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

คำตอบ:


12

ความล่าช้าในเข็มทิศเป็นเพราะฟิลเตอร์กรองความถี่ต่ำเพื่อลดเสียงรบกวนความถี่สูง

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

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

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

    θ (T)Tθที

    θ^(t)=a0θ(t)+a1θ(t1)++akθ(tk)
    โดยที่เป็นหัวเรื่องโดยประมาณ (เอาท์พุทเข็มทิศ) ที่ เวลา ,เป็นหัวข้อที่เกิดขึ้นจริง (พื้นดินความจริง) ในขณะทีθ^(t)tθt

    คุณสามารถค้นหาพารามิเตอร์โดยทำการทดสอบที่คุณวัดความจริงพื้นฐานโดยใช้วิธีภายนอกอื่น เมื่อรับตัวอย่างคุณมีสมการนี้: n + k + 1 [ θ ( k ) θ ( k + n ) ] = [ θ ( k ) θ ( k - 1 ) θ ( 0 ) ain+k+1

    [θ^(k)θ^(k+n)]=[θ(k)θ(k1)θ(0)θ(k+n)θ(k+n1)θ(n)][a0a1ak]

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

    [a0a1ak]=[θ(k)θ(k1)θ(0)θ(k+n)θ(k+n1)θ(n)]+[θ^(k)θ^(k+n)]
    M+Mk

    คุณสามารถแปลงเป็นฟังก์ชันถ่ายโอน (หรือที่เรียกว่า Z-transform ในโดเมนเวลาไม่ต่อเนื่อง):

    Θ^(z)Θ(z)=a0+a1z1+...+akzk

    หากต้องการยกเลิกสิ่งนี้เราสามารถใช้อินเวอร์ส (โดยที่เป็นค่าประมาณส่วนหัวใหม่ของเรา):θ¯(t)

    Θ¯(z)Θ^(z)=1a0+a1z1++akzk

    การแปลงกลับเป็นโดเมนเวลา:

    a0θ¯(t)+a1θ¯(t1)++akθ¯(tk)=θ^(t)

    θ¯(t)=θ^(t)a1θ¯(t1)akθ¯(tk)a0

    จากนั้นเราสามารถใช้เพื่อควบคุมหุ่นยนต์θ¯

    นี่จะมีเสียงดังมากดังนั้นคุณอาจต้องการที่จะใส่ผ่านตัวกรอง low-pass ก่อนการใช้งาน (แม้ว่าอาจจะมีความล่าช้าน้อยกว่า)θ¯

  2. การแก้ปัญหาข้างต้นยังคงไม่ใช่วิธีที่ดีที่สุด การประมาณการที่มีเสียงดังอาจไม่มีประโยชน์มาก ถ้าเราใส่สิ่งนี้ลงในสมการของสเปซพื้นที่เราสามารถออกแบบตัวกรองคาลมานและตัวควบคุมผลป้อนกลับแบบเต็มรัฐโดยใช้ LQR (linear quadratic regulator) การรวมกันของตัวกรองคาลมานและตัวควบคุม LQR ยังเป็นที่รู้จักกันในนามของตัวควบคุม LQG (เกาส์เชิงเส้นกำลังสองเชิงเส้น) และใช้การกู้คืนแบบวนรอบเพื่อรับตัวควบคุมที่ดี

    เมื่อต้องการทำสิ่งนี้ให้สร้างสมการสถานะพื้นที่ (ไม่ต่อเนื่อง):

    x(t)=Ax(t1)+Bu(t1) ,y(t)=Cx(t)

    หรือ:

    x(t)=[θ(t)θ(t1)θ(tk)]=[A1A200010000010000010000010]x(t1)+[B0B1000]u(t1)

    y(t)=[θ^(t)]=[a0a1ak]x(t)

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

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

    หลังจากนั้นคุณสามารถออกแบบตัวควบคุม LQR ได้ในเวลานี้เลือกและแสดงน้ำหนักที่กำหนดให้กับการควบคุมหัวเรื่องและพยายาม จำกัด การใช้ในกรณีนี้คุณอาจเลือกและขวา] สิ่งนี้ทำได้เนื่องจาก LQR ค้นหาคอนโทรลเลอร์ที่ดีที่สุดเพื่อลดฟังก์ชั่นลดต้นทุน:QcRcQc=[100000000000]Rc=[1]J=(xTQx+uTRu)

    จากนั้นคุณเพียงแค่ใส่มันผ่านสมการพีชคณิต Riccati ที่ไม่ต่อเนื่อง:

    P=Q+AT(PPB(R+BTPB)1BTP)A

    และแก้ปัญหาเป็นบวกแน่นอนเมทริกซ์PP

    ดังนั้นกฎหมายควบคุมของคุณสามารถมอบให้โดย:

    u(t)=K(x(t)xref(t))

    โดยที่K=(R+BTPB)1(BTPA)

    ในที่สุดการทำเช่นนี้จะไม่ได้ผลดีมากและมีแนวโน้มที่จะไม่เสถียรเนื่องจากเสียงดัง ที่จริงนั่นหมายถึงตัวเลือกที่ 1 อาจไม่ทำงานเว้นแต่คุณจะใส่ผ่านตัวกรอง low-pass (แม้ว่าจะไม่จำเป็นต้องใช้เวลาหน่วงเวลานานก็ตาม) นี่เป็นเพราะในขณะที่ LQR รับประกันความเสถียรทันทีที่คุณใช้ตัวกรอง Kalman การรับประกันจะหายไปθ¯

    ในการแก้ไขปัญหานี้เราใช้เทคนิคการถ่ายโอนแบบวนรอบซึ่งคุณปรับตัวกรองคาลมานแล้วเลือกโดยที่เป็นเมทริกซ์ต้นฉบับของคุณปรับเพื่อให้ตัวกรองคาลมานเหมาะสมที่สุด . คือเมทริกซ์สมมาตรเชิงบวกที่แน่นอนใด ๆ ซึ่งคุณสามารถเลือกได้ว่าเป็นเมทริกซ์เอกลักษณ์ ( ) จากนั้นเพียงแค่เลือกเกลาQคอนโทรลเลอร์ที่เป็นผลลัพธ์ควรมีเสถียรภาพมากขึ้นเมื่อแม้ว่าเมทริกซ์จะไม่ถูกปรับซึ่งหมายความว่ามันจะเหมาะสมที่สุดน้อยกว่าQ 0 Q V V = I q q Q oQo=Q0+q2BVBTQ0QVV=IqqQo

    ดังนั้นคุณเพียงเพิ่มจนกว่ามันจะเสถียร อีกวิธีหนึ่งที่คุณสามารถทำให้เสถียรคือเพิ่ม (หรือลด ) เพื่อทำให้คอนโทรลเลอร์ LQR ช้าลงR c Q cqRcQc

แนวคิดในบทความนี้มีความก้าวหน้าค่อนข้างมาก แต่ถ้าคุณต้องการแก้ปัญหาอย่างสมการ Riccati คุณสามารถใช้ MATLAB หรือซอฟต์แวร์อื่นเพื่อทำสิ่งนี้ อาจมีห้องสมุดที่ใช้ตัวกรองคาลมานอยู่แล้ว (ฉันเชื่อว่า MATLAB ทำเช่นนี้ด้วย)

สำหรับแอปพลิเคชันแบบฝังคุณอาจต้องใช้ตัวกรองคาลมานเองแม้ว่าอาจมีการติดตั้ง C ก็ตาม


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

4

ไจโรคือคำตอบง่ายๆ ฉันได้ยินมาเสมอวงแหวนสำหรับการวัดระยะสั้นเข็มทิศสำหรับความยาว และตัวกรองคอลแมนหนึ่งถ้วยที่แนบสนิทกันระหว่างเวลาส่วนใหญ่สองส่วน ราคาของบอร์ด gyro / acc 6DOF น้อยกว่า $ 20 วันนี้ราคาถูกเกินไปที่จะไม่ใช้

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

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