Introduction to Kalman Filtering

  |   Source

مقدمة

هذه المقالات (كل المصنفة بفئة مرشح كالمان) هي ترجمة مع اختصار لما ورد في الدروس مفتوحة المصدر هنا

مرشحات كالمان وبيزيان:

الحساسات ذات ضجيج , والعالم مليء بالبيانات والاحداث التي نريد تعقبها وقياسها، , ولكن لا يمكننا الاعتماد فقط على الحساسات لأعطائنا المعلومة المثالية ، ال GPS في سيارتي يدل على الارتفاع. وكل مرة أمر بجانب نفس النقطة على الطريق بالسيارة فهو يعطيني قراءة مختلفة قليلاً. وميزان المطبخ لدي يعطي قراءات مختلفة لنفس الجسم إذا أعدت وزنه مجدداً

بحالات بسيطة الحل واضح، إذا أعطى المقياس قراءات مختلفة يمكن لنا ببساطة القياس عدة مرات ومن ثم أخذ المتوسط ، أو يمكن استبداله مع مقياس أكثر دقة ، ولكن ما العمل من أجل الحساس شديد الضجيج أو البيئة الصعبة لقياس المقادير ، ربما نريد قياس أرتفاع طائرة محلقة ، أو ربما نريد إنشاء سائق آلي للطائرة المروحية أو التأكد من أن التراكتور بذر الحقل كله. إنني أعمل بمجال رؤية الحاسب وعلي ملاحقة الأجسام بالصور ، وخوارزميات رؤية الحاسب تنشأ بيانات غير موثوقة وكثيرة الضجيج.

هذه الدروس ستعلمك كيف تحل كل مسائل الترشيح تلك ، حيث أن هذه الخوارزميات كلها قائمة على الاحتمالية البيزيانية Bayesian probability . بعبارة بسيطة هذه الاحتمالية تحدد ما يمكن أن يكون صحيحاً بناءً على معلومات مسبقة.

إذا سألتك الآن ما هي وجهة سيارتي , فإنك لن تعرف مطلقاً وستخمن رقماً بين 1 و 360 درجة ، واحتمال أن تكون إجابتك صحيحة هو 1 من 360 . ولكن إذا أخبرتك أن سيارتي كانت موجهة بزاوية 243 درجة منذ ثانيتين وهذا الوقت غير كاف لتستدير سيارتي كثيراً . هكذا سيكون تنبؤك أكثر دقة بكثير .

وبالتالي فإنك تستخدم معلومات من الماضي لاستنباط معلومات أدق حول المستقبل أو الحاضر.

فلنقل أننا نتعقب جسماً , وقراءات الحساس لدينا تقول أنه غير اتجاهه، . هل غير اتجاهه بالفعل أم أنها بيانات ضجيج؟ هذا نسبي. فلو كانت طائرة سنميل كثيراً للتصديق أنه التفاف مفاجئ. أما لو كان هذا الجسم قطاراً على سكة فسنحذف احتمال التفافه مطلقاً. وأيضاً قد نغير رأينا بمدى دقة هذا الحساس أساساً . فمعرفتنا ستعتمد على الماضي وعلى فهمنا للنظام الذي نتعقيه وخصائص الحساس أيضاً.

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

إذا أحتوت المسألة على بيانات زمنية أو حساسات فغالباً هناك مرشح كالمان أو قريب له قيد الاستخدام فيها

الحافز وراء هذا الكتاب

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

هناك كتب رائعة بالمجال مثل : Grewal and Andrew's kalman Filtering . ولكن الجلوس لقراءة هذه الكتب يصعب جداً إذا لم تكن لديك الخلفية المناسبة , حيث الفصول الأولى غالباً تحلق بك في عدة سنوات من الرياضيات الجامعية , وتشير دائماً إلى مراجع التفاضل والتكامل ، وتعرض ما يستحق أن يُشرح في فصل كامل عن الإحصاء ضمن عدة فقرات فقط . إنها كتب للدراسات العليا أو الجامعية ومراجع لا غنى عنها للباحثين ، ولكنها صعبة حقاً للقارئ العادي .

التسميات تختلف من مرجع لآخر , لنفس المقادير ، ويتم تقديم المقادير الجديدة بدون أي شرح ، كما أن العلاقات تتعقد بدون أي مثال واقعي لما تعنيه كل تلك العلاقات .

كتبت هذا الكتاب لحل كل تلك المشاكل . هذا الكتاب ليس الوحيد الذي عليك أخذه إذا قررت تصميم رادارات عسكرية . أحصل على الماجستير أو الدكتوراه بمدرسة عريقة ، لأن هذا ما تحتاجه. هذا الكتاب للهواة ، الفضوليين ، والمهندس العامل الذي يرغب بترشيح وتنعيم البيانات

هناك تمارين مرافقة، مع الحلول . حاول حل التمارين قبل النظر للحلول

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

التنصيب والمستلزمات البرمجية:

المكتبات التي ستحتاجها هي التالية ، ويمكن تنصيبها مع python2.7 أو python3.4+ :

  • IPython 3.0

  • Numpy

  • SciPy

  • SymPy

  • Matplotlib

  • FilterPy

أسهل طريقة لتصيب السابق كله(ما عدا FilterPy) ، هو تنصيب توزيعة بايثون علمية مجانية مثل Anaconda

أما لتنصيب FilterPy فما عليك إلا كتابة الأمر التالي في سطر الأوامر:

pip install filterpy

Comments powered by Disqus