رباتیک و هوافضا

کنترلر PID در کوادکوپتر ها – جلسه یازدهم

به نام خدا

کنترلر PID در کوادکوپتر ها

از رایج‌ترین نمونه‌های الگوریتم کنترل بازخوردی است که در بسیاری از فرایندهای کنترلی نظیر کنترل سرعت موتور DC، کنترل فشار، کنترل دما و… کاربرد دارد. کنترل کننده PID مقدار «خطا» بین خروجی فرایند و مقدار ورودی مطلوب (setpoint) محاسبه می‌کند. هدف کنترل‌کننده، به حداقل رساندن خطا با تنظیم ورودی‌های کنترل فرایند است.

PID از سه قسمت مجزا به نام‌های Proportional (تناسبی)،Integral (انتگرال‌گیر) و Derivative (مشتق‌گیر) تشکیل شده که هر کدام از آن‌ها سیگنال خطا را به عنوان ورودی گرفته و عملیاتی را روی ان انجام می‌دهند و در نهایت خروجی شان با هم جمع می‌شود. خروجی این مجموعه که همان خروجی کنترل‌کننده PID است برای اصلاح خطا (error) به سیستم فرستاده می‌شود.

فرمول استاندارد PID به فرم زیر است:

pid

بنابراین تابع تبدیل یک کنترل‌کننده PID به صورت زیر درمی‌آید:

pid2

در بسیاری از کنترل کننده ها به علت حساسیت عبارتِ مشتق نسبت به نویز و دشواری اجرا، از آن صرف نظر و کنترل را به صورت PI پیاده سازی می‌کنند. سیگنال  {\displaystyle u(t)} (خروجی PID) بر اساس نسبتی از خطای کنونی سیستم (عملکرد حاضر)، به اضافه مجموع خطاهای سیستم (رفتار گذشته)، به اضافه مشتق خطای کنونی (تخمین خطی رفتار اینده) محاسبه می‌شود و برای اصلاح خطا به سیستم اعمال می‌گردد. ضرایب K، {\displaystyle T_{i}} و {\displaystyle T_{d}} نیز می‌توانند با روش های شناخته شده‌ای مانند تابع انتقال به صورت بهینه محاسبه شوند، اگرچه در کاربردهای عملی، بطور رضایت بخش می‌توانند با آزمون و خطا و مشاهده رفتار سیستم بطور تقریبی تعیین گردند.

 

pid__animated

اثر تغییر پارامترهای مختلف یک کنترل‌کننده PID‌ ایده‌آل روی پاسخ پله یک سیستم خطی. ضریب Kp‌ سرعت سیستم را افزایش می‌دهد و خطای حالت دائم را تا حدودی کاهش می‌دهد (اما صفر نمی‌کند). افزودن جمله انتگرالی (ضریب Ki) خطای حالت دائم را صفر می‌کند، اما مقدار زیادی نوسانات ناخواسته (overshoot) به پاسخ گذرا اضافه می‌نماید. جمله مشتقی (Kd) نوسانات پاسخ گذرا را تضعیف کرده و پاسخ پله را به شکل پله ایده‌آل نزدیک می‌نماید.

کنترلر پی آی دی PID یک سیستم کنترلی حلقه بسته مخفف سه کلمه Proportional Integral Derivative است که سعی می کند نتایج مورد انتظار مارا با توجه به مقادیر ورودی برآورده سازد. کنترلر PID به اساس سه زمان کار می کند: زمان کنونی، زمان گذشته و زمان آینده. یعنی کنترلر PID شرایط فعلی را بررسی می کند از اتفاقات گذشته استفاده کرده و نهایتا آینده را نیز پیش بینی می کند. کوادکوپتر ها و مولتی روتورها از این سیستم کنترلی جهت رسیدن به تعادل استفاده می کنند.

 pid-and-quadcopter

واژه نامه:

مقدار فعلی: مقداری که کوادکوپتر در لحظه کنونی در آن قرار دارد. مثلا کوادکوپتر ۱۰ درجه با سطح افق فاصله دارد.

مقدار مورد انتظار: مقداری که انتظار داریم کوادکوپتر در آن قرار داشته باشد. مثلا کوادکوپتر باید منطبق با سطح افق باشد تا در حالت تعادل قرار گیرد. لذا مقدار مورد نظر ۰ است.

خطا: به اختلاف مقدار موردنظر و مقدار فعلی خطا می گویند.

ثابت ها: جهت بهبود کارایی کنترلر PID سه ثابت D, I, P را نیاز داریم تا میزان تاثیر هر یک از زمانها را با آن مشخص کنیم.

سه الگوریتم در یک سیستم کنترلی PID به نام های D, I, P وجود دارد. P وابسته به خطای کنونی سیستم است، I حاصل جمع خطاهای قبلی و D تخمین خطای آینده است. این سه الگوریتم نهایتا بصورت کد در آمده و در سیستم مورد استفاده قرار می گیرند.

بیشتر بخوانید...  ساخت ربات دو چرخ خود تعادلی

هدف این است که با ست کردن ثابت های این کنترلر، کنترل بهتری روی کوادکوپتر داشته باشیم و تا حد امکان خطا را صفر کنیم.

ویژگی P:

این ویژگی مهمترین ویژگی کنترلر است زیرا کوادکوپتر فقط با استفاده از این ویژگی میتواند پرواز کند. یعنی بدون استفاده از دیگر ویژگی ها و فقط با ای ویژگی میتواند در حالت تعادل قرار گیرد.

  • اگر ثابت خیلی کوچک باشد:
    • کوادکوپتر خیلی دیر پاسخ می دهد. ( در کوادکوپتر های نامتعادل ممکن است پاسخ ندهد.
    • کنترل کوادکوپتر مشکل می شود.
  • اگر ثابت خیلی بزرگ باشد:
    • در حالی که کوادکوپتر در حالت تعادل قرار دارد نوسان زیادی خواهد داشت.
    • حساسیت کوادکوپتر نسبت به تغییرات زاویه زیاد می شود.
  • اگر ثابت مقدار صحیح باشد:
    • کوادکوپتر سریع پاسخ می دهد
    • کوادکوپتر دقیقا در زاویه دلخواه قرار می گیرد.
    • کوادکوپتر نوسان جزیی دارد که قابل جبران است.

ویژگی I:

این ویژگی برای واکنش به تاثیرات محیطی مثل باد، عدم تعادل فریم و … کاربرد دارد. مثلا ممکن است باد کوادکوپتر را ۱۰ درجه منحرف کرده باشد. این ویژگی باعث می شود که کواد ۱۰ درجه را جبران کرده و مجددا در زاویه ای که قبلا بود قرار گیرد. در واقع این ویژگی عامل های بیرونی را جبران می کند.

  • اگر ثابت خیلی کوچک باشد:
    • عوامل بیرونی تاثیر زیادی در رفتار کوادکوپتر خواهند داشت.
  • اگر ثابت خیلی بزرگ باشد:
    • پاسخ کوادکوپتر مقدار کند است (به دلیل اینکه با افزایش این ثابت تاثیر ثابت P کمتر می شود).
    • کوادکوپتر نوسان خواهد کرد ولی فرکانس نوسان نسبت به ویژگی P کمتر است.
  • مقدار صحیح باشد:
    • کوادکوپتر به نرمی حرکت می کند در کنار اینکه پاسخ سریعی دارد.

از نظر مفهومی ویژگی I کنترلر همانند یک حافظه عمل می کند. مثلا ۱۰۰۰ حالت قبلی خود را در حافظه دارد و رفتار خود را با استفاده از اتفاقات گذشته تنظیم میکند. به عنوان مثال دیگر اگر فریم کوادکوپتر نامتعادل باشد باید موتوری که در قسمت سنگین تر قرار دارد با دور بیشتری بچرخد تا کوادکوپتر به تعادل برسد. این افزایش دور یک موتور در حافظه کوادکوپتر ثبت می شود تا در تصمیمات بعدی دخیل شود. همچنین هیچ دو موتوری دارای دور و ویژگی های یکسان نیستند لذا ویژگی I به کمک ا آمده تا این عوامل بیرونی که در رفتار کوادکوپتر تاثیر دارند را حذف کند.

ویژگی D:

این ویژگی به کوادکوپتر کمک می کند تا خیلی سریع از مقدار فعلی به مقدار مورد انتظار برسد. بعضی این ویژگی را به نام شتاب دهنده می شناسند به دلیل اینکه ورودی کاربر را چند برابر می کند. همچنین این ویژگی با کاهش سریع خطا سریعا کاهش پیدا می کند. به عنوان یک مثال وقتی شما شدیدا گرسنه هستید با سرعت بیشتری غذا می خورید تا وقتی که نسبتا سیر شوید و پس از آن سرعت غذا خوردن شما نیز کاهش می یابد. این ویژگی در عمل باعث افزایش سرعت پاسخ گویی کوادکوپتر می شود و بعضی مواقع تاثیر ویژگی P را افزایش می دهد.

بیشتر بخوانید...  دیتاشیت فارسی میکروکنترلر ATmega16

اگه مقدار بزرگی برای ثابت این ویژگی انتخاب شود کوادکوپتر با فرکانس بالا نوسان می کند.

بصورت مفهومی این ثابت ها میزان تاثیر ویژگی های متناظر را مشخص می کنند. به عنون مثلا وقتی ثابت I زیاد است یعنی کوادکوپتر بیشتر تابع گذشته خود است تا حال و آینده.

روش تنظیم ثابت های کنترلر:

قبل از هر چیزی باید کوادکوپتر را با نخ یا سیمی در جایی ثابت کنید تا کوادکوپتر فقط بتواند حول یک محور بچرخد ( Roll یا Pitch ).

نکته: اگر فریم شما متقارن باشد میتوان از ثابت های یافته شده یک محور برای محور دیگر هم استفاده کرد.

چند روش برای تنظیم قابت های کنترلر PID وجود دارد که سه تا از آنها را نام می بریم:

  1. روش سعی و خطا: این روش یکی از ساده ترین و عمومی ترین روشهای تنظیم ثابت های کنترلر می باشد که با سعی و خطا می توانیم به مقادیر نسبتا دقیقی برسیم.
  2. استفاده از الگوریتم های اکتشافی همانند الگوریتم های ژنتیک که با استفاده از تکامل داروین سعی در پیدا کردن این ثابت ها می کنند. در این الگوریتم اعداد نسبتا ( و تا حدودی هوشمند ) تصادفی برای ثابت ها در نظر گرفته می شود و هر بار خروجی مورد بررسی قرار می گیرد تا بهترین ثابت ها مشخص شوند.
  3. روش Ziegler–Nichols: در این روش با استفاده از محاسبات ریاضی ثابت ها محاسبه می شوند.

روش سعی و خطا:

  1. ثابت های D و I را صفر در نظر بگیرید و کم کم مقدار P را افزایش دهید تا زمانی که کوادکوپتر شروع به نوسان کند. سپس مقدار P را کمی کم کنید تا دیگر نوسانی نداشته باشد. بهترین حالت برای این ثابت زمانی است که کوادکوپتر در حالی که سریع واکنش می دهد نوسانی هم ندارد.
  2. پس از اینکه مقدار مشخصی را برای ثابت P بدست آوردید کم کم ثابت I را افزایش دهید. کوادکوتر را حول محور بچرخوانید و به زمانی که طول می کشد تا کوادکوپتر به حالت تعادل برسد توجه کنید. این زمان باید خیلی کوتاه باشد. همچنین این ویژگی را در محیط های مختلف با عوامل خارجی تست کنید تا به بهترین مقدار I برسید.
  3. حال نوبت به ثابت D می رسد. به آرامی این مقدار را زیاد کنید تا نوسانات از بین برود. جهت بهبود کارایی پس از تنظیم ثابت D می توانید مجددا به سراغ ثابت P رفته و مقدار آن را افزایش دهید.

در حال کلی P و D رابطه مستقیم با هم دارند و رابطه عکس با I و لذا تغییر در ثابت ها یک روند حلقوی است یعنی پس از طی کردن ۳ مرحله فوق مجددا باید به مرحله ۱ برگشت و مقادیر را تغیر داد تا زمانی که بهترین نتیجه حاصل شود.

نهایتا دو مدل پروازی وجود دارد که با توجه به نیاز خود می توانید ثابت ها را تنظیم کنید.

  • پرواز آکروباتیک: در این نوع پرواز واکنش کوادکوپتر خیلی سریع است. این مدل نیازمند ثابت های P و D زیاد و I کم است
  • پرواز نرم و ملایم: در این نوع پرواز واکنش کوادکوپتر آرام و نرم است. این مدل نیازمند ثابت های P و D کم و I زیاد است.

 

دیدگاه‌ها (8)

*
*

    مقداد قمرنیا مهمان اسفند 9, 1395 پاسخ

    با سلام و احترام
    مطلب بسیار زیبا و کاملی بود.سپاسگزارم.با آرزوی موفقیت روزافزون...

      Admin مدیر کل فروردین 11, 1396 پاسخ

      سلام .
      خیلی ممنون

    یعقوب مهمان مرداد 13, 1396 پاسخ

    بسیار عالی ممنون خسته نباشید

      Admin مدیر کل مرداد 15, 1396 پاسخ

      سلام .
      خیلی ممنون از انرژی تون

    آریان مهمان مرداد 17, 1396 پاسخ

    بسیار مطلب مفیدی برای بنده بود،خسته نباشید.

      Admin مدیر کل مرداد 18, 1396 پاسخ

      سلام
      ممنون

    احمد مهمان آذر 22, 1396 پاسخ

    عالی

      Admin مدیر کل آذر 27, 1396 پاسخ

      ممنون