خانه - تاریخچه تعمیر
کنترل کننده PID دیفرانسیل انتگرال متناسب در رباتیک Lego Mindstorms. تنظیم کننده متناسب مسابقه بین المللی ربات - قوانین - نمونه های ربات - برنامه متناسب با ربات LEGO EV3 Trajectory

روباتیک جهت جالب جدیدی است که ظاهراً در چارچوب دوره های علوم کامپیوتر و فناوری رایانه در مدارس توسعه خواهد یافت. رونق رباتیک عمدتاً به این دلیل است که به شما امکان می دهد به این سؤال پاسخ دهید: "چرا ما در واقع برنامه نویسی را یاد می گیریم؟" علاوه بر این ، در دوره رباتیک می توانید با مفاهیم ابتدایی نظریه کنترل خودکار آشنا شوید.

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

شبیه سازها از قابلیت های HTML5 استفاده می کنند ، بنابراین فقط در مرورگرهای مدرن کار خواهند کرد (بهتر است از آنها استفاده کنید) گوگل کروم یا موزیلا فایرفاکس).

اخبار اکنون نیز در کانال تلگرام

27 نوامبر 2015
آهنگ "جنین" به شبیه سازها اضافه شده است ( M.V. لازاروف، Orekhovo-Zuevo).

13 اکتبر 2015
اکنون می توانید آهنگ های (زمینه های ربات) خود را در شبیه سازهای ربات LEGO بارگیری کنید. چگونه انجامش بدهیم؟ نگاه کن
شبیه سازهای جدید اضافه شده - روبات های LEGO با سنسورهای دو ، سه ، چهار.

زبان کنترل ربات

برای کنترل ربات ها در شبیه سازها ، از یک زبان برنامه نویسی ساده استفاده می شود که نام کاربری را دریافت کرده است SiRoP (برنامه نویسی ربات ساده).

کنترل یک ربات با سنسور نور

سنسور نور به ربات اجازه می دهد تا خود را روی سطح جدول قرار دهد ، به عنوان مثال ، در امتداد مرز بین مناطق سفید و سیاه (در امتداد لبه خط سیاه) حرکت کند. فوتوديود سطح را روشن مي کند ، فتودنتکتور اشعه هاي بازتاب شده را "گرفت" و شدت آنها را اندازه مي گيرد.

محبوب ترین کار از این نوع دنبال کردن یک خط است. با کمک شبیه ساز ، شما می توانید قوانین کنترل مختلف - رله ، متناسب و حتی کنترل PID (متناسب-انتگرال-دیفرانسیل) را مطالعه کنید.

نمونه برنامه هایی برای روبات با سنسور نور

در حالی که 1 (اگر سنسور\u003e 128 (موتور \u003d 100 موتور \u003d 0) در غیر این صورت (موتور \u003d 0 موتور \u003d 100) صبر کنید (10))

KP \u003d 0.2 در حالی که 1 (u \u003d kP * (سنسور 128) موتور \u003d 50 + u موتور \u003d 50 - صبر می کنید (20))

اصلی (در حالی که 1 (در حالی که سنسور\u003e 128 (موتور \u003d 100 موتور \u003d 100 انتظار (10)) به عقب () چرخش ())) عقب (موتور \u003d -100 موتور \u003d -100 صبر (260)) به نوبه خود (موتور \u003d -50 موتور \u003d 50 صبر (50))

کنترل ربات با دو سنسور نور

دو سنسور نور به ربات اجازه می دهد تا بهتر حرکت کند و در امتداد یک خط نازک رانندگی کند. آنها کمی جلو آورده شده و از هم جدا می شوند. در مورد کارهایی که دارای یک سنسور هستند ، قوانین کنترل مختلف با این شبیه ساز قابل بررسی است.

نمونه برنامه های روبات با سه سنسور نور

کنترل ربات با چهار سنسور نور

چهار سنسور نور به ربات اجازه می دهد چرخش های محکم را بهتر تشخیص دهد. از سنسورهای داخلی برای تنظیم دقیق استفاده می شود ، از کنترل متناسب برای آنها استفاده می شود. دو سنسور خارجی کمی جلو و از هم قرار گرفته اند. آنها هنگام استفاده از چرخش شدید استفاده می شوند. سود برای کنترل با توجه به قرائت سنسورهای جفت بیرونی بیشتر از جفت داخلی انتخاب می شود (نگاه کنید به. L.Yu. Ovanyanitskaya و همکاران ، الگوریتم ها و برنامه هایی برای حرکت ربات Lego Mindstorms EV3 در امتداد خط، م.: "پرو" ، 2015).

نمونه برنامه هایی برای روبات با چهار سنسور نور

در حالی که 1 (d0 \u003d رمزگذار\u003e 128 d1 \u003d رمزگذار\u003e 128 d2 \u003d رمزگذار\u003e 128 d3 \u003d رمزگذار\u003e 128 اگر d1 &! D2 (موتور \u003d 100 موتور \u003d 0) اگر! D1 & d2 (موتور \u003d 0 موتور \u003d 100) اگر d1 \u003d\u003d d2 (موتور \u003d 100 موتور \u003d 100) اگر d0 &! d3 (موتور \u003d 30 موتور \u003d 0) اگر! d0 & d3 (موتور \u003d 0 موتور \u003d 30) صبر کنید (10)

K1 \u003d 0.2 k2 \u003d 0.4 در حالی که 1 (u1 \u003d سنسور - سنسور u2 \u003d سنسور - سنسور موتور \u003d 50 + k1 * u1 + k2 * u2 موتور \u003d 50-k1 * u1-k2 * u2 صبر کنید (10))

کنترل یک ربات با سنسور فاصله (سونار)

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

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

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

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

در مثال ما ، سه نمونه از روبات ها را بر اساس مدل پایه Robot Teacher تجزیه خواهیم کرد.

برای شروع ، ما یک مدل اساسی از ربات آموزشی Robot آموزگار را جمع می کنیم ، برای این کار می توانید از دستورالعمل های موجود در نرم افزار MINDSTORMS EV3 استفاده کنید.

همچنین برای مثال به سنسورهای نور EV3 نیاز داریم. این سنسورهای نور ، مانند هیچ کس ، به بهترین وجهی برای وظیفه ما مناسب نیستند ، هنگام کار با آنها ، لازم نیست نگران شدت نور محیط باشیم. برای این سنسور ، در برنامه ها از حالت نور منعکس شده استفاده خواهیم کرد که در آن میزان نور منعکس شده از نور پس زمینه قرمز سنسور تخمین زده می شود. محدودیت خوانشگرهای سنسور 0 - 100 واحد است ، برای "بدون تأمل" و "بازتاب کامل" ، به ترتیب.

به عنوان مثال ، ما 3 نمونه از برنامه ها را برای حرکت در امتداد یک مسیر سیاه که در یک پس زمینه صاف و سبک به تصویر کشیده شده است ، تجزیه و تحلیل خواهیم کرد:

· یک سنسور ، با تنظیم کننده P.

· یک سنسور ، با کنترلر PC.

· دو سنسور

مثال 1. یک سنسور با کنترل کننده P.

طرح

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


الگوریتم

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


از آنجا که در یک مسیر واقعی ، سنسور مقادیر را در کل محدوده کاری خود ایجاد می کند (0-100) ، بنابراین مقداری که ربات در آن تلاش می کند 50 است. در این حالت مقادیر منتقل شده به توابع چرخش در محدوده -50-50 تشکیل می شوند ، اما این مقادیر برای یک شیب کافی نیستند. چرخش مسیر. بنابراین ، دامنه باید توسط یک و نیم بار تا -75 - 75 گسترش یابد.

در نتیجه ، در برنامه ، عملکرد ماشین حساب یک کنترلر متناسب ساده است. عملکرد آنها ( (a-50) * 1.5 ) در محدوده کاری سنسور نور مقادیر چرخش را مطابق با نمودار تولید می کند:

نمونه ای از نحوه کار این الگوریتم

مثال 2. یک سنسور ، با یک کنترلر رایانه شخصی.

این مثال در همان ساختاری بنا شده است.

شاید متوجه شده باشید که در مثال قبلی ، این ربات بیش از حد لرزید ، که اجازه نمی داد آن را به اندازه کافی شتاب کند. اکنون ما سعی خواهیم کرد تا کمی این وضعیت را بهبود بخشیم.

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

یک کنترل کننده متناسب وسیله ای است که متناسب با انحراف خطی آن (t) از یک حالت معین x0 (t) ، یک اثر کنترل u (t) را روی یک شی اعمال می کند.

e (t) \u003d x0 (t) -x (t) ، که x (t) وضعیت در زمان معین است.

u (t) \u003d ke (t) ، در جایی که k یک عامل افزایش است.
یعنی هرچه روبات از مسیر معین انحراف یابد ، موتورها باید فعال تر عمل کنند ، آنرا تراز کنند.

ردیابی خط با یک سنسور نور با استفاده از کنترل کننده P

حرکت در امتداد مرز سیاه و سفید نیز می تواند بر روی کنترل کننده P ساخته شود. اگرچه از نظر ظاهری ، به نظر می رسد که این مشکل فقط با کمک یک کنترل رله حل می شود ، زیرا تنها دو حالت قابل مشاهده برای چشم انسان در سیستم وجود دارد: سیاه و سفید. اما این روبات همه چیز را متفاوت می بیند ، زیرا هیچ مرز مشخصی بین این رنگ ها وجود ندارد. می توانید بگویید که او کوتاه بینا است و شاهد گذار شیب سایه های خاکستری است.

این همان چیزی است که به ساخت یک کنترلر P کمک خواهد کرد.
با مشخص کردن وضعیت کار به عنوان خوانش سنسور نور ، ما یاد خواهیم گرفت براساس قانون زیر اثر کنترل متناسب بر روی موتورها تهیه کنیم:
e \u003d s1-خاکستری ، که در آن s1 خواندن سنسور فعلی و خاکستری مقدار هدف است.

ضریب k (که در این مثال 2 است) باید به اندازه کافی کوچک باشد (از 1 تا 3). چنین تنظیم کننده فقط برای زاویه های کوچک انحراف کار می کند ؛ بنابراین ، روبات باید در جهت حرکت قرار گیرد تا سنسور در سمت چپ خط سیاه قرار داشته باشد. به راحتی می توان دریافت که حرکت در امتداد خط روی کنترل کننده P صاف است. و در بعضی از مناطق کار تقریباً در یک خط مستقیم یا دقیقاً زیر خم های خط حرکت می کند.

کالیبراسیون سنسور

بیایید به عدد 48 مورد استفاده در فرمول برگردیم. این میانگین حساسیت سنسور نور در سیاه و سفید است ، به عنوان مثال (40 + 56) / 2 \u003d 48. با این حال ، خوانش سنسورها اغلب به دلایل مختلف تغییر می کنند: یک سطح متفاوت ، تغییر در روشنایی عمومی در اتاق ، تغییر جزئی در ساختار و غیره. بنابراین با تعیین خوانش سنسور نور بر روی رنگ سفید و سیاه ، ربات را به صورت دستی کالیبره می کنیم.

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

  • هر دو روی سفید - مستقیم جلو.
  • سمت چپ (s1) سیاه نیست ، راست (s2) روی سفید - حرکت به سمت چپ.
  • چپ بر روی سفید ، راست بر روی سیاه - حرکت به راست؛
  • هر دو روی سیاه - مستقیم جلو.
بنابراین اگر خوانش سنسور مساوی باشد (هر دو سفید یا سیاه) ، ربات مستقیماً رانده می شود. قبل از شروع ربات ، هر دو سنسور را به صورت خودکار کالیبره می کنیم. سپس الگوریتم حرکت در امتداد خط با کنترل کننده P مانند s.s به نظر می رسد:

ضریب k بسته به انحنای خط ، مانور پذیری ربات و تفاوت بین سیاه و سفید در زمینه ، می تواند در یک دامنه نسبتاً گسترده (از 1 تا 20 یا بیشتر) متفاوت باشد.
شرط مهمی کالیبراسیون خودکار باید روی یک سطح تک رنگ و ترجیحاً در روشنایی انجام شود که بزرگترین قسمت مسیر را اشغال می کند. به عنوان مثال ، اگر یک ربات در امتداد یک خط سیاه بر روی یک زمینه سفید در حال رانندگی است ، باید روی یک کالیبره شده بر روی یک سفید باشد. آن موقعیت ربات در شروع باید مانند این باشد:


و یک نکته دیگر سنسورهایی وجود دارد که قرائت آنها بین 20-20٪ متفاوت است. توصیه می شود آنها را با تنظیم کننده با ضریب زیاد جفت نکنید ، زیرا با تغییر شدید در روشنایی کلی ، حتی در یک زمینه سفید یکنواخت ، ممکن است انحرافات متفاوت باشد که منجر به عواقب غیرمنتظره خواهد شد. جزئیات نویسنده: Konovalov Igor کنترلر متناسب یک پیشرفت است. نقطه ضعف اصلی رله این است که اهمیتی نمی دهد که مقادیر فعلی با مقدار عادی سنسور تفاوت داشته باشند. این تنها دو حالت است - یا سعی کنید اگر سن آنها کمتر از مقدار معمولی است ، مقادیر سنسور را با یک عدد ثابت خاص افزایش دهید ، یا آن را افزایش دهید. به همین دلیل نوسانات با دامنه ثابت رخ می دهد که بسیار ناکارآمد است.
این بسیار منطقی تر است که تعیین کنیم خوانش های فعلی تا چه حد از حالت عادی است و دامنه بسته به این تغییر می کند. برای اینکه واضح تر شود ، مثالی می آوریم. مثال ، مانند مقاله قبلی ، یکسان است: یک روبات از Lego Mindstorms EV3 با استفاده از یک سنسور تک رنگ در حالت نور در امتداد یک خط سیاه حرکت می کند.

این روبات سعی می کند در امتداد مرز بین سفید و سیاه رانندگی کند و در آنجا سنسور حدود 50٪ نور را نشان می دهد. و هرچه از وضعیت طبیعی بیشتر باشد ، بیشتر تلاش می کند تا روبات به 50٪ برگردد.
برای نوشتن برنامه از اصطلاحات "خطا" ، "عمل کنترلی" استفاده خواهیم کرد. خطا - تفاوت بین خواندن سنسور فعلی با حالت عادی است. در مورد ما ، اگر اکنون روبات 20٪ از نور را مشاهده می کند ، خطا 20-50 \u003d -30٪ است. علامت خطا نشان می دهد که جهت رهایی از خط ، روبات باید جهت بگردد. حال باید به موتورهایی بگوییم که ربات در کدام جهت به چرخش می رود ، با چه سرعتی و به شدت. لازم است تا یک اثر کنترل بر روی موتورها اعمال شود ، به این معنی که چقدر ناگهان باید به وضعیت عادی برگردد. عمل كنترل (UP) به صورت خطا ضرب شده با ضريب تناسب (k) محاسبه مي شود. این فاکتور برای افزایش یا کاهش تأثیر خطا بر عملکرد کنترل استفاده می شود. کنترل به فرمان هدایت می شود ، جایی که میانگین سرعت روبات تنظیم شده است.
نسبت ابعاد را چگونه تنظیم می کنید؟ مقادیر را به صورت تجربی انتخاب کنید ، برای رانندگی مسیر می تواند بسته به سرعت و طراحی ربات ، از 0.2 تا 1.5 باشد. اگر ضریب خیلی بزرگ باشد ، آنگاه ربات به شدت واگن می زند ، اگر کوچک باشد ، به آرامی رانندگی می کند ، اما در بعضی از قسمت های گوشه به دلیل عدم کنترل کافی حرکت می کند. بیایید دو نسخه از برنامه را بنویسیم - با متغیرها (برای کسانی که قبلاً آنها را مطالعه کرده اند) و بدون آن.


اما این تنظیم کننده همچنین می تواند با معرفی یک مؤلفه متناسب و انتگرال تقویت شود ، توضیحات در مقاله های بعدی خواهد بود. به زودی میبینمت!

کنترل کننده متناسب

شرح

در کنترل خودکار ، عملکرد کنترلی u (t) معمولاً تابعی از خطای پویا است - انحراف e (t) از متغیر کنترل شده x (t) از مقدار مشخص شده x0 (t):

e (t) \u003d x0 (t) - x (t).

این اصل تنظیم انحراف Polzunov-Watt یا اصل بازخورد است. اصطلاح ریاضی وابستگی عملکردی عملکرد کنترلی مورد نظر u0 (t) از مقادیر اندازه گیری شده توسط کنترل کننده ، قانون یا الگوریتم کنترل نامیده می شود که در بالا به آن اشاره شد.

کنترل کننده متناسب دستگاهی است که متناسب با انحراف آن از یک حالت معین ، اثر کنترل بر روی یک جسم اعمال می کند:

در اینجا k سود حاصل از کنترل کننده است.

حالت داده شده x0 معمولاً setpoint نام دارد و انحراف e از آن باقیمانده نامیده می شود. علاوه بر این ، برای قطعی بودن ، ما مانده را با اختصار err (از کلمه انگلیسی "خطا" - یک خطا) بیان خواهیم کرد.

کنترل موتور

یک رزمنده باتجربه مانند روبات روی رله کنترل ، شمشیر نمی خورد. لازم است با الگوریتمی پیش بروید که موتور شمشیر را در موقعیتی ثابت ثابت نگه دارد (شکل 7.1). کنترل کننده P در این زمینه کمک خواهد کرد.

بگذارید e 1 - قرائت سنسور سرعت 1 روی موتور A ، مقدار کنترل شده باشد. تنظیم x0 \u003d 45 است و باقیمانده e \u003d 45 - e 1. سپس عمل کنترل روی موتور توسط فرمول داده می شود

u \u003d k ∙ (45 - e 1).

در اینجا k به دست آمده است ، به عنوان مثال 5 ، که حتی با انحراف های کوچک از نقطه تنظیم ، پاسخ موتور را افزایش می دهد.

1 با استفاده از خواندن رمزگذار e 1 (از رمزگذار) ، متغیر پیش تعریف شده محیط Robolab ، نماد ریاضی باقیمانده e (از خطا) را اشتباه نگیرید.

با انحراف در جهت مثبت ، یک عمل کنترلی منفی بر روی موتور اعمال خواهد شد و برعکس. این کنترل را می توان در یک حلقه با تأخیر اندکی از 1-10 میلی ثانیه برای خالی کردن کنترلر به موتور اعمال کرد (شکل 7.8).

شکل: 7.8 الگوریتم کنترل موتور بر روی یک کنترلر متناسب.

اگر ضریب افزایش از 5 به 100 افزایش یابد ، تنظیم کننده متناسب ما به عنوان رله شروع به کار می کند و به دلیل اثر بیش از حد نوسانات شدید ایجاد می کند.

به زبان RobotC ، چنین توصیفی مناسب از خواندن رمزگذار مانند Robolab وجود ندارد ، بنابراین این برنامه کمی طولانی تر به نظر می رسد:

int k \u003d 5 ، u؛ nMotorEncoder \u003d 0؛ در حالی که (درست)

u \u003d k * (45 nMotorEncoder)؛ موتور \u003d تو؛

علاوه بر این ، برای ضربه زدن به شمشیر ، کافی است با داشتن یک متغیر به جای عدد 45 ، مقدار خود را از خارج ، به عنوان مثال ، از یک کار موازی تغییر دهید. این در بخش مربوط به درامرهای روباتیک در فصل 8 آمده است.

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

کنترلر NXT دارای چهار تایمر داخلی است که هر کدام می توانند زمان را در دهم ، صدم و هزارم ثانیه اندازه گیری کنند. بیایید به اولین تایمر ، که 10 "تای

کو ". در Robolab به عنوان T1 یا Timer100ms1 مشخص می شود و در RobotC نیز تایمر 100 است.

آلفای زاویه انحراف موتور ، که در مثال قبلی با مقدار 45 داده شده است ، به قرائت تایمر با ضریب شتاب k 2 بستگی دارد:

alpha \u003d k2 ∙ T1.

عملکرد کنترل با ضریب تقویت کننده k 1 یکسان خواهد بود:

u \u003d k 1 ∙ (alpha - e 1).

به طور خلاصه ، در برنامه به زبان Robolab ، بلافاصله اقدام به کنترل موتور خواهیم کرد ، زیرا قبلاً تایمر را به طور اولیه تنظیم کرده اید

شکل: 7.9 کنترل سرعت موتور یک بار در ثانیه است.

ضریب k 2 \u003d 36 تعیین می کند که مقدار آلفا حداکثر 360 ثانیه در ثانیه است ، که مربوط به یک انقلاب کامل موتور است:

int k1 \u003d 2، k2 \u003d 36، u، alpha؛ nMotorEncoder \u003d 0؛ ClearTimer (T1)؛ در حالی که (درست)

alpha \u003d timer100 * k2؛ u \u003d k1 * (alpha-nMotorEncoder)؛ موتور \u003d تو؛

با استفاده از تقسیم عدد صحیح ، که در زبان C (و در Robolab) برای متغیرهای از نوع عدد صحیح پذیرفته شده است ، می توان به یک تغییر گسسته در زاویه ، یعنی رسید. آن را یک بار در ثانیه افزایش دهید:

alpha \u003d T 1/10 ∙ k 2.

با ضریب k 2 \u003d 60 ، حرکت پرت با حرکت دست دوم روی شماره گیری ساعت مطابقت دارد. اما این کافی نیست

قابل ملاحظه ای. برای وضوح ، می توانید k2 \u003d 30 را تنظیم کنید ، سپس پیکان در 12 "کنه" از 30 درجه یک انقلاب کامل ایجاد می کند. مراقب باشید با دنباله عملیات تقسیم عدد صحیح و ضرب ، قطعاً تغییر در ترتیب یا "کاهش" آنها نتیجه را تغییر خواهد داد (شکل 7.10).

شکل: 7.10 تقلید شتاب از حرکت دست ساعت.

و سرانجام ، نمونه ای از طبل ریاضی. به جای اینکه مرتباً به جلو حرکت کند ، سوزن به زیر کنترلر P تغییر می کند. بخش باقیمانده ، که با علامت٪ در C مشخص شده است ، به این امر کمک می کند. باقی مانده تقسیم عدد صحیح غیر منفی بر 2 همیشه 0 یا 1 خواهد بود:

آلفا \u003d T 1٪ 2 ∙ K 2.

تقویت انحراف توسط یک عامل k 2 \u003d 15 برابر ، ما یک آلفا از نقطه تنظیم نوسان می گیریم ، که تنظیم کننده را مجبور می کند موتور را 5 بار در ثانیه به 0 درجه و سپس 15 درجه حرکت دهد. تغییرات در برنامه جزئی است. بیایید یک مثال در RobotC در نظر بگیریم:

int k1 \u003d 3 ، k2 \u003d 15 ، u ، alpha؛ nMotorEncoder \u003d 0؛ ClearTimer (T1)؛ در حالی که (درست)

alpha \u003d timer100٪ 2 * k2؛ u \u003d k1 * (alpha-nMotorEncoder)؛ موتور \u003d تو؛

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

آلفا \u003d T 1٪ 5٪ 2 ∙ K 2.

مرکز \u003d S3

ضریب در چرخه تعیین می شود:

k 1 \u003d c + (S 3 - مرکز) / k 2.

شکل: 7.36 حرکت خط بر روی یک کنترل کننده متغیر فاکتور شناور.

قانون کنترل به دست آمده می تواند نه تنها برای مؤلفه متناسب ، بلکه در مورد سایر موارد ، و همچنین به عنوان کنترل در کل اعمال شود (شکل 7.36).

کنترل کننده PID

کنترلر متناسب-انتگرال مشتق (PID) یکی از محبوب ترین است و در دستگاه های مختلفی از انواع مختلفی استفاده می شود که نیاز به پاسخ سریع و دقت موقعیت یابی دارند. همانطور که از نام آن پیداست ، این تنظیم کننده از مجموع سه مؤلفه تشکیل شده و به صورت گرافیکی در شکل نشان داده شده است. 7.37

شکل: 7.37 مدار کنترل کننده PID.

این یک نمودار ساده است. مقدار خطای دینامیکی e (t) به ورودی کنترلر تغذیه می شود و عملکرد کنترلی u (t) در خروجی ایجاد می شود:

u (t) \u003d p + i + d \u003d k p ∙ e (t) + k i ∙ ò t

e (τ) d τ + k d ∙

د

مؤلفه متناسب ، که در نمودار به صورت مثلث نشان داده شده است ، وظیفه قرارگیری سیستم در یک حالت معین را دارد. در بعضی موارد ، با نوسانات بعدی خود می تواند باعث برآمدگی شود. یعنی کنترل کننده P می تواند "بیش از حد از آن استفاده کند" و ربات از یک طرف به سمت دیگر شروع به حرکت می کند.

جزء انتگرال تجارب منفی را جمع می کند (خلاصه ها را خلاصه می کند) و یک اثر جبران کننده ایجاد می کند. با حداقل انحراف ، مؤلفه متناسب "تضعیف می شود" و انتگرال به دلیل افزایش سریع آن با جمع ، به "کشیدن" مقدار کنترل شده به قسمت تعیین شده کمک می کند.

جزء دیفرانسیل (D-مؤلفه) میزان تغییر در وضعیت سیستم را تحت نظر دارد و مانع از خروج احتمالی آن می شود. در بعضی موارد ، مؤلفه D با علامت متناسب متناسب است و در بعضی موارد همزمان است.

ما قبلاً با مؤلفه متناسب آشنا هستیم ، دیفرانسیل در فصل قبل توضیح داده شده است. بیایید انتگرال را بگیریم. این کامپوننت به صورت پویا تعیین می شود و با مقدار قبلی اضافه می شود:

i \u003d i + ki × e (t). dt.

معنای بدنی مقدار e (t) × dt این است که هست

متناسب با مدت زمان خطای سیستم. از آنجا که ضریب k i از براکت ها خارج شده است ، می توانیم درباره مقدار i به عنوان مجموع مدت زمان خطا صحبت کنیم. بنابراین ما جمع را با جمع بندی می یابیم.

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

قالب RAW

داده های سنسور به صورت خام و خام به کنترل کننده NXT ارسال می شوند. کلیه سنسورها یک مقدار دیجیتالی از 0 تا 1023 را به سیستم عامل منتقل می کنند ، که پس از آن توسط درایور مناسب پردازش می شود و به شکل قابل فهم تر کاهش می یابد (فاصله 0 ... 255 ، روشنایی 0 ... 100 ، لمس 0 یا 1 و غیره). اما داده ها را می توان مستقیماً با دور زدن راننده دریافت کرد. این قالب خام RAW (از انگلیسی "خام") نامیده می شود. در بعضی موارد می توان از آن برای به دست آوردن دقت بیشتر استفاده کرد. بنابراین ، به عنوان مثال ، دامنه مقادیر حسگر نوری می تواند حدود 10 برابر افزایش یابد. این فرصت بیشتر استفاده می شود.

هر دو Robolab و RobotC می توانند داده های RAW را دریافت کنند. برای این کار ، سنسور بر این اساس تنظیم شده و داده ها از آن با استفاده از یک متغیر از پیش تعریف شده خاص خوانده می شوند.

تعادل ربات

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

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

هنگام تکیه به عقب ، خوانش سنسور کاهش می یابد و ربات شروع به حرکت به عقب می کند. مؤلفه متناسب مسئول این همه است. بیمه فرابورس به نقش مؤلفه های انتگرال و دیفرانسیل اختصاص می یابد.

شکل: 7.38 متعادل کردن مسیر روبات.

در شکل 7.39 الگوریتم موجود در Robolab را نشان می دهد. بیشتر آن توسط ابتدای متغیر اشغال شده است. برای بهبود دقت ، نه تنها داده های سنسور با فرمت RAW خوانده می شوند ، بلکه بیشتر متغیرها با فرمت float واقعی اعلام می شوند. الگوریتم PID خودش در یک حلقه است.

شکل: 7.39 الگوریتم balancer بر اساس یک کنترل کننده PID است.

به دنبال سنت حرکت در امتداد خط ، از متغیر خاکستری به عنوان نقطه تنظیم استفاده می کنیم - میانگین قرائت سنسور نور در موقعیت تعادل. مقیاس پارامتر جدید مقیاس بندی کنترل را تعیین می کند. این در اصل یک عامل کاهش می باشد زیرا مقدار تولید شده توسط تنظیم کننده برای موتورهای NXT خیلی زیاد است. می توان آن را درون ضرایب موجود اضافه کرد ، اما برای RobotC این پارامتر متفاوت خواهد بود و ضرایب یکسان هستند.

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

یک مثال مشابه در RobotC به دلایل مختلف کمی متفاوت است. در مرحله اول ، عملکرد NXT با سیستم عامل این محیط تقریبا 1.4 برابر بیشتر از Robolab است ، بنابراین باید فاکتور مقیاس افزایش یابد. در مرحله دوم ، مقادیر RAW به ترتیب صحیح منتقل می شوند و شما باید موتور معکوس را تنظیم کنید یا یک عمل کنترلی منفی را اعمال کنید:

int خاکستری \u003d SensorRaw؛ int err، errold \u003d 0؛

float kp \u003d 25، ki \u003d 350، kd \u003d 0.3؛ مقیاس شناور \u003d 14؛

float dt \u003d 0.001؛ float p، i \u003d 0، d، u؛ در حالی که (درست)

err \u003d SensorRaw خاکستری؛ // انحراف با علامت مخالف p \u003d kp * err؛

i \u003d i + ki * err * dt؛ d \u003d kd * (err-errold) / dt؛ errold \u003d خطا؛ u \u003d (p + i + d) / مقیاس؛ موتور \u003d تو؛ موتور \u003d تو؛ wait1Msec (1)؛

عناصر نظریه کنترل خودکار در مدرسه 1

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

به عنوان مثال ، مسئله ساخت کنترلرهای متناسب (P) و متناسب با دیفرانسیل (PD) را در مشکل کنترل حرکت یک ربات متحرک در امتداد یک دیوار در نظر بگیرید. ما با x t فاصله بین ربات و دیوار را مشخص می کنیم ، از طریق θt - زاویه عنوان ربات ، و از طریق u t - کنترلی که در لحظه با شماره ترتیب t انجام می شود ، به ترتیب ، جایی که t \u003d 0 ، 1 ، 2 ، ... تعداد لحظه های

رنیوم اعتقاد بر این است که نظرسنجی سنسورها و تغییر در اندازه عملکرد کنترل در فواصل منظم ساعت انجام می شود. برای انجام وظایف کنترل ربات های Lego NXT ، طبیعی است که فرض کنید که عمل کنترلی تفاوت در سرعت های زاویه ای چرخش چرخ ها ، متناسب با میزان تغییر زاویه عنوان است:

با فرض اینکه انحرافات دوره از اسمی θt \u003d 0 اندک است و میانگین سرعت روبات ثابت است: vt \u003d v ، پویایی تغییرات در متغیرهای حالت روبات در تقریب اول را می توان با معادلات خطی حالت توصیف کرد:

که در آن g \u003d h2vr / b.

بگذارید فاصله مورد نظر را بر روی دیوار x *\u003e 0 قرار دهیم و هدف کنترل (CC) را با نسبت تعریف کنیم

xt → x * as t →.

حال ما به طور طبیعی مفهوم ثبات بدون علامت را به عنوان خاصیت راه حلهای سیستم (4) فراهم می آوریم که دستیابی به سیستم کنترل (5) را برای هر شرایط اولیه که تفاوت چندانی با شرایط هدف ندارد ، در سطح معنی دار معرفی می کنیم. به راحتی می توان فهمید که برای u t \u003d 0 راه حل معادله (4) هر مقدار ثابت x t \u003d x * است. اما از آنجا که معادله (4) ، مطابق با مدل یکپارچه سازنده دوتایی (افزودنی مضاعف) ، خاصیت پایداری مجانبی را ندارد ، معادله کنترل (5) با کنترل ثابت حاصل نمی شود. با خلاصه کردن این سریال ، هر دو به راحتی از نظر تحلیلی نشان داده می شوند



 


خواندن:



تفاوت جگوار و پلنگ

تفاوت جگوار و پلنگ

بعضی اوقات تشخیص حیوانات مشابه از یکدیگر دشوار است. اما برای کسانی که تصمیم گرفتند به سوء تفاهم ها و شکاف دانش پایان دهند ، مطمئناً ...

لانچر بارگیری پیشخوان بدون مجوز

لانچر بارگیری پیشخوان بدون مجوز

اگر از بازی Counter-Strike: Global Offensive و Minecraft لذت می برید و به دنبال راهی هستید تا به طریقی بهترین جنبه های هر دو را فیوز کنید ...

نحوه ورود به مدرسه نظامی سووروف - قوانین و مقررات پذیرش

نحوه ورود به مدرسه نظامی سووروف - قوانین و مقررات پذیرش

امروزه ، بیشتر و بیشتر دختران علاقه مند به حرفه های مربوط به خدمت سربازی هستند. آموزش در این جهت در ...

مژه های بلند و ضخیم و بدون پسوند: فقط آنها را رشد دهید!

مژه های بلند و ضخیم و بدون پسوند: فقط آنها را رشد دهید!

اکنون مبلغ هنگفتی برای تسریع در رشد مژه ها دمیده می شود ، اما این ترکیب باعث ایجاد اعتماد به نفس نمی شود. نحوه رشد مژه به تنهایی و نه ...

تصویر خوراک Rss