در این مقاله قصد داریم انواع مختلف فیلتر نرم افزاری موجود در فریمور بتافلایت را برای شما توضیح دهیم که در جهت کاهش نویزهای کوادکوپتر مورد استفاده قرار می گیرند.و در ادامه توضیح مختصری در رابطه با بهترین فیلتر برای عملکرد بهتر کواد را خواهیم داد.
چرا اصلا باید از فیلتر های نرم افزاری استفاده کنیم؟
یکی از مشکلاتی که نویز های ایجاد شده می توانند برای ما داشته باشند،ایجاد اختلال در اطلاعات و دیتای سنسورهایی مانند جایرو( سرعت سنج زاویه ای ) است.این نویز ها ممکن است در هر فرکانسی وجود داشته باشند و به همین دلیل باید از این فیلتر های نرم افزاری استفاده کنیم تا شدت تاثیر گذاری این نویز ها را در کوادکوپتر خود کاهش دهیم.
البته ممکن است کوادکوپتر شما بدون استفاده از این فیلتر های نرم افزاری هم دارای عملکرد خوبی باشد.این فیلتر ها فقط در صورتی استفاده می شوند که سازه پرنده دارای دارای ارتعاشات زیادی باشند.
یکی دیگر از راه های کاهش نویز در کوادکوپتر استفاده از خازن هایی در مسیر برق رسانی به قسمت های مختلف کوادکوپتر است.
معرفی و توضیحات کلی در مورد فیلتر در بتافلایت
در واقع دو نوع کلی از فیلتر های نرم افزاری در بتافلایت وجود دارند LPF یکی از فیلتر های مورد استفاده در بتافلایت است که مخفف Lowpass filter بوده و Notch Filter نیز یکی دیگر از این سری فیلتر ها است.
Lowpass Filter در فیلتر در بتافلایت
Lowpass Filter به منظور فیلتر کردن سیگنال های فرکانس بالا مورد استفاده میگیرند چرا که این سیگنال ها عموما دارای نویز ها و اختلالات زیادی بوده و کوادکوپتر و رادیو کنترل ما نیازی به این نوع سیگنال ها ندارند.
برای استفاده از این نوع فیلتر ما محدودیتی را برای سیگنال های ورودی به فلایت کنترلر قرار میدهیم به این صورت که فلایت کنترل شروع به محدود کردن ورود سیگنال هایی میکند که از مقدار خاصی که ما تعیین می کنیم بیشتر باشد.و هرچه این اختلاف بیشتر باشد میزان ورود این سیگنال به فلایت کنترل کمتر خواهد داشت.
Notch Filter
Notch Filter یک روش بسیار موثر برای فیلتر کردن سیگنال هایی در محدوده فرکانسی مشخص شده است. برای مثال از این فیلتر می توان برای جلوگیری از ورود نویز موتور ها به فلایت کنترل استفاده کرد.اما یکی از مشکلات Notch Filter نسبت به Lowpass Filter نیاز به تنظیمات دستی زیاد برای پیدا کردن محدوده فرکانس ها و نقطه مرکزی این دسته از فرکانس ها است.
فیلتر های دینامیکی ( Dynamic Filter )
یکی دیگر از ویژگی هایی که در فریمور بتافلایت به صورت پیش فرض غیرفعال می باشد فیلتر های دینامیکی یا Dynamic Filter است. این ویژگی به شما کمک میکند تا نویز های غیر منتظره که ایجاد شده اند مانند نویز موتور ها و ملخ ها را شناسایی کرده و فیلتر کنید.
فیلتر دینامیکی در واقع الگوریتمی است که می تواند فرکانس نویزهای ایجاد شده را شناسایی کرده و به کمک Notch Filter آن ها را فیلتر کند.
اما یکی از مشکلات و معایبی که استفاده از این فیلتر دارد اشغال کردن بیش از اندازه CPU است که در فلایت کنترل هایی با پردازنده F3 شما را مجبور به کاهش دوره گردش و looptime پردازنده خود از 8KHz به 4KHz می کند.
سیر تکاملی فیلتر ها در فریمور بتافلایت
همانطور که میدانید ، موتور ها در هنگام پرواز کواد کوپتر دارای لرزش ها و ارتعاشات ریزی هستند که باعث ایجاد نواسانات در کل کوادکوپتر می شوند.فیلتر های نرم افزاری در بتافلایت بر این مبنا به وجود آمده اند تا با فیلتر کردن این لرزش ها و جدا کردن آن ها از چرخه محاسبات ضرایب PID کوادکوپتر را تا حد ممکن به ثابت ترین حالت ممکن برسانند.در واقع می توان گفت که این فیلتر های نرم افزاری مستقیما بر روی عملکرد پروازی کواد کوپتر تاثیرگذار می باشند.
اولین فیلتر ارائه شده در این زمینه Lowpass Filter ها بودند به این صورت که از ورود سیگنال های فرکانس بالای ایجاد شده توسط موتورها جلوگیری کرده و به این صورت باعث بهتر شدن عملکرد کوادکوپتر می شد.
اما نسل بعدی فیلتر ها با نام Notch Filter باعث بهبود فیلتر کردن نویز های اضافه موتورها میشد.چراکه طیف خاصی از سیگنال ها در طول موج مشخص را مورد هدف قرار می داد.اما به دلیل اینکه باید فرکانس نویز موتور ها را خودمان تشخیص میدادیم و سپس مقدار آن را در بتافلایت وارد میکردیم به فیلتر استاتیک معروف شد.اما این روش فیلتر نویز بازده بالایی نداشت چراکه ممکن بود سیگنال نویز هایی که ما اندازه گیری کرده ایم در طول پرواز به دلیل زیاد یا کم شدن throttle و فشار های مختلف وارده به ملخ ها در حین پرواز تغییر کند و تمام معادلات ما را به هم بزند.
در ادامه فیلتری تحت عنوان فیلتر های دینامیکی ارائه شدند که در واقع الگوریتمی بودند برای تشخیص متوسط فرکانس نویز تمام موتورها که با اضافه کردن این مقدار به Notch Filter باعث عملکرد بهتر پرواز کوادکوپتر در سه جهت مختلف X وY وZ می شد.
لازم به ذکر است که هر موتور با سرعت متفاوتی می چرخد و ممکن است نویز تولیدی آن از مقدار متوسط اندازه گیری شده توسط فیلتر دینامیکی خارج باشد.بنابراین اگر می توانستیم سرعت چرخش را برای هر موتور به صورت جداگانه داشته باشیم می توانستیم فرکانس نویز های ایجاد شده هر موتور را به صورت جداگانه فیلتر کنیم و از ورود تمام نویز های ایجاد شده جلو گیری کنیم.
با ارائه فیلتر دور موتور ها یا RPM Filter ما این توانایی را بدست آوردیم که سرعت چرخش هر موتور را از طریق اسپید کنترل ها داشته باشیم و برای هرکدام از موتور ها فیلتر نویز جداگانه ای را ترتیب دهیم.در این صورت برای 4 موتور در کوادکوپتر در سه جهت مختلف در کل 12 فیلتر Notch خواهیم داشت.شاید فکر کنید که با بالا رفتن تعداد فیلترها ظرفیت پردازشی CPU به شدت پایین خواهد آمد اما باید بدانید که اشتباه می کنید و این روش فیلتر کردن نویز ها بار پردازشی کمتری را نسبت به روش های قبل دارد و از طرف دیگر نیز تاثیر بیشتری بر روی پایداری و بهتر شدن عملکرد پروازی کوادکوپتر خواهد داشت.
ترتیب فیلتر گذاری سیگنال ها در بتافلایت
اطلاعات دریافتی از سنسور جایرو در بتافلایت برای رسیدن به محاسبات ضرایب PID نیازمند عبور از مراحل و یا در اصطلاح stage های مختلفی هستند که شما می توانید میزان تاثیر گذاری هرکدام از این مراحل در فیلتر کردن اطلاعات را در بتافلایت با روشن خاموش کردن آن ها تعیین کنید. این stage ها به صورت زیر هستند که در ادامه به توضیح هرکدام از آن ها خواهیم پرداخت.
- Raw Gyro Data
- Gyro LPF
- Gyro LPF 2 (Stage 2)
- Dynamic Notch Filter
- Gyro Notch 1
- Gyro Notch 2
- D Term LPF
- D Term Notch
- PID Controller
Gyro LPF ( فیلتر Lowpass برای جایرو )
در این قسمت شما میتوانید سه مقدار PT1 , Biquad و FIR را انتخاب کنید.هرکدام از این گزینه الگوریتم های مختلفی برای فیلتر کردن نویز ها محسوب میشوند. در واقع Biquad فیلتر کننده بهتری نسبت به PT1 است اما از طرف دیگر PT1 دارای تاخیر کمتری در عملکرد می باشد.اما این را هم در نظر داشته باشید که اگر موتور های شما در طول پرواز داغ میکنند بهتر است از فیلتر Biquad استفاده کنید چرا که تاخیر بیشتر در ارسال داده ها باعث می شود موتور های شما با فشار کمتری حرکت کنند.در مورد FIR هم نیاز نیست نگران باشید چرا که این الگوریتم نسبت به دو الگوریتم دیگر استفاده چندانی نداشته و بین کاربران از محبوبیت زیادی برخوردار نیست.
Biquad بر خلاف TP1 از الگوریتم LPF و تلفیق آن با الگوریتمی دیگر برای فیلتر کردن نویزها استفاده می کند که این کار به معنی پروسه فیلتر کردن قوی تر و نویز کمتر در عملکرد کوادکوپتر است.
برای غیرفعال کردن این فیلتر می توانید مقدار فرکانس را بر روی صفر تنظیم کنید.
Stage 2 LPF
این فیلتر که به نام Biquad Rc و Fir2 شناخته می شود در واقع جایگزین شده فیلتر kalman در نسخه های قدیمی تر فلایت کنترلر ها و فریمور بتافلایت هستند.این فیلتر دارای تاخیر بسیار کمتری نسبت به PT1 که می تواند جایگزین این فیلتر در Gyro LPF شود و شما با غیرفعال کردن این فیلتر می توانید به بالاترین مقدار عملکرد در کوادکوپتر خود برسید.
Notch Filter
این مرحله دارای دو فیلتر جداگانه برای فیلتر کردن دو طیف فرکانسی جداگانه است که می توانید در صورت نیاز یکی از آن ها یا هردوی آن ها را غیر فعال کنید.
مقدار پیش فرض برای این فیلتر بین 200Hz تا 400Hz است که به طور معمول بازه مناسبی برای اکثر نویز ایجاد شده توسط موتور ها در کوادکوپتر می باشد. اما اگر نیاز دارید تا مقدار دقیق نویز موتور ها را پیدا کنید میتوانید این اطلاعات را در Blackbox فریمور خود پیدا کنید.
Dynamic Filter ( فیلتر دینامیکی )
ویژگی فیلتر دینامیکی در فریمور بتافلایت به صورت پیش فرض غیر فعال می باشد و شما در صورت نیاز می توانید آن را فعال کنید.این فیلتر عملکرد ایده آلی را برای پرواز کوادکوپتر شما به ارمغان خواهد آورد چراکه این الگوریتم فرکانس نویز های ایجاد شده در کواد را پیدا کرده و آن ها را فیلتر میکند.با فعال کردن این فیلتر میتوانید دو فیلتر قبلی که توضیح داده شد را خاموش کنید و با استفاده از این فیلتر علاوه بر کاهش نویز از سرعت بالا و تاخیر کم نیز استفاده کنید.
قبل از تغییر تنظیمات فیلتر توجه داشته باشید
توجه داشته باشید که تا وقتی اطلاعات و دانش کامل برای تغییر و تنظیم فیلتر نویز های کوادکوپتر را ندارید اقدام به تنظیم این فیلتر ها نکنید چرا که تنظیم اشتباه آن ها ممکن است منجبر به سوختن و خراب شدن موتور ها و اسپید کنترل شما شود.
اما در صورت تنظیم و تغییر تنظیمات فیلتر ها در بتافلایت بهتر است تا قبل از انجام هر تغییر از تنظیمات پیش فرض پشتیبان گیری کنید تا در صورت بروز مشکل بتوانید تنظیمات را به حالت قبل برگردانید.
بعد از تغییر هر مقدار و تنظیم مجدد آن برای تست و اطمینان از عملکرد کوادکوپتر آن را به مدت چند ثانیه پرواز دهید و به نوسانات و نویز های احتمالی موجود در پرواز کاملا دقت کنید.
تنظیم پیشنهادی برای فیلتر نویزها
در این قسمت سعی کردیم تا تنظیمات ساده اما تاثیر گذاری را برای کسانی که برای اولین بار است قصد تنظیم این نوع فیلتر را در فریمور بتافلایت برای کوادکوپتر خود دارند ترتیب دهیم.شما میتوانید با دنبال کردن و انجام مراحل زیر به پایداری نسبی خوبی برسید.
- فیلتر دینامیکی ( Dynamic Filter ) را در فریمور بتافلایت فعال کنید.و فیلتر Gyro Notch را با قرار دادن مقدار صفر برای آن غیر فعال کنید.
- مانند مرحله قبل Gyro Notch Filter 2 را نیز با قرار دادن مقدار صفر غیر فعال کنید.
- مقدار D را در LPF (d_lowpass_type ) رابر روی TP1 تنظیم کنید.این معمولا برای اکثر کوادکوپتر ها عملکرد خوبی را خواهد داشت اما برای اطمینان پس از تنظیم این مقدار کوادکوپتر خود را پرواز دهید و از عملکرد آن اطمینان حاصل کنید.
- مقدار STAGE2 LPF را بر روی 90 قرار دهید و Gyro LPF را غیر فعال کنید.
- اگر پرنده شما عملکرد عالی داشت و بدون هیچگونه نوسان خاصی پرواز میکرد میتوانید برای کمتر شدن بار پردازشی فلایت کنترل مقدار D در Notch Filter را نیز غیرفعال کنید.