سؤال

أقوم ببناء روبوت متوازن باستخدام نظام NXT الخاص بـ LEGO MindStorm. أنا أستخدم مستشعرين من Hitechnic ، الأول هو مقياس التسارع والثاني هو جيروسكوب. لقد نجحت في تصفية الضوضاء من كل من المستشعرات والزوايا المشتقة لكل من النطاق بين -90 و 90 درجة ، مع وجود 0 درجة متوازنة تمامًا.

التحدي التالي هو الجمع بين كل من قيم المستشعر لتصحيح الانجراف الجيروسكوب بمرور الوقت. فيما يلي مثال على الرسم البياني الذي قمت بإنشائه من البيانات الفعلية لإظهار الانجراف من الجيروسكوب:

enter image description here

النهج الأكثر استخدامًا الذي رأيته لجعل الجمع بين هذه المستشعرات الصخرية الصلبة هو استخدام مرشح Kalman. ومع ذلك ، لست خبيراً في حساب التفاضل والتكامل ولا أفهم حقًا الرموز الرياضية ، فأنا أفهم الرياضيات في كود المصدر.

أنا أستخدم Robotc (وهو مثل أي مشتق C) وسأقدر حقًا إذا كان بإمكان شخص ما أن يعطيني أمثلة على كيفية تحقيق ذلك في C.

شكرا لك على مساعدتك!

نتائج الحل:

حسنًا ، حل Kersny مشكلتي من خلال تعريفني بالمرشحات التكميلية. هذا رسم بياني يوضح نتائجي:

النتيجة رقم 1

enter image description here

النتيجة رقم 2

enter image description here

كما ترون ، يصحح المرشح للانجراف الجيروسكوبي ويجمع بين كلتا الإشارات في إشارة سلسة واحدة.

يحرر: نظرًا لأنني كنت أقوم بإصلاح الصور المكسورة على أي حال ، فقد اعتقدت أنه سيكون من الممتع إظهار الحفارة التي اعتدت عليها إنشاء هذه البيانات:

enter image description here

هل كانت مفيدة؟

المحلول

مرشحات Kalman رائعة وجميعها ، لكنني أجد أن المرشح التكميلي أسهل في التنفيذ بنتائج مماثلة. أفضل المقالات التي وجدتها لترميز مرشح تكميلي هذا الويكي (جنبا إلى جنب مع هذه المقالة حول تحويل المستشعرات إلى الوحدات الهندسية) و PDF في ملف ZIP ON هذه الصفحة (ضمن الوثائق الفنية ، أعتقد أن اسم الملف في ZIP هو filter.pdf) ؛

ملاحظة. إذا تمسكك على مرشح Kalman ، هنا هو بعض رمز C-syntax لـ Arduino الذي ينفذها.

نصائح أخرى

gamasutra.com جرى مقال حول استخدام مرشحات Kalman لتصفية Wiimote.

هناك بعض الروابط إلى رمز المصدر C ++ في نهاية المقالة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top