estimation_kf_dan-simon

تخمین بهینه حالت (فیلتر کالمن)

همونطور که میدانید بحث تخمینگر (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)

پیش نیازها: آشنایی اولیه با کدنویسی در متلب


برای اطلاع از فهرست موضوعی تمامی جلسات اینجا کلیک کنید


جلسه اول :


جلسه دوم : 


جلسه سوم : 


جلسه چهارم : 


جلسه پنجم: 


خرید

جلسه ششم: 


جلسه هفتم : 


جلسه هشتم : 


خرید


جلسه نهم : 


جلسه دهم : 


جلسه یازدهم : 


خرید


جلسه دوازدهم : 


جلسه سیزدهم : 


خرید


جلسه چهاردهم : 


جلسه پانزدهم : 


جلسه شانزدهم : 


جلسه هفدهم : 


جلسه هجدهم : 


جلسه نوزدهم : 


جلسه بیستم: 



جلسه بیست و یکم : 


جلسه بیست و دوم : 


جلسه بیست و سوم : 


جلسه بیست و چهارم : 


جلسه بیست و پنجم : 


جلسه بیست و ششم : 


جلسه بیست و هفتم : 



جلسه بیست و هشتم : 


جلسه بیست و نهم : 


جلسه سی ام : 


جلسه سی و یکم : 


جلسه سی و دوم : 


جلسه سی و سوم : 


جلسه سی و چهارم : 


جلسه سی و پنجم : 


جلسه سی و ششم: 


جلسه سی و هفتم : 


جلسه سی و هشتم : 


جلسه سی و نهم : 


جلسه چهلم : 


جلسه چهل و یکم : 


جلسه چهل و دوم : 


جلسه چهل و سوم : 


جلسه چهل و چهارم: 


جلسه چهل و پنجم : 


جلسه چهل و ششم : 


جلسه چهل و هفتم : 


جلسه چهل و هشتم : 


جلسه چهل و نهم : 


جلسه پنجاهم : 


جلسه پنجاه و یکم : 


جلسه پنجاه و دوم : 


جلسه پنجاه و سوم : 


جلسه پنجاه و چهارم : 


جلسه پنجاه و پنجم : 


جلسه پنجاه و ششم : 


جلسه پنجاه و هفتم : 


جلسه پنجاه و هشتم : 


جلسه پنجاه و نهم : 


جلسه شصتم : 


جلسه شصت و یکم : 


جلسه شصت و دوم :


جلسه شصت و سوم :


جلسه شصت و چهارم :


جلسه شصت و پنجم :


جلسه شصت و ششم :


جلسه شصت و هفتم :


جلسه شصت و هشتم :


جلسه شصت و نهم :


جلسه هفتادم :


جلسه هفتاد و یکم :


جلسه هفتاد و دوم :


جلسه هفتاد و سوم :


جلسه هفتاد و چهارم :


جلسه هفتاد و پنجم :


جلسه هفتاد و ششم :


جلسه هفتاد و هفتم :


جلسه هفتاد و هشتم :


جلسه هفتاد و نهم :


جلسه هشتادم :


جلسه هشتاد و یکم :


جلسه هشتاد و دوم :


جلسه هشتاد و سوم :


جلسه هشتاد و چهارم :


جلسه هشتاد و پنجم :


جلسه هشتاد و ششم :


جلسه هشتاد و هفتم :


جلسه هشتاد و هشتم :


جلسه هشتاد و نهم :


جلسه نودم:


جلسه نود و یکم :


جلسه نود و دوم :


جلسه نود و سوم :


جلسه نود و چهارم :


جلسه نود و پنجم :


جلسه نود و ششم :


جلسه نود و هفتم :


جلسه نود و هشتم :


جلسه نود و نهم:


جلسه صدم :


جلسه صد و یکم :


جلسه صد و دوم :


جلسه صد و سوم :


جلسه صد و چهارم :


جلسه صد و پنجم :


جلسه صد و ششم :


جلسه صد و هفتم:


جلسه صد و هشتم :


نحوه خرید: برای خرید هر جلسه، مربع کنار آن جلسه را تیک بزنید و بعد بر روی “اضافه کردن به سبد خرید” کلیک کنید. اگر همچنان قصد خرید جلسات دیگر دارید مشابه قبل، مربع کنار جلسات مربوطه را تیک بزنید و بر روی “اضافه کردن به سبد خرید” کلیک کنید. در پایان دوباره بر روی همان دکمه “اضافه کردن به سبد خرید” (که حالا تبدیل به دکمه “پرداخت” شده است) کلیک کنید.

اضافه کردن به سبد خرید

اضافه کردن به سبد خرید

اضافه کردن به سبد خرید

اضافه کردن به سبد خرید

اضافه کردن به سبد خرید

اضافه کردن به سبد خرید

اضافه کردن به سبد خرید

اضافه کردن به سبد خرید

اضافه کردن به سبد خرید

اضافه کردن به سبد خرید

اضافه کردن به سبد خرید

اضافه کردن به سبد خرید

اضافه کردن به سبد خرید

اضافه کردن به سبد خرید

اضافه کردن به سبد خرید

اضافه کردن به سبد خرید


جهت خرید پستی با ۲۵ درصد تخفیف بر روی لینک زیر کلیک فرمایید (لطفا کدپستی و شماره تلفن را به همراه آدرس حتما قید کنید)

خرید پستی

توجه توجه!!: در صورتیکه مایل به پرداخت از طریق کارت می باشید هزینه را به شماره کارت زیر (بنام موسی پور) واریز فرموده و سپس اطلاعات زیر رو به شماره زیر پیامک کنید. بعد از پرداخت و پیامک نمودن اطلاعات زیر لینک دانلود رو به ایمیلتون می فرستیم.

شماره پرداخت

محصول و جلسات خریداری شده

ایمیل

شماره کارت: ۶۰۳۷۹۹۷۳۸۲۹۱۱۳۵۳

شماره موبایل: ۰۹۱۶۲۹۶۳۸۷۰

۲۸۴ نظر

  1. سلام
    بنده UKF رو میخوام برای سیستمم در محیط سیمولینک طراحی کنم … در حالت کلی سیستم مرتبه ۳ هست و خواستم اول در محیط ام فایل به جواب برسم بعد همه کد رو داخل سیمولینک هم اجرا کنم… به این صورت که ابتدا با دادن یه سری ورودی و گرفتن خروجی یه سری داده از سیستمم تولید کردم و برای این داده ها UKF رو طراحی کردم و به جواب مطلوبی هم رسیدم اما در محیط سیمولینک به مشکل برخورد کردم. از Interpreted MATLAB Function استفاده کردم و با دیباگ کردن کدم فهمیدم این حلقه رو اشتباه در متلب فانکش مینویسم:
    % UKF time update
    for i = 1 : 6
    for tau = dt : dt : T
    xbrevedot(1,1) = xbreve(2,i);
    xbrevedot(2,1) = rho0 * exp(-xbreve(1,i)/k) * xbreve(2,i)^2 / 2 * xbreve(3,i) – g;
    xbrevedot(3,1) = 0;
    xbreve(:,i) = xbreve(:,i) + xbrevedot * dt;
    end
    end
    اینجا میدونم که این حلقه اومده از تقریب اویلر استفاده کرده برای پیوسته کردن مقادیر… اما همین حلقه رو بخوام تو سیمولینک بنویسم چه طور در میاد؟؟
    زمان نمونه برداری من در محیط ام فایل ۵ ثانیه هست و از تنظیمات سیمولینک هم نمیتونم زمان نمونه برداری رو تغییر بدم مثلا استپ تایم ها رو بزارم رو ۵! به طور دیفالت یک هست وحالا من گفتم بهش محاسبات رو هر ۵ ثانیه یک بار انجام بده ….
    در کل میشه لطف کنید یک ابر همین مثال رو تو محیط سیمولینک هم انجام بدین؟یا همین یه حلقه رو توضیح بدین که چه جوری بنویسم.

    [پاسخ]

    علی جوادی پاسخ در تاريخ فروردین ۲۵ام, ۱۳۹۷ ۱۲:۴۸ ب.ظ:

    @شادی,
    سلام
    تا جایی که من فهمیدم، شما می خوایید UKF گسسته رو تو سیمولینک اجرا کنید. این کار لزومی نداره و بهتره داخل m-file کدنویسی کنید که قبلا انجام دادید و جواب گرفتید. من تا حالا UKF گسسته رو داخل سیمولینک اجرا نکردم. در واقع دلیلی وجود نداره که UKF گسسته داخل سیمولینک شبیه سازی بشه ولی برای UKF پیوسته اتفاقا بهتره داخل سیمولینک باشه تا از قدرت سیمولینک در شبیه سازی سیستمهای پیوسته استفاده بشه

    [پاسخ]

    شادی پاسخ در تاريخ فروردین ۲۵ام, ۱۳۹۷ ۱:۲۸ ب.ظ:

    @علی جوادی,
    خیلی ممنون به خاطر توضیحاتتون. بله دقیقا میخوام از محیط سیمولینک استفاده کنم و راسیتش باید حتما تو محیط سیمولینک باشه … سیستم من یه سیستم بسته شده تو سیملینک هست که حتی نمیدونم اجزاش چی هستن و دسترسی به بلوک هاش هم ندارم …فقط با تعریف یه سری شرایط خاص من میتونم یه ورودی به سیستم بدم و خروجی رو مشاهده کنم. بنابراین نمیتونم از محیط ام فایل استفاده کنم و حتما باید تو سیمولینک کارم رو ادامه بدم.
    UKF پیوسته خیلی با UKF گسسته متفاوت هست؟؟
    الان طبق اون کارهایی که من انجام دادم فقط تو این حلقه for مشکل پیش میاد… که باید اون نقاط سیگما رو تو معادلات سیستم منتشر بشن و نتونستم این کارو انجام بدم

    [پاسخ]

    علی جوادی پاسخ در تاريخ فروردین ۲۵ام, ۱۳۹۷ ۲:۴۵ ب.ظ:

    @شادی,
    خواهش میکنم
    عملکرد UKF پیوسته بهتر از گسسته و هیبیریده ولی زمان نمونه برداری دست شما نیست و شما نمیتونید انتخاب کنید. برای اطلاعات بیشتر در مورد UKF پیوسته به جلسه ۸۹ مراجعه کنید.
    با توجه به اینکه من تا حالا UKF گسسته رو داخل سیمولینک پیاده نکردم، در این مورد نمیتونم اظهار نظر کنم

    [پاسخ]

    شادی پاسخ در تاريخ فروردین ۲۵ام, ۱۳۹۷ ۳:۱۱ ب.ظ:

    @علی جوادی,
    خیلی ممنون. بله اون جلسه رو هم نگاه کردم اما به قول شما زمان نمونه برداری دیگه دست من نیست. من باید از همین UKF گسسته تو سیمولینک استفاده کنم!
    بازم خیلی ممنون به خاطر توضیحاتتون. روز بخیر.

    [پاسخ]

    علی جوادی پاسخ در تاريخ فروردین ۲۵ام, ۱۳۹۷ ۷:۰۸ ب.ظ:

    @شادی, خواهش میکنم. موفق باشید

    [پاسخ]

  2. از پاسختون ممنونم استاد
    در واقع فیلترها به صورت گسسته طراحی شده‌اند ولی زمان نمونه برداری T را نمی توانم از میکرو ثانیه بزرگتر بگیرم. آیا راه حلی وجود دارد.

    [پاسخ]

    مدیر سایت پاسخ در تاريخ فروردین ۲۱ام, ۱۳۹۷ ۶:۵۳ ق.ظ:

    @حسین,
    شاید دینامیک سیستم سریعه و با زمان نمونه برداری بزرگ جواب نمیده

    [پاسخ]

  3. با سلام و احترام. چند سوال در طراحی فیلترها داشتم. اول اینکه فیلتر ekf و ukf رو پیاده سازی کردم ولی زمان نمونه برداری برای ekf بزرگتر از ۵e-6 و برای ukf از ۵e-8 بزرگتر نمی تواند باشد و واگرا می‌شوند. با توجه به اینکه در عمل سنسور اندازه گیری در حد میلی ثانیه هست آیا راه حلی وجود دارد که زمان نمونه برداری را افزایش داد.( فیلترها به صورت گسسته طراحی شده اند). آیا تغییر روش های گسسته سازی مثل ران کوتا و یا ثابت گرفتن اندازه گیری ها بین دو زمان نمونه برداری که در حد میلی ثانیه هستند مشکل را رفع می کند.
    سوال دوم اینکه ekf و مرتبه دوم و تکراری آن را پیاده سازی کردم ولی مانند هم شدند. آیا این به دلیل اینست که معادلات اندازه گیری خطی اند و کلا به هیچ طریقی با فیلتر مرتبه بالا بهبود پیدا نمی کند.
    آخرین سوال اینکه در روش PF شما X اولیه را به صورت های مختلف انتخاب کردید. آیا تفاوتی دارند؟
    for i = 1 : N
    xpart(i) = x + sqrt(P) * randn
    end
    یا
    for i = 1:N
    ( W(:,i) = corr_rnd(zeros(nw,1),P0
    end
    (X = f_fun(repmat(x0,1,N),W,1
    یا
    for i = 1:N
    (W(:,i) = corr_rnd(zeros(nw,1),P0
    end
    X = repmat(x0,1,N)+W
    همچنین آیا می توان به جای دستور corr_rnd از دستور (sqrt(P)*randn(n,1 چون با دستور اول خطای نامعینی می دهد ولی با مورد دوم حل می شود.
    با تشکر

    [پاسخ]

    علی جوادی پاسخ در تاريخ فروردین ۲۰ام, ۱۳۹۷ ۹:۴۵ ق.ظ:

    @حسین,
    سلام
    من متوجه نشدم که شما از ekf گسسته استفاده کردید یا هیبریدی. از طرفی گفتید گسسته و بعد گفتید رانگ کوتا. اگر از روش هیبریدی استفاده کنید dt اهمیتی نداره چقدر کوچک باشه چیزی که مهمه T یا زمان نمونه برداری هست.
    با توجه به اینکه گفتید معادلات اندازه‌گیری خطی است، بنابراین ممکنه فیلترهای مختلف غیرخطی نسبت به هم بهبود خاصی نداشته باشند. هر چی غیرخطی گری سیستم بالاتر باشه، تفاوت روشها خودشو نشون میده.
    در مورد تولید جمعیت اولیه هم حق با شماست. در مورد دوم که اشاره کردید تابع f_fun نباید استفاده بشه ولی مورد سوم و اول درست هستند. مورد اول در کدهای خود dan simon استفاده شده و من هم از مورد سوم استفاده کردم. در واقع روشهای اول و سوم معادل هم هستند اما با کدنویسی مختلف انجام شده و شما هم ممکنه به یک روش دیگه همین کار رو بکنید. داخل مثال کتاب (و کد خود dan simon) چون سیستم اسکالر هستش، از کد اول میشه استفاده کرد ولی اگه اسکالر نباشه دیگه نمیشه از این کد استفاده کرد و باید اصلاح بشه.
    دستور corr_rnd رو برای کلیت قضیه و راحتی معرفی کردم والا اگر ماتریس کواریانس قطری باشه از همون دستوری که گفتید میشه استفاده کرد و اجباری به استفاده از دستور corr_rnd نیست.
    ممنون از دقت نظر شما

    [پاسخ]

  4. سلام

    ببخشید من UKF رو با استفاده از اموزش های شما برای سیستم خودم طراحی کردم. اما یه مشکلی دارم. این کد چولسکی رو برای تولید نقاط سیگما در نظر داشته باشید:
    [root,p] = chol(3*Pukf);
    Pukf که همون محاسبه کواریانس هست رو در ابتدا با توجه به سیستمم اینجوری انتخاب کردم:
    Pukf = diag([100 1 1]);

    این ماتریس مثبت معین هست، بنابراین در اجرای حلقه هیچ مشکلی وجود نداره در انتها وقتی از معادلات بروز رسانی اندازه گیری برای محاسبه تخمین و کواریانس استفاده شده Pukf به دست آمده به صورت زیر هست:

    Pukf =

    ۱٫۰e+03 *

    ۰ ۰٫۰۰۰۰ -۰٫۰۰۰۰
    ۰٫۰۰۰۰ ۰٫۰۰۸۶ ۰٫۱۶۷۲
    -۰٫۰۰۰۰ ۰٫۱۶۷۲ ۴٫۳۲۷۱

    که برای محاسبه نقاط سیگما برای تکرار دوم هست این ارور رو میده:
    chol(S_n*Pukf)<<
    Error using chol
    Matrix must be positive definite.
    میشه راهنمایی بفرمایید برای حل این مشل باید چیکار کنم؟ داره به مقدار Pukf محاسبه شده گیر میده !

    [پاسخ]

    علی جوادی پاسخ در تاريخ فروردین ۸ام, ۱۳۹۷ ۱۰:۰۹ ق.ظ:

    @الهام,
    سلام
    این خطا معمولا زمانی دیده میشه که فیلتر واگرا بشه. واگرایی هم علتهای مختلفی میتونه داشته باشه. مثلا ممکنه اصلا سیستم رویت پذیر نباشه یا پارامترهای طراحی درست انتخاب نشه مثلا زمان نمونه برداری بزرگ باشه یا پارامترهای فیلتر مناسب نباشه. حتی ممکنه اشتباهی داخل کد نویسی وجود داشته باشه که فیلتر واگرا بشه.
    شاید بهتر باشه یه فیلتر دیگه مثل EKF رو پیاده کنید و اگر جواب داد یعنی سیستم رویت پذیره و فقط تو پیاده سازی روش UKF مشکل دارید ولی اگر جواب نداد یعنی رویت پذیری سیستم زیر سواله.
    قبل از هر کاری زمان نمونه برداری رو کم کنید و پارامترهای فیلتر رو تغییر بدید و اگر جواب نگرفتید، یه روش دیگه پیاده کنید

    [پاسخ]

    الهام پاسخ در تاريخ فروردین ۸ام, ۱۳۹۷ ۱:۰۵ ب.ظ:

    @علی جوادی, خیلی ممنون به خاطر راهنمایی های خوبتون. و خیلی ممنون به خاطر اموزش های خوبتون هم. این درس به بهترین شکل ممکن ارائه شده.

    [پاسخ]

    علی جوادی پاسخ در تاريخ فروردین ۸ام, ۱۳۹۷ ۳:۱۲ ب.ظ:

    @الهام,
    خواهش میکنم. شما لطف دارید
    موفق باشید

    [پاسخ]

  5. سلام
    من برای تخمین حالت های سیستمم از فیلتر SDRE استفاده کردم اما متاسفانه به نتیجه مطلوبی نرسیدم. چرا که سیستمم یه سیستم تاخیردار هست.
    نوع تاخیر هم تاخیر در اندازه گیری نیست. متغیر قابل اندازه گیری رو بدون تاخیر میتونم اندازه گیری کنم اما منظورم از تاخیر اثر سیگنال ورودی بر خروجی اندازه گیری هست. مثلا یک سیگنالی رو الان اعمال میکنم و اثر اون رو ۳۰ دقیقه بعد میبینم…الان میخوام از فیلتر بدون بو استفاده کنم اما مطمئن نیستم که جواب بده… شما کدوم فصل از اموزشتون رو پیشنهاد میکنید؟

    [پاسخ]

    علی جوادی پاسخ در تاريخ اسفند ۲۷ام, ۱۳۹۶ ۱۱:۵۸ ب.ظ:

    @الهام,
    در این سری فیلمها (و کتاب) تخمین حالت برای سیستمهای تاخیردار بررسی نشده و باید به مقالات مراجعه کنید. اگر از روشهای موجود در کتاب استفاده کنید (حتی اگه جواب بده) معلوم نیست مطلوب باشه و حتی امکان داره فیلتر همگرا نشه. بنابراین روش متناسب با سیستم خودتون رو در مراجع پیدا کنید و از اون استفاده کنید

    [پاسخ]

  6. سلام
    امیدوارم حالتون خوب باشه
    بنده میخوام از تخمینگر مقاوم پیوسته واسه سیستمم استفاده کنم
    قبلا از Ekbf همون فیلتر کالمن توسعه یافته پیوسته استفاده کردم واسه سیستمم الان چون یکی از پارامتر های سیستمم ممکنه تغییر کنه میخوام کالمن مقاوم پیوسته اگه هست روش پیاده کنم خواستم بدونم کدوم جلسه به کارم میاد که اساتفاده کنم
    جلسه ۵۵ به نظرم درست بود ولی اولش معادلات گسسته رو گفته خواستم بدونم معادله پیوسته هم واسه کالمن مقاوم هست؟

    [پاسخ]

    علی جوادی پاسخ در تاريخ اسفند ۲۶ام, ۱۳۹۶ ۲:۴۰ ب.ظ:

    @فرزاد,
    سلام
    در این سری فیلمها فیلتر پیوسته مقاوم در برابر نامعینی وجود نداره و باید به مقالات مراجعه کنید.
    مثلا مقاله زیر شاید به درد شما بخوره:
    https://goo.gl/cu4vUw

    [پاسخ]

    فرزاد پاسخ در تاريخ اسفند ۲۶ام, ۱۳۹۶ ۳:۱۳ ب.ظ:

    ببخشید مگه∞h کنترلر مقاوم نیست؟
    من تخمینگر مقاوم میخوام که به جای کالمن استفاده کنم

    [پاسخ]

    علی جوادی پاسخ در تاريخ اسفند ۲۶ام, ۱۳۹۶ ۶:۰۸ ب.ظ:

    @فرزاد,
    اولا که ما در مورد تخمینگر صحبت می کنیم و نمیدونم چرا در مورد کنترل مقاوم صحبت می کنید؟
    ثانیا فیلترهای مقاوم ∞h در کتاب (و در نتیجه فیلمها) نسبت به نامعینی پارامترهای سیستم مقاوم نیست بلکه یک معیار خاصی برای مینیمم سازی داره که باعث مقاوم بودنش میشه.
    در جلسه ۵۵ هم مقاوم بودن نسبت به نامعینی در کواریانس نویزهاست نه پارامترهای سیستم (البته خود فیلتر کالمن مقاوم شده).
    لطفا توضیحات جلسات رو با دقت زیاد بخونید

    [پاسخ]

    فرزاد پاسخ در تاريخ اسفند ۲۶ام, ۱۳۹۶ ۶:۲۷ ب.ظ:

    حقیقت من هم میخوام کنترل مقاوم ∞h و هم تخمینگر مقاوم برای سیستمم به کار ببرم چون یه پارامتر توی سیستمم که پیوستست تغییر میکنه و میخوام سیستم نسبت به این تغییرات مقاوم باشه و دارم سعی میکنم کنترلر و تخمینگر مقاوم پیوسته واسش پیاده کنم

    [پاسخ]

    علی جوادی پاسخ در تاريخ اسفند ۲۶ام, ۱۳۹۶ ۷:۵۱ ب.ظ:

    @فرزاد,
    در اینصورت باید در مقالات بگردید

    [پاسخ]

  7. سلام
    این پسوند zxp موجود در فایلهای جلسات ۹۹ تا ۱۰۸ چگونه باید بازکنیم با چه برنامه ای ؟؟

    [پاسخ]

    علی جوادی پاسخ در تاريخ اسفند ۲۵ام, ۱۳۹۶ ۲:۴۸ ب.ظ:

    @امیر,
    سلام
    این برنامه رو دانلود کنید و باهاش فیلمها رو ببینید:
    http://www.controlref.com/player/
    اگر مشکلی بود به مدیر سایت اطلاع بدید

    [پاسخ]

  8. با سلام

    یک هفته س که نتظر این تخفیف اخر سالتون هستیم الان فرمودید که تخفیفتون شامل این مجموعه اموزشی نمیشه!!

    خب ما چیکار کنیم الان؟؟!!

    پشتیبانی سایت هم که خیلی غیر فعال هستن و خیلی دیر جواب میدن!

    [پاسخ]

    علی جوادی پاسخ در تاريخ اسفند ۲۴ام, ۱۳۹۶ ۵:۱۸ ب.ظ:

    @شادی,
    سلام
    یک سری مسایل فنی برای آموزشهای من پیش اومده که در آینده نزدیک قراره حل بشه. به احتمال زیاد تا هفته بعد این مساله حل خواهد شد. نگران تخفیف نباشید. بعد از حل مسایل فنی، این آموزش هم مشمول تخفیف خواهد بود.
    عذرخواهی منو بپذیرید
    لطفا کمی صبور باشید

    [پاسخ]

    شادی پاسخ در تاريخ اسفند ۲۴ام, ۱۳۹۶ ۵:۴۴ ب.ظ:

    @علی جوادی,
    هفته بعد خیلی دیر میشه من منتظر میمونم امیدوارم زودتر درست بشه

    [پاسخ]

    مدیر سایت پاسخ در تاريخ اسفند ۲۵ام, ۱۳۹۶ ۱۱:۰۷ ق.ظ:

    @شادی,
    به محض اینکه درست بشه داخل کانال اطلاع رسانی میشه

    [پاسخ]

  9. با سلام خدمت آقای جوادی
    تلفیق INS/GPS با استفاده از فیلتر کالمن در کدام فصل آورده شده است؟
    ممنون از زحماتتون

    [پاسخ]

    علی جوادی پاسخ در تاريخ اسفند ۲۳ام, ۱۳۹۶ ۹:۵۹ ق.ظ:

    @پیام,
    سلام
    مساله تلفیق یکی از کاربردهای فیلتر کالمنه و در این سری فیلمها بررسی نشده. اینجا هدف من آموزش خود فیلترها بوده و روی هر کاربردی قابل اجراست.
    برای این کاربرد خاص به مجموعه آموزشی زیر مراجعه کنید و درخواستتون رو با دکتر رئوف مطرح کنید:
    http://www.controlref.com/inertial-navigation/

    [پاسخ]

  10. با سلام خدمت استاد گرامی
    سوال بسیار مهمی برام پیش اومد اونم این که فرق بین روئیت گر و فیلتر چیه ؟
    یک بار از یکی پرسیدم گفت هیچ فرقی با هم ندارن
    اما بنظر من فرق دارن اما تفاوتشون رو نمیدونم در چی هستش
    ممنونم میشم برام بگین که چه فرقی بین روئیت گر و فیلتر وجود داره؟
    با تشکر از شما و سایت خوبتون

    [پاسخ]

    علی جوادی پاسخ در تاريخ اسفند ۹ام, ۱۳۹۶ ۵:۲۶ ب.ظ:

    @جواد,
    با سلام و عرض ادب
    فیلتر یک عنوان کلیه و میتونه به سیگنال یا سیستم اعمال بشه. فیلترها میتونند پایین گذر، بالاگذر میانگذر، میانگذر و غیره باشند. ولی رویتگر به دینامیکی اطلاق میشه که برای تخمین حالتهای یک سیستم استفاده میشه. البته رویتگر خودش یک نوع فیلتره که معمولا فیلتر پایین گذر هم هست و به همین خاطر هم میتونه نویز اندازه‌گیری رو کم کنه.

    [پاسخ]

  11. سلام.وقت بخیر
    من تلفیق INS/GPS رو با CKF و ریشه دوم CKF انجام دادم.نتایج RMSE اونها دقیقا مثل همه.بدون کوچکترین تغییر!! حداقل باید یه تغییر کوچک بکنه
    آیا این طبیعیه؟ مگه نه اینکه نسخه ریشه دوم نتایج دقیقتری رو باید بده؟

    [پاسخ]

    علی جوادی پاسخ در تاريخ اسفند ۷ام, ۱۳۹۶ ۶:۵۰ ب.ظ:

    @حامد,
    سلام
    کاملا طبیعیه دوست عزیز. به خاطر اینکه مزیت روش ریشه دوم نتایج بهتر و دقیقتر در هر شرایطی نیست بلکه اگر شما خطای حل عددی داشتید (مثلا در پیاده سازی عملی) ، نتایج روش ریشه دوم بهتر خواهد بود چون به لحاظ حل عددی ثبات بیشتری داره.
    برای اطلاعات بیشتر به جلسه ۲۳ مراجعه کنید

    [پاسخ]

    حامد پاسخ در تاريخ اسفند ۷ام, ۱۳۹۶ ۶:۵۸ ب.ظ:

    @علی جوادی, اینکه توی هردو روش RMSE ها درایه به درایه دقیقا مثل هم هستن چیز عجیبی نیست؟ بالاخره روش حلشون متفاوته تا حدودی.من چند بار چک کردم هردو برنامه رو.اما دقیقا مثل هم هستن.حتی قسمت اعشاری عددها

    [پاسخ]

    علی جوادی پاسخ در تاريخ اسفند ۷ام, ۱۳۹۶ ۸:۱۰ ب.ظ:

    @حامد,
    نرام افزار متلب محاسبات رو با دقت بالا انجام میده و باعث میشه که به یک جواب برسید. داخل متلب اصولا هر فیلتری با نسخه ریشه دومش به یه جواب میرسه مگر اینکه خیلی سیستم پیچیده باشه

    [پاسخ]

  12. سلام. اگر بخواهیم همان تمرین موتور دوفاز را که به صورت hekf و ekbf حل شد را به صورت ekf گسسته حل کنیم، چون ورودی ها با زمان تغییر می کنند، ورودی های کنترلی آن به چه صورت باید وارد معادلاتمان شود؟ لطفا درباره کد تابع f با ورودی کنترلی راهنمایی فرمایید. همچنین در ekbf برای سیستم واقعی، ekbf در رادیکال dt ضرب شده بود و z نیز تقسیم بر رادیکال dt شده بود که به نظرم لازم نیست.

    [پاسخ]

    علی جوادی پاسخ در تاريخ اسفند ۲ام, ۱۳۹۶ ۴:۵۱ ب.ظ:

    @حمید,
    سلام. از تاخیر در پاسخگویی عذرخواهی میکنم.
    اگر ورودی کنترلی داشته باشید، می تونید ورودیها رو در کد اصلی وارد param کرده و داخل کد تابع سیستم ازش استفاده کنید.
    نحوه گسسته سازی سیستمهای تصادفی (stochastic) متفاوت از سیستمهای قطعی (deterministic) است. در واقع به جای روش اویلر برای گسسته سازی که در سیستمهای قطعی استفاده می شه، اصولا باید از روش اویلر-ماریاما استفاده بشه تا به نتایج درستی برسیم. در روش اویلر-ماریاما به جای خود dt باید رادیکال dt به نویز ضرب بشه تا نویز سفید گسسته بشه. بنابراین برعکسش برای نویز اندازه‌گیری اتفاق میافته یعنی اگر نویز گسسته باشه، باید تقسیم بر رادیکال dt بشه تا به حالت پیوسته در بیاد مثل همون کاری که برای بردار اندازه‌گیری z انجام شده.
    برای اطلاعات بیشتر در مورد روش اویلر-ماریاما به صفحه ۹۹ کتاب زیر مراجعه کنید:
    https://goo.gl/AhTxHU

    [پاسخ]

  13. سلام وقت بخیر
    من قراره یک سیستم INS و GPS رو با CKF تخمین بزنم.مشکلی که دارم اینه که چون فرکانس INS ده برابر GPS هستش برای همین برای اون زمانهایی که ما داده اندازه گیری نداریم باید چکار کنیم؟
    من توی اون زمانها تخمین رو با داده های خود INS پیش میبرم.این کار درسته؟
    با وجود این کار فیلتر CKF من نسبت به EKF نتیجه بهتری رو نداده و حتی به صورت جزئی نتایج بدتر هم شده.

    [پاسخ]

    علی جوادی پاسخ در تاريخ بهمن ۲۹ام, ۱۳۹۶ ۹:۳۶ ق.ظ:

    @حامد,
    سلام
    من تا حالا سیستم INS با GPS رو انجام ندادم ولی استفاده از اندازه‌گیریها هر زمانی که در دسترس بودند به نظر درست میاد. میتونید اندازه‌گیریها رو با نمونه برداری از داده های INS همزمان کنید تا هیچ شک و شبهه ای به وجود نیاد.
    اگر معادلات سیستم خیلی غیرخطی باشند یا رنج تغییرات بردار حالت زیاد باشه اصولا CKF باید بهتر از EKF باشه

    [پاسخ]

  14. سلام. من در قسمت H-Infinity مدل خودم رو به برنامه جلسه ۶۰ وارد کردم. اما همیشه یک ارور رو دریافت می کنم. برای رفع ارور مقادیر teta, S, P و حتی R رو کوچیک کردم تا تابع مثبت معین بشه. اما همچنان این ارور رو دریافت می کنم. ممنون میشم راهنمایی بفرمایید.

    Error using eig
    Input to EIG must not contain NaN or Inf.

    Error in HIF (line 54)
    con = min(eig(ch));

    Error in HinfinityObserver (line 77)
    [mhinf,Chinf,K] = HIF(mhinf,Chinf,F,Q,Y(:,i),H,R,L,S,teta,G,u(i));

    [پاسخ]

    علی جوادی پاسخ در تاريخ بهمن ۹ام, ۱۳۹۶ ۸:۴۶ ق.ظ:

    @امیر,
    سلام
    اولا که اگر ورودی کنترلی دارید، باید حواستون باشه که کنترل کننده با موفقیت بتونه سیستم رو کنترل بکنه و اگر درست کار نکنه قطعا فیلتر هم جواب نخواهد داد
    ثانیا فیلتر Hinf به پارامترها خیلی حساسه و باید پارامترها رو اونقدر تغییر بدید تا به جواب برسید. مثلا یکبار teta رو صفر بذارید (فیلتر کالمن) و ببینید میتونید پارامترهای دیگه رو طوری انتخاب کنید تا جواب بده یا نه. اگه جواب داد اون موقع teta رو زیادش کنید
    ثالثا سعی کنید flag رو به عنوان خروجی تابع بگیرید و ببینید که فیلتر اصلا جواب داره یا نه

    [پاسخ]

  15. خسته نباشید.
    من پروژمو با استفاده از ekf هم ب صورت گسسته هم ب صورت پیوسته و همینطور هایگین ابزرور و شبه لیونبرگر و عصبی جواب گرفتم، تنها مشکل من در زمان استفاده از ukf ک خطای مثبت معین نبودن رو میگیره، ماتریس های p و q r هم کم و زیاد کردم، بازم ارور میده، یا خیلی واگرا میشه.
    برای حل این مشکل چ کار باید بکنم؟

    [پاسخ]

    علی جوادی پاسخ در تاريخ بهمن ۲ام, ۱۳۹۶ ۱۰:۰۰ ب.ظ:

    @میلاد,
    سلام
    اگر از روش ekf جواب گرفتید باید از روش ukf هم جواب بگیرید چون خطای کمتری داره. وقتی خطای مثبت معین نبودن رو میده یعنی اینکه فیلتر داره واگرا میشه و تخمینها درست نیست. دلایل مختلفی میتونه داشته باشه. مثلا عدم تعریف درست تابع غیرخطی سیستم، عدم انتخاب درست پارامترهای ukf، اشتباه در کدنویسی و …

    [پاسخ]

    میلاد پاسخ در تاريخ بهمن ۳ام, ۱۳۹۶ ۲:۱۸ ب.ظ:

    @علی جوادی, از اونجا ک سیستمم رو ب زمان های dt تقسیم میکنم، نیازی هست این گسسته سازی رو ب معادلات ukf اضافه کنم؟ ب عنوان مثال در ekf این dt در معادلات ماتریس ژاکپبین f و همینطور p خودشو نشون میده،
    F=I+dt*f

    [پاسخ]

    علی جوادی پاسخ در تاريخ بهمن ۴ام, ۱۳۹۶ ۹:۱۴ ب.ظ:

    @میلاد,
    اگر از روش هیبریدی استفاده کنید نیازی نیست و توابع پیوسته رو به دستورات بدید ولی اگر دوست دارید میتونید خودتون سیستم رو گسسته کنید و از فیلتر گسسته استفاده کنید

    [پاسخ]

  16. سلام وقت بخیر
    برای مقاوم شدن و تطبیقی شدن فیلتر کالمن CKF چه تغییراتی در فیلتر باید اعمال کرد و روش کار به چه صورت است؟

    [پاسخ]

    علی جوادی پاسخ در تاريخ دی ۲۷ام, ۱۳۹۶ ۸:۰۳ ق.ظ:

    @حامد,
    سلام
    در این زمینه به مراجع مراجعه کنید. مثلا مقاله زیر:
    http://ieeexplore.ieee.org/document/7590586/

    [پاسخ]

  17. با سلام. من میخوام روی یک سیستم هایبریدی کار کنم که مدل غیرخطی پیوسته است و کنترلر گسسته . چندتا سوال ازتون داشتم. چون اندازه گیری ها گسسته است باید از ekf گسسته استفاده کنم یا ekf هایبریدی؟ کنترل کننده های غیرخطی مثل اسلایدینگ مد یا فازی که تا الان خوندیم همه پیوسته بودن. طراحی گسسته ی این کنترلرها روش خاصی داره.
    با تشکر

    [پاسخ]

    مدیر سایت پاسخ در تاريخ دی ۱۶ام, ۱۳۹۶ ۱۰:۰۴ ق.ظ:

    @پیام,
    با توجه به اینکه مدل پیوسته و اندازه‌گیری گسسته است، باید از روش ekf هیبریدی استفاده کنید.
    کنترل کننده های مد لغزشی و فازی در تخصص من نیست ولی تا جایی که من میدونم اغلب روشهای کنترلی نسخه گسسته هم دارند. باید در مراجع جست و جو کنید

    [پاسخ]

  18. ممنون از توضیحاتتون. اگر سیستم پیوسته باشد و اندازه گیریها گسسته، همانطور که شما گفتید باید از کنترلر گسسته استفاده کنیم. پس چه موقع باید از کنترلر هایبریدی که بطور مثال lqg هایبریدی که توی اموزشهای خودتان است استفاده کنیم. فرق کنترلر هایبریدی و گسسته در چیست.
    با تشکر از شما

    [پاسخ]

    علی جوادی پاسخ در تاريخ دی ۱۳ام, ۱۳۹۶ ۵:۱۴ ب.ظ:

    @پیام,
    لطفا به الفاظ دقت کنید. من گفتم کنترل کننده گسسته نه سیستم گسسته. این دو باهم متفاوت هستند. کنترل کننده و پلنت (مدل مورد استفاده برای طراحی) هر کدوم میتونه پیوسته باشه یا گسسته اما سیستم سه حالت میتونه داشته باشه: پیوسته (مدل و کنترل کننده پیوسته)، گسسته (مدل و کنترل کننده گسسته) و هیبریدی (مدل پیوسته و کنترل کننده گسسته). در واقع اصلا کنترل کننده هیبریدی نداریم ولی ممکنه بعضی وقتها به اشتباه از این لفظ به جای سیستم هیبریدی استفاده بکنیم. اگر من هم استفاده کردم شما حواستون باشه که درستش چیه

    [پاسخ]

  19. با سلام. دوتا سوال داشتم.
    ۱-اگر سیستم پیوسته باشد و اندازه گیری ها گسسته ، کنترل کننده ی ما باید گسسته باشد یا پیوسته؟
    ۲-چه نیازی هست که دینامیک را گسسته کنیم وقتی که دینامیک پیوسته خودش یه نوع گسسته هستش چون یه زمان نمونه برداری داره . و میکروهایی هستند که سرعت پردازششون خیلی زیاده و سنسورها هم که اکثرا با سرعت بالا و به صورت پیوسته به ما اطلاعات میدن. پس میشه همیشه دینامیک و کنترل کننده و رویتگر رو پیوسته در نظر گرفت؟

    [پاسخ]

    علی جوادی پاسخ در تاريخ دی ۱۳ام, ۱۳۹۶ ۱:۳۳ ب.ظ:

    @پیام,
    سلام
    ۱) کنترل کننده باید گسسته باشه
    ۲) نکته مهم اینه که دینامیک سیستم واقعی با مدلی که ما برای طراحی استفاده میکنیم متفاوته و با نمونه برداری دینامیک پیوسته سیستم هیچ وقت گسسته نمیشه بلکه مدلی که ما برای طراحی در نظر میگیریم (که تقریبی از دینامیک واقعی سیستم هستش) گسسته میشه.
    در واقع شما یک سنسور با هر سرعت نمونه برداری داشته باشید، باز هم میشه از متغیر واقعی مورد نظر در عمل نمونه برداری کرد. با توجه به اینکه با هر نرخ نمونه برداری میشه از سیستمهای واقعی نمونه برداری کرد، نشون میده که سیستمهای واقعی دارای دینامیک پیوسته هستند.
    امیدوارم توضیحات کافی بوده باشه

    [پاسخ]

  20. با سلام متشکر از کار خوبتون @علی جوادی
    متاسفانه بعد از دانلود فایل ها در فصل دوم و جلسه ۱۰ فصل سوم به درستی extract نمیشود هرچند از Repair هم استفاده شد بازهم ایراد در باز شدن دارد.
    ممنونم

    [پاسخ]

    مدیر سایت پاسخ در تاريخ بهمن ۲ام, ۱۳۹۶ ۱۱:۱۹ ق.ظ:

    @کیا,
    سلام مشکلتون حل شد؟ببخشید که دیر پاسخ دادم!

    [پاسخ]

  21. @علی جوادی,
    ممنون از راهنمایی تون
    از فیلتر کالمن، برای همجوشی داده ها و ترکیب داده از چند سنسور هم استفاده میشود؟ یا فیلتر کالمن توسعه یافته؟
    سیستم من به گونه ای هست که با توجه به مشاهدات از داده های سنسورهای موجود در خودرو، میخواهد مکان یابی خودرو را پیش بینی کند.

    [پاسخ]

    علی جوادی پاسخ در تاريخ دی ۱۲ام, ۱۳۹۶ ۱۱:۵۳ ب.ظ:

    @sepehr,
    باید ببینید برای همجوشی داده ها و ترکیب داده مدل سیستم خطی است یا غیر خطی. اگر خطی بود، فیلتر کالمن خطی کافی است و اگر مدل غیرخطی بود، باید از روشهای غیرخطی مانند EKF استفاده کنید

    [پاسخ]

یک پاسخ بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *