درک مکانیسم کنترل و حرکت کوادکوپتر ها

کلمه ی کوادکوپتر از دو کلمه ی کواد + کوپتر تشکیل شده است. که کلمه ی کواد به معنی چهارگانه و کوپتر هم به صورت عام به معنی پرنده است. پس به صورت کلی کوادکوپتر یعنی یک پرنده ی چهار موتوره. این پرنده ها برای کاربرد های فیلمبرداری، نقشه برداری، نظامی، حمل و نقل و... استفاده می شوند و از مزیت های اصلی آنها نسبت به پرنده هایی مثل هواپیما و هلیکوپتر می توان به مکانیک ساده، قدرت مانور دهی بالا و یک جا ایستادن (هاور کردن) اشاره کرد.

کواد کوپتر سایز کوچک ساخته شده توسط تیم kn2c
کواد کوپتر سایز کوچک ساخته شده توسط تیم kn2c

احتمالا کوادکوپتر ها و نحوه ی مانور دادن آن ها را از قبل دیده اید.

در این نوشته قصد داریم به کمک چند مفهوم ساده ی ریاضی نحوه حرکت کوادکوپتر ها را ترسیم کنیم.

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

فرض کنید در دستگاه مختصات دکارتی هستیم. یک دستگاه مرجع در نظر می گیریم حال دستگاه ثانویه ای را تصور کنید که مبدا آن روی مبدا دستگاه مرجع است ولی نسبت به آن چرخیده است.

دستگاه مرجع و دستگاه چرخش یافته در مقایسه با هم
دستگاه مرجع و دستگاه چرخش یافته در مقایسه با هم

برای نشان دادن این چرخش تنها به یک متغیر نیاز داریم و این همان زاویه ی Θ یعنی زاویه ی بین محور x دستگاه اولیه و ثانویه است.

اما حالا همین شرایط را برای دو دستگاه سه بعدی که نسبت به هم چرخیده اند فرض کنید. اینجا برای اینکه همه ی حالت ها و زوایای چرخش دو دستگاه را نسبت به هم پوشش دهیم به سه متغیر نیاز داریم که به آن ها pitch ،roll و yaw گفته می شود.در واقع این سه وضعیت چرخش دستگاه ثانویه را که می تواند یک هواپیما یا یک کوادکوپتر باشد نسبت به دستگاه مرجع به صورت یکتا نشان می دهد.

نمایی از زوایای pitch ،roll و yaw
نمایی از زوایای pitch ،roll و yaw

حالا که حسی نسبت به این سه زاویه پیدا کردیم به بررسی خود کوادکوپتر می پردازیم.اول یک شکل از بالا از کوادکوپتر و همچنین جهت چرخش پره های آن ببینیم که این برای مفاهیم بعدی به دردمان می خورد.

شِمایی ساده از یک کواد کوپتر و جهت چرخش پره ها
شِمایی ساده از یک کواد کوپتر و جهت چرخش پره ها


فرض کنید سرعت زاویه ای هرکدام از موتور های 1 تا 4 را با w1 تا w4 معرفی کنیم.

اول سراغ نیروی بالابر پرنده می رویم که برای ایجاد کردن نیروی بالابر باید به w1 تا w4 یک مقدار ثابت مثل T اضافه کنیم.

اگر می خواهیم به pitch پرنده اضافه کنیم یعنی دماغه ی آن را پایین بدهیم باید مقداری مثل P را از w1 و w3 کم کنیم و همچنین به w2 و w4 اضافه کنیم. اگر خواستیم دماغه بالا رود به راحتی عدد P را منفی می کنیم.

حالا roll را بررسی می کنیم. اگر بخواهیم این زاویه را زیاد کنیم (به صورت شهودی یعنی اینکه سمت راست پرنده پایین می رود و سمت چپش بالا می آید) باید مقداری مثل R را از سرعت موتور های راستی یعنی w1 و w4 کم کنیم و به موتور های چپی یعنی w3 و w2 اضافه کنیم.

در نهایت به بررسی yaw می پردازیم. زیاد شدن این زاویه به صورت شهودی یعنی اینکه پرنده دور خودش می چرخد. باید بدانید که همان طور که در بحث نیرو، عمل و عکس العمل داریم در چرخش هم مشابه این امر وجود دارد. یعنی این که وقتی موتور 1 پادساعتگرد می چرخد عکس العملش باعث می شود بدنه پرنده ساعتگرد بچرخد و ما از همین عکس العمل استفاده می کنیم تا بتوانیم yaw کوادکوپتر را عوض کنیم. پس برای زیاد کردن yaw مقدار Y را از w3 و w4 کم می کنیم و به w1 و w2 اضافه می کنیم.

خلاصه ی این توضیحات را در این شکل ببینیم:

شکلی از تاثیر کم و زیاد کردن دور موتور ها در حالات مختلف
شکلی از تاثیر کم و زیاد کردن دور موتور ها در حالات مختلف


خلاصه ای از معادلاتی که توضیح داده شد ببینیم:

خلاصه معادلات دور موتور های کوادکوپتر
خلاصه معادلات دور موتور های کوادکوپتر

همون طور که می بینید این چهار معادله که ظاهر ساده ای هم دارند نشان می دهند که مثلا در تراست (نیروی بالابر) فقط جمع نیروی چهار موتور مطرح است که اگر w1 تا w4 را با هم جمع بزنیم به 4T می رسیم این یعنی سه پارامتر دیگه(P ،R و Y) روی این نیرو اثری ندارند و فقط باعث چرخش پرنده می شوند.

تا الان شهودی راجع به این که دور موتور های کوادکوپتر چه باشند پیدا کردیم. حالا به بررسی این که کوادکوپتر ها چه طور حرکت می کنند، می پردازیم. اولش بگوییم که خود کوادکوپتر پایدار نیست و مدام نیاز دارد که کنترل بشود تا بتواند خوب پرواز کند. وظیفه ی این کنترل بر عهده ی فلایت کنترلر است. که با سنسور های خودش زاویه های pitch ،roll و yaw پرنده را اندازه می گیرد و مدام محاسبه می کند که عدد های P ،R و Y چه باشند تا زاویه های pitch ،roll و yaw پرنده ثابت بماند و آنی بشود که به فلایت کنترلر دستور داده شده. پس الان فرض می کنیم که زاویه ی پرنده توسط فلایت کنترلر، کنترل شده و همانی شده که ما می خواهیم پس ما تا الان سه خواسته که همان زوایای pitch ،roll و yaw مطلوب هستند داریم. حال عدد T باقی می ماند که آن هم خود مستقیم به فلایت کنترلر می فرستیم پس با T شد چهار پارامتر که با استفاده از یک دسته مثل دسته های بازی این عدد ها به فلایت کنترلر منتقل می شوند. شکل زیر نشان دهنده ی این توضیحات روی دسته های رایج کوادکوپتر هاست:

شمای کلی از یک دسته ی رایج برای کوادکوپتر ها
شمای کلی از یک دسته ی رایج برای کوادکوپتر ها


در نهایت شکل زیر مشخص می کند که پرنده ی ما چه طور سرعت افقی می گیرد:

شمایی از حرکت افقی کوادکوپتر
شمایی از حرکت افقی کوادکوپتر

همان طور که می بینید نیروی وزن با مولفه ی عمودی thrust (که از جنس نیروست و رابطه ی مستقیم با 4T دارد که این رابطه به ویژگی های پره مربوط است).خنثی می شود و مولفه ی افقی thrust باعث شتاب گرفتن پرنده در راستای افقی می گردد که با motion در عکس نشان داده شده است.

پس کلا ما می توانیم این پرنده را در مختصات x,y,z جا به جا کنیم و آن را در این نقاط ثابت نگه داریم یعنی بردار سرعت برایند پرنده صفر می شود. این امری است که در خیلی از پرنده ها مثل هواپیما های مسافری امکان پذیر نیست.(هواپیمای مسافری امکان هاور کردن ندارد.)

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