การเลือกมาตรความเร่งสำหรับการคำนวณซ้ำ


11

ฉันไม่เคยใช้ accelerometer มาก่อน แต่ฉันรู้ว่าพวกเขามาพร้อมกับ I2C, SPI และเอาต์พุตแบบอะนาล็อก หากฉันเลือกใช้ I2c หรือ SPI อุปกรณ์ฉันจะสะสมข้อผิดพลาดเนื่องจากเวลาในการสื่อสารหรือไม่

การสุ่มตัวอย่างอย่างรวดเร็วของสัญญาณอะนาล็อกน่าจะทำให้ฉันได้ตำแหน่งที่ถูกต้องแม่นยำกว่าการใช้ I2C หรือไม่?

สิ่งนี้จะเป็นจริงหรือไม่

  1. หุ่นยนต์เคลื่อนที่ในห้อง
  2. หุ่นยนต์เคลื่อนที่ในภูมิประเทศกลางแจ้งและมีแนวโน้มว่าจะลื่นและกลิ้งลงมาตามทางลาด

นอกจากนี้ฉันไม่มีความรู้สึกของ Gs ฉันพยายามที่จะย้ายมือของฉันไปรอบ ๆ ได้อย่างรวดเร็วด้วยโทรศัพท์ของฉันทำงาน Andro เซ็นเซอร์ในกำปั้นและเห็นของฉันที่อ่านอิ่มตัวที่ 20m / s 2 ฉันจะคาดหวังได้อย่างไรว่าหุ่นยนต์ของฉันจะได้สัมผัสกับหุ่นยนต์ตัวนี้ถ้าโดนหุ่นยนต์ตัวอ้วนเคลื่อนที่หรือโดนคนเดินเร็ว ๆ

คำตอบ:


5

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

เมื่อพิจารณาถึงแรง G แล้วพิจารณาว่า 1 G คือ 9.81 m / s ^ 2 ซึ่งดูเหมือนจะเป็นเรื่องที่ดีสำหรับฉันในบริบทของหุ่นยนต์อดิเรกขนาดเล็กอย่างน้อยก็สำหรับหุ่นยนต์ในร่ม กลางแจ้งอาจเป็นเรื่องที่แตกต่างกันขึ้นอยู่กับว่าเครื่องยนต์ของคุณทรงพลังแค่ไหน ความอิ่มตัวที่ 20m / s ^ 2 ควรเพียงพอ


4

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

ดังนั้นแต่ละเฟรมควบคุมจะใช้เวลา 1,000us ภายในกรอบควบคุมนี้คุณต้อง:

  • ตัวอย่างเซ็นเซอร์ของคุณ
  • ทำการคำนวณการควบคุม
  • ส่งเอาต์พุตใหม่ไปยังมอเตอร์

ตราบใดที่คุณสามารถทำสิ่งเหล่านี้ได้อย่างสะดวกภายในเวลาที่กำหนดคุณก็ไม่มีปัญหา ดังนั้นใช้เวลานานแค่ไหนในการอ่านมาตรความเร่ง หากเป็นอุปกรณ์ 3 แกนโดยใช้ 400kbps I2C อาจใช้เวลาประมาณ 160us ในการอ่านข้อมูล นั่นจะทำให้คุณ 840us ทำการคำนวณและอัพเดทมอเตอร์ แม้แต่ PIC ขนาด 8 บิตก็สามารถจัดการได้


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


1

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

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