همونطور که میدانید بحث تخمینگر (Estimator) یا رویتگر (Observer) نه تنها در مهندسی کنترل (Control Engineering) و مهندسی برق (Electrical Engineering)، بلکه در تمامی رشتههای مهندسی و حتی غیر مهندسی از جمله مهندسی مکانیک (Mechanical Engineering)، مهندسی شیمی (Chemical Engineering)، مهندسی هوافضا (Aerospace Engineering)، روباتیک (Robotics)، اقتصاد (Economics)، بومشناسی (Ecology) و زیستشناسی (Biology) کاربرد فراوانی دارد. از طرف دیگر، فیلتر کالمن (Kalman Filter) به عنوان یک تخمینگر بهینه پرکاربردترین و محبوبترین رویتگر در تمامی کاربردهاست که مقالات و کتابهای بسیاری در مورد آن نوشته شده و هنوز هم کارهای تحقیقاتی زیادی در مورد آن انجام میشود. البته بحث تخمین به فیلتر کالمن و مشتقات آن محدود نشده و تخمینگرهای زیاد دیگری هم وجود دارند که استفاده میشوند.
من به عنوان یک مهندس کنترل در درسهای مختلفی که گذراندهام، به صورت جسته گریخته با یک سری اطلاعات گسسته در مورد تخمینگرها مواجه شدم؛ از جمله بحث رویتگرهای لیونبرگر در درس کنترل مدرن یا فیلتر کالمن در درس کنترل فرآیندهای اتفاقی، اما هیچوقت به صورت منظم و سازمان یافته تخمینگرها را نشناختم. بنابراین قصد دارم در این سری فیلمها، سیر تا پیاز تخمینگرها، انواع، کاربردها، نحوه تحلیل و طراحی، نحوه پیادهسازی در متلب و هر چیزی که ممکن است در این مسیر مورد نیاز باشد، خدمت شما تقدیم کنم.
برای این کار یکی از کتابهای خیلی خوب و جامع را به عنوان مرجع اصلی این سری فیلمها در نظر گرفتم. نام کامل این کتاب “تخمینگرهای بهینه حالت، کالمن، ∞H و روشهای غیرخطی” بوده و نویسند آن Dan Simon از دانشگاه کلیولند است. این کتاب مزایای زیادی دارد که در جلسه اول به بعضی از آنها اشاره کردهام. علاوه بر این کتاب که جنبه تئوری بحث را از آن دنبال میکنم، یک تولباکس (بر اساس متلب) رایگان و خیلی مفید را خدمت شما معرفی میکنم که شامل بسیاری از روشهای موجود بوده و از آن میتوان برای پیادهسازی اکثر تخمینگرها استفاده کرد. نام این تولباکس “فیلترینگ بهینه با استفاده از فیلترهای کالمن و اسموترها” بوده و تهیه کننده اصلی آن Simo Sarkka از دانشگاه آلتو فنلاند است که خودش در زمینه فیلتر کالمن و هموارسازها تحقیقات زیادی انجام داده است. با توجه به اینکه این تولباکس تمام روشهای موجود در کتاب رو پوشش نمیدهد، توابع مورد نیاز برای پیاده سازی این روشها به تدریج معرفی شده و نحوه اضافه کردن آنها به تولباکس و نحوه استفاده از آنها به طور کامل توضیح داده میشود.
به صورت خلاصه مباحث زیر در این سری فیلمها مورد بررسی قرار می گیرند:
- مقدمات ریاضی از جمله جبرخطی و سیستمهای دینامیکی و فرآیندهای تصادفی
- تخمین حداقل مربعات (Least Squares Estimation)
- انتشار حالت و کواریانس (Propagation of States and Covariance)
- فیلتر کالمن گسسته (Discrete Kalman Filter) و هموارساز آن (Kalman Smoother)
- انواع فرمولبندیهای دیگر فیلتر کالمن
- فیلتر کالمن برای سیستمهای دارای نویز رنگی (Colored Noise) و همبسته (Correlated)
- فیلتر کالمن پیوسته Kalman Bucy Filter) KBF)
- فیلتر ∞H
- ترکیب فیلتر ∞H و کالمن
- فیلتر کالمن توسعه یافته Extended Kalman Filter) EKF) و هموارساز آن (EKF Smoother)
- فیلتر کالمن بدون بو! Unscented Kalman Filter) UKF) و هموارساز آن (UKF Smoother)
- فیلتر ذرهای (Particle Filter)
- فیلتر Extended Kalman Particle Filter) EKPF)
- فیلتر کالمن مکعبی Cubature Kalman Filter) CKF) و هموارساز آن (CKF Smoother)
- فیلتر کالمن گاوس-هرمیت Gauss-Hermite Kalman Filter) GHKF) و هموارساز آن (GHKF Smoother)
- فیلتر کالمن تفاضل مرکزی Central Difference Kalman Filter) CDKF)
- فیلتر کالمن برای سیستمهای دارای مدل چندگانه (سیستمهای سویچینگ مارکوف) Interacting Multiple Models Filters) IMM)
پیش نیازها: آشنایی اولیه با کدنویسی در متلب
لطفا قبل از دیدن ادامه پست حتما این ویدئو را ببینید:
برای اطلاع از فهرست موضوعی تمامی جلسات اینجا کلیک کنید
نکته آخر اینکه شاید برایتان جالب باشد که دکتر کیوان افشار مقاله زیر را با راهنمایی دکتر جوادی از جلسه 108 این مجموعه چاپ کرده است.
Mass estimation and adaptive output feedback control of nonlinear electromagnetic levitation system
برای دیدن جزئیات هر جلسه شامل: پیش نمایش هر جلسه، موضوع هر جلسه، مدت زمان هر جلسه و …. به تب فهرست جلسات بروید
برای خرید یک یا چند فصل به تب خرید موضوعی بروید.
- لینک دانلود فایل بلافاصله بعد از پرداخت وجه به نمایش در خواهد آمد.
- همچنین لینک دانلود به ایمیل شما ارسال خواهد شد به همین دلیل ایمیل خود را به دقت وارد نمایید.
- ممکن است ایمیل ارسالی به پوشه اسپم یا Bulk ایمیل شما ارسال شده باشد.
- در صورتی که به هر دلیلی موفق به دانلود فایل مورد نظر نشدید با ما تماس بگیرید.
شاهین
سلام جناب دکتر… من در استفاده از HUKF و HEKF یه سوال داشتم. مدل من برای اینکه تخمین نسبتا درستی رو ارائه بده نیازمند استفاده از گام زمانی خیلی کوچک 1e-8 دارد که باعث میشه زمان محاسبه بیشتر از 2 روز برسه. راه حلی نیست که با گام زمانی بزرگتر ( منظور dt درون حلقه تخمین است) به نتیجه رسید؟ اگر درون تابع UKF بجای اویلر از Runge kutta 4 استفاده بشه سریع تر و با گام زمانی بزرگتر نتیجه نمیشه گرفت؟ این کار پیچیدس؟
alij63@gmail.com
سلام
بله میتونید از روشهای حل عددی بهتر مثل رانگ کوتا استفاده کنید
مهرداد
سلام ببخشید برای تخمین همزمان سیستم گسسته پارامتر مورد تخمین ما ثابت هست و xk+1 با xk برابر میشه و تخمین ما فقط یک خط ثابت رو نشون میده چه باید کرد که اگر مقدار اولیه پرت بدیم به مقدار درست میل کند
alij63@gmail.com
سلام
جلسه 79 و 88 رو ببینید
مهرداد
دیدم اون قسمت هارو اما مشکل برطرف نشد و
alij63@gmail.com
میتونید ایمیل بدید تا بررسی کنم البته طبق قوانین سایت هزینه داره
شاهین
سلام جناب دکتر وقت شما بخیر… هنگام استفاده از hukf بعد از جلو رفتن فیلتر ارور زیر نمایش داده میشه.
In schol (line 61)
In ut_sigmas (line 33)
In hut_transform (line 119)
In hukf_predict (line 93)
In HEKF_Kalman (line 102)
که به دلیل منفی معین شدن ماتریس کواریانس هست. البته همزمان hekf درست تخمین میزنه. راه حل چیه که اطمینان حاصل بشه که ماتریس P منفی نمیشه؟ سیستم هم سیستم نسبتا بزرگیه و 30 تا حالت داره
علی جوادی
سلام
دلایل مختلفی میتونه داشته باشه مثلا تنظیم نامناسب پارامترها یا گام زمانی و …
عارف اسلامي مهدي ابادي
سلام
جناب جوادی کدهای HPF و HEKPF توی فایل های قسمت 96 نیست
علی جوادی
سلام
عذرخواهی میکنم بابت مشکلی که براتون پیش اومد.
براتون ارسال شد. ایمیلتون رو چک کنید.
علی
سلام و وقت به خیر آقای دکتر جوادی.
سوالی داشتم از خدمتتون. در مسئله بنده تابع دینامیکی سیستم را نمی توان به صورت یک ماتریس و یا یک معادله بیان کرد اما می توان با استفاده از سایر نرم افزارهای کامپیوتری شبیه سازی را انجام و ورودی ها را مستقیم به سیستم داد و خروجی ها را دریافت کرد(فرضا برای تبدیل نقاط سیگما این نقاط را مستقیما به سیستم دهم و خروجی بگیرم). سوالی که داشتم این هست که آیا از تولباکس simmo که برای تبدیل ukf و ekf مطرح کردید امکان ایجاد ارتباط با این سیستم وجود دارد (چراکه در چهار حالتی که توضیح می دهید چنین شرایطی وجود ندارد-منظور تابع f و h در کدها است) یا باید کدها را خودم برای چنین شرایطی توسعه دهم؟ تشکر از راهنماییتون.
علی جوادی
سلام
فیلتر کالمن بر اساس مدل کار میکنه و حتما باید مدلی از سیستم داشته باشید.
توصیه من اینه که شما با استفاده از ورودی و خروجیهای مناسب سیستم رو شناسایی کنید (با روشهای شناسایی سیستم) و بعد از این مدل برای فیلتر کالمن استفاده کنید.
برای روشهای شناسایی به مجموعه شناسایی سیستمهای دینامیک مراجعه کنید
شاهین
سلام جناب دکتر وقت شما بخیر… در استفاده از تولباکس برای HEKF به مشکل برخوردم. من ورودی کنترلی با سه مولفه دارم که وابسته به زمان هستند. یعنی به ازای هر گام زمانی هر سه ورودی تغییر می کنند و وابسته به حالت هم نیستند و مقادیر عددی مشخص دارند. در تابع HEKF_Predict در شبیه سازی سیستم پیوسته با معادله اویلر در حلقه درون تابع نمیتوان در param مقادیر ورودی در درون تابع تغییر داد. راه حل چیه؟ در تمام مثال ها شما ورودی کنترلی رو وابسته به تخمین حالت در نظر گرفتین و به ازای گام زمانی فیلتر پارامترها قابل تغییرن در حالیکه اگر در حالت حل اویلر درون تابع مقادیر ورودی رو ثابت در نظر گرفتید.
علی جوادی
سلام
لزومی نداره که ورودی تابعی از حالت یا تخمین باشه.
شما میتونید ورودی مورد نظر رو بیرون حلقه تولید کنید (یا از بیرون import کنید) و بعد داخل حلقه اویلر ازش استفاده کنید.
در ضمن ورودی که در تمرین 14-15 جلسه 86 استفاده شده در هر گام زمانی عوض میشه چون تخمین حالت هر بار عوض میشه
رها
سلام وقت بخیر
در آموزش هایی که ارائه دادید فیلتر کالمن سه بعدی هم آموزش دادید؟ کدوم بخش میشه؟
تشکر
علی جوادی
سلام
اگر منظورتون اینه که تعداد حالتها 3 تا باشه، محدودیتی برای تعداد حالتها در فیلتر کالمن وجود نداره
میثم
با سلام خدمت دکتر جوادی
فیلتر کالمن استاندارد یا معمول همونیه که از روش ristic برای نمونه بردرای استفاده میکنه؟
مثلا اگه بخوایم یه فیلترذره ای با روش نمونه برداری جدید مثل Fission Bootstrap یا هر روش دیگه ای رو با فیلتر ذره ای استاندارد مقایسه کنیم باید با کدوم موردی که شما تو آموزشاتون اوردین مقایسه کنیم؟
علی جوادی
سلام
اونی که مدنظر شماست فیلتر ذره ای هست نه فیلتر کالمن.
میثم
عذرخواهم اقای دکتر اشتباه تایپ کردم ،هدفم فیلتر ذره ای استاندارد بود.
“فیلتر ذره ای استاندارد یا معمول همونیه که از روش ristic برای نمونه بردرای استفاده میکنه؟
مثلا اگه بخوایم یه فیلترذره ای با روش نمونه برداری جدید مثل Fission Bootstrap یا هر روش دیگه ای رو با فیلتر ذره ای استاندارد مقایسه کنیم باید با کدوم موردی که شما تو آموزشاتون اوردین مقایسه کنیم؟”
علی جوادی
البته من چیزی تحت عنوان فیلتر ذره ای استاندارد تا حالا نشنیدم ولی در جلسه 90 PF اولیه معرفی شده
شیما
سلام سیستم من و اندازه گیری هردو گسسته هستند به صورت فانکشن تعریف کردم اما بعد از اجرا کداصلی ukf ماتریس حالت بدون تغییر است و در هر ستون فقط مقادیر اولیه رو نمایش میده و انگار معادلات حالت اجرا نمیشه و تخمین یه خط صاف است مشکل چیست؟
علی جوادی
سلام
دلایل مختلفی میتونه داشته باشه ولی حدس میزنم نویز (فرایند و اندازه گیری) بهش اعمال نکردید یا مقدارش کمه
شیما
با تغییرنویز بازهم ukfیک خط راست هست ولی مگر نه اینکه ماتریس حالت بعد از اجرای فانکشن باید هرستون متفاوت و براساس معادلات حلقه for محاسبه شود؟ببخشید امکان ارسال کد خدمتتون هست؟
علی جوادی
امکانش هست ولی هزینه داره
شیما
ممنون اگر ممکنه هزینش رو بفرمایید و راه ارتباطی
علی جوادی
ایمیلتون رو چک کنید
vajiheh
سلام آقای دکتر جوادی
از آموزش های خیلی خوبتون ممنونم
سوالی که دارم اینه که چه موقع G منظور همون برداری هست که در ورودی سیستم یعنی u ضرب می شه رو می تونیم صفر در نظر بگیریم؟ باید چه شرایطی برقرار باشه که این اتفاق بیفته؟
x=FX+Gu+W
من فیلترهای کالمنی دیدم که به صورت x=Fx هستند الان در این مدل ها G رو صفر در نظر گرفته یا u رو صفر در نظر گرفته که به این صورت تبدیل شده است؟
خیلی ممنون می شم پاسخ بدید
علی جوادی
سلام
بستگی به سیستم شما داره.
اگر در صورت مساله ورودی کنترلی وجود نداشته باشه اون قسمت رو صفر در نظر میگیریم.
شرایط خاصی نیست
شاهین
سلام وقت بخیر.. جلسه 88 قابل اجرا نیست. راه حل چیه؟
علی جوادی
سلام
منظورتون دقیقا چیه؟ کدها اجرا نمیشه؟ من که تست کردم و اجرا میشه.