خانه - دیوار خشک
Lego ev3 خط مشکی را دنبال می کند. Lego EV3. حرکت در امتداد خط سیاه حسگر رنگ - حالت شدت نور محیطی


برای اینکه ربات به آرامی در امتداد خط سیاه حرکت کند، باید آن را مجبور کنید تا سرعت حرکت را محاسبه کند.

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

این ویژگی حسگر نور است - عدم توانایی در تشخیص واضح مرز سفید و سیاه - و ما از آن برای محاسبه سرعت حرکت استفاده خواهیم کرد.

ابتدا مفهوم "نقطه مسیر ایده آل" را معرفی می کنیم.

خوانش سنسور نور بین 20 تا 80 است، اغلب در رنگ سفید حدود 65 و در سیاه حدود 40 است.

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

در اینجا اصولاً محل نقطه بین سفید و سیاه است. نمی توان دقیقاً روی سفید یا سیاه به دلایل ریاضی پرسید که چرا - بعداً مشخص خواهد شد.

از نظر تجربی، ما محاسبه کرده ایم که نقطه ایده آل را می توان با استفاده از فرمول زیر محاسبه کرد:

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

بسازیم توصیف ریاضی مسئله

اطلاعات اولیه.

نقطه عالی

قرائت فعلی سنسور نور.

نتیجه

قدرت چرخش موتور V.

قدرت چرخش موتور C.

راه حل.

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

در این حالت ربات باید قدرت چرخشی موتور B را افزایش و قدرت موتور C را کاهش دهد.

در شرایطی که ربات وارد خط سیاه می شود، برعکس است.

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

اما ایجاد چنین تنظیم کننده ای کار نسبتاً دشواری است و همیشه به طور کلی مورد نیاز نیست.

بنابراین، ما تصمیم گرفتیم خود را فقط به کنترلر P محدود کنیم، که به اندازه کافی به انحرافات از خط سیاه پاسخ می دهد.

در زبان ریاضیات به این صورت نوشته می شود:

که در آن Hb و Hc به ترتیب توان نهایی موتورهای B و C هستند،

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

Itek - خوانش های فعلی سنسور نور.

I id - نقطه ایده آل را محاسبه کردم.

k - ضریب تناسب، به صورت تجربی انتخاب می شود.

در قسمت سوم به نحوه برنامه نویسی در محیط NXT-G می پردازیم.

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

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

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

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

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

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

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

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

· دو سنسور.

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

طرح

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


الگوریتم

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


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

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

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

مثال 2. یک سنسور، با یک کنترلر PC.

این مثال بر اساس همان ساخت و ساز است.

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

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

اینگونه است که شخص خط را می بیند:

ربات او را اینگونه می بیند:


این ویژگی است که ما هنگام طراحی و برنامه نویسی یک ربات برای دسته مسابقه "Trajectory" استفاده خواهیم کرد.

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

می خواهم در مورد یک روش برنامه نویسی به شما بگویم که حتی بچه های 2-3 کلاس به آن مسلط خواهند بود. در این سن، مونتاژ سازه ها طبق دستورالعمل برای آنها بسیار راحت تر است و برنامه نویسی ربات برای آنها کار دشواری است. اما این روش به کودک این امکان را می دهد که ربات را برای هر مسیری از مسیر در 15-30 دقیقه برنامه ریزی کند (با در نظر گرفتن تأیید گام به گام و تنظیم برخی از ویژگی های مسیر).

این روش در مسابقات رباتیک شهری و منطقه ای در منطقه Surgut و Khanty-Mansi خودمختار Okrug-Yugra آزمایش شد و رتبه های اول را برای مدرسه ما به ارمغان آورد. در همان جا متقاعد شدم که این موضوع برای بسیاری از تیم ها بسیار مرتبط است.

خوب، بیایید شروع کنیم.

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

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

سنسورهای نور به پورت های 2 و 3 متصل می شوند. موتورها به پورت های B و C.
سنسورها در امتداد لبه های خط قرار دارند (سعی کنید سنسورها را در فواصل مختلف از یکدیگر و در ارتفاعات مختلف آزمایش کنید).
یک نکته مهم برای عملکرد بهتر چنین مداری، توصیه می شود یک جفت سنسور را با توجه به پارامترها انتخاب کنید. در غیر این صورت، لازم است بلوکی برای تصحیح مقادیر سنسور وارد شود.
نصب سنسورها بر روی شاسی طبق طرح کلاسیک (مثلث) تقریباً مانند شکل.

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


1. دو بلوک سنسور نور.
2. چهار بلوک "ریاضیات";
3. دو بلوک موتور.

برای کنترل ربات از دو موتور استفاده شده است. ظرفیت هر کدام 100 واحد می باشد. برای طرح ما، مقدار متوسط ​​قدرت موتور را برابر با 50 در نظر می گیریم. یعنی سرعت متوسط ​​هنگام رانندگی در یک خط مستقیم برابر با 50 واحد خواهد بود. هنگام انحراف از حرکت خط مستقیم، قدرت موتورها بسته به زاویه انحراف به طور متناسب افزایش یا کاهش می یابد.

حالا بیایید بفهمیم که چگونه همه بلوک ها را به هم متصل کنیم، برنامه را تنظیم کنیم و چه اتفاقی در آن خواهد افتاد.
بیایید دو حسگر نور تنظیم کنیم و پورت های 2 و 3 را به آنها اختصاص دهیم.
بلوک ریاضی را بردارید و Subtraction را انتخاب کنید.
بیایید سنسورهای نور را از خروجی‌های «شدت» با اتوبوس‌ها به بلوک ریاضیات به ورودی‌های «A» و «B» متصل کنیم.
اگر سنسورهای ربات به طور متقارن از مرکز خط مسیر نصب شوند، مقادیر هر دو سنسور برابر خواهد بود. پس از تفریق، مقدار - 0 را بدست می آوریم.
بلوک بعدی ریاضیات به عنوان ضریب استفاده می شود و باید "ضرب" را در آن تنظیم کنید.
برای محاسبه نسبت، باید سطوح "سفید" و "سیاه" را با واحد NXT اندازه گیری کنید.
فرض کنید رنگ سفید 70- و سیاه 50- است.
سپس می شماریم: 70-50 = 20 (تفاوت بین سفید و سیاه)، 50/20 = 2.5 (مقدار متوسط ​​توان را هنگام حرکت در یک خط مستقیم در بلوک های ریاضی 50 قرار می دهیم. این مقدار به اضافه مقدار اضافه شده قدرت هنگام تصحیح حرکت باید برابر با 100 باشد)
سعی کنید مقدار را روی 2.5 در ورودی "A" تنظیم کنید و سپس آن را با دقت بیشتری انتخاب کنید.
خروجی "نتیجه" بلوک ریاضی قبلی "تفریق" را به ورودی "B" بلوک ریاضی "ضرب" وصل کنید.
بعد یک جفت می آید - یک بلوک از ریاضیات (افزودن) و موتور B.
راه اندازی بلوک ریاضی:
ورودی "A" روی 50 (نصف قدرت موتور) تنظیم شده است.
خروجی بلوک "نتیجه" توسط یک اتوبوس به ورودی "Power" موتور B متصل می شود.
بعد، بخار بلوکی از ریاضیات (تفریق) و موتور C است.
راه اندازی بلوک ریاضی:
ورودی "A" روی 50 تنظیم شده است.
ورودی "B" با یک گذرگاه با خروجی "نتیجه" بلوک ریاضی "ضرب" متصل می شود.
خروجی بلوک "نتیجه" توسط یک اتوبوس به ورودی "Power" موتور C متصل می شود.

در نتیجه تمام این اقدامات، برنامه زیر را دریافت خواهید کرد:

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

حالا بیایید سعی کنیم بفهمیم که برنامه چگونه کار می کند و چگونه آن را پیکربندی کنیم.


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

فرض کنید مسیر چرخشی می کند یا ربات از خط مستقیم منحرف می شود. چه اتفاقی خواهد افتاد؟

شکل نشان می دهد که روشنایی سنسور متصل به پورت 2 (از این پس به عنوان سنسورهای 2 و 3 نامیده می شود) افزایش می یابد، زیرا به یک میدان سفید حرکت می کند و روشنایی سنسور 3 کاهش می یابد. فرض کنید مقادیر این سنسورها به این صورت باشد: سنسور 2 - 55 واحد و سنسور 3 - 45 واحد.
بلوک "تفریق" تفاوت بین مقادیر دو سنسور (10) را تعیین می کند و آن را به بلوک تصحیح (ضرب در ضریب (10 * 2.5 = 25)) و سپس به واحدهای کنترل ارسال می کند.
موتورها
در بلوک ریاضی (افزودن) کنترل موتور B به مقدار متوسط ​​سرعت 50
25 اضافه می شود و مقدار توان 75 به موتور B عرضه می شود.
در بلوک ریاضی (تفریق) کنترل موتور C، 25 از مقدار سرعت متوسط ​​50 کم می شود و مقدار توان 25 به موتور C داده می شود.
بنابراین، انحراف از خط مستقیم اصلاح خواهد شد.

اگر مسیر به شدت به طرف بپیچد و سنسور 2 روی سفید و سنسور 3 روی مشکی باشد. مقادیر روشنایی این سنسورها عبارتند از: سنسور 2 - 70 واحد و سنسور 3 - 50 واحد.
بلوک "تفریق" تفاوت بین مقادیر دو سنسور (20) را تعیین می کند و آن را به بلوک تصحیح (20 * 2.5 = 50) و سپس به واحدهای کنترل موتور ارسال می کند.
حال در بلوک ریاضی (Addition) کنترل موتور B مقدار توان 50 +50 = 100 به موتور B داده می شود.
در بلوک ریاضی (تفریق) کنترل موتور C، مقدار توان 50 - 50 = 0 به موتور C داده می شود.
و ربات یک چرخش شدید انجام می دهد.

در زمینه های سفید و سیاه، ربات باید در یک خط مستقیم رانندگی کند. اگر این اتفاق نیفتاد، سعی کنید سنسورها را با همان مقادیر مطابقت دهید.

حالا بیایید یک بلوک جدید ایجاد کنیم و از آن برای حرکت ربات در هر مسیر استفاده کنیم.
چرخه را انتخاب کنید، سپس در منوی "Edit" دستور "Create my block" را انتخاب کنید.

در کادر محاوره‌ای «Block Constructor»، نامی به بلوک خود بدهید، مثلاً «Go»، نمادی را برای بلوک انتخاب کنید و روی «DONE» کلیک کنید.

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

متن اثر بدون تصویر و فرمول قرار داده شده است.
نسخه کامل اثر در سربرگ «فایل های کاری» با فرمت PDF موجود است

مجموعه ساخت و ساز Lego Mindstorms EV3

مرحله مقدماتی

ایجاد و کالیبره کردن یک برنامه

نتیجه

ادبیات

1. معرفی.

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

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

Mindstorms EV3 Constructor ما را دعوت می کند تا وارد دنیای جذاب ربات ها شویم و در محیط پیچیده فناوری اطلاعات غوطه ور شویم.

هدف: یاد بگیرید که حرکت ربات را در یک خط مستقیم برنامه ریزی کنید.

    با سازنده Mindstorms EV3 و محیط برنامه نویسی آن آشنا شوید.

    برنامه هایی را برای حرکت ربات در یک خط مستقیم در 30 سانتی متر، 1 متر 30 سانتی متر و 2 متر و 17 سانتی متر بنویسید.

    Mindstorms EV3 Constructor.

قطعات مجموعه ساختمانی - 601 عدد، سرو موتور - 3 عدد، سنسور رنگ، سنسور حرکت لمسی، سنسور مادون قرمز و سنسور لمسی. بلوک ریزپردازنده EV3 مغز سازنده LEGO Mindstorms است.

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

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

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

    مرحله مقدماتی.

    ایجاد زمینه فنی

در زمینه کار ربات، با استفاده از نوار برق و خط کش، یک علامت گذاری اعمال می کنیم، سه خط به طول 30 سانتی متر - یک خط سبز، 1 متر و 15 سانتی متر - یک خط قرمز و 2 متر و 17 سانتی متر - یک خط سیاه ایجاد می کنیم. .

    محاسبات لازم:

قطر چرخ ربات 5 سانتی متر 7 میلی متر = 5.7 سانتی متر است.

یک دور چرخ ربات برابر با محیط با قطر 5.7 سانتی متر است. محیط با فرمول بدست می آید.

در جایی که r شعاع چرخ است، d قطر است، π = 3.14

l = 5,7 * 3,14 = 17,898 = 17,9.

آن ها در یک چرخش چرخ، ربات 17.9 سانتی متر را طی می کند.

بیایید تعداد دورهای لازم برای رانندگی را محاسبه کنیم:

N = 30: 17.9 = 1.68.

    1 متر 30 سانتی متر = 130 سانتی متر

N = 130: 17.9 = 7.26.

    2 متر 17 سانتی متر = 217 سانتی متر.

N = 217: 17.9 = 12.12.

    ایجاد و کالیبراسیون برنامه

ما برنامه را طبق الگوریتم زیر ایجاد می کنیم:

الگوریتم:

    بلوک حرکتی را در نرم افزار Mindstorms EV3 انتخاب کنید.

    هر دو موتور را در جهت مشخص شده روشن کنید.

    منتظر تغییر مقدار سنسور چرخش یکی از موتورها به مقدار مشخص شده باشید.

    موتورها را خاموش کنید.

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

    این میدان روی میزهای دانش آموزی نصب می شود، بنابراین انحراف جزئی سطح ممکن است.

    سطح زمین صاف است، بنابراین، چسبندگی ضعیف چرخ های ربات به زمین امکان پذیر است.

    در محاسبه تعداد دور باید اعداد را گرد می کردیم و بنابراین با تغییر صدم های دور به نتیجه لازم رسیدیم.

5. نتیجه گیری.

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

در مرحله بعدی آشنایی با ربات Lego Mindstorms EV3، باید یاد بگیرید که چگونه چرخش ها را به یک زاویه خاص، حرکت در یک دایره، مارپیچ برنامه ریزی کنید.

کار با سازنده بسیار جالب است. با آشنایی بیشتر با قابلیت های آن می توانید هر مشکل فنی را حل کنید. و شاید در آینده مدل های جالب خود را از ربات Lego Mindstorms EV3 بسازید.

ادبیات.

    D. Koposov "اولین گام در رباتیک برای کلاس های 5-6". - م .: بینوم. آزمایشگاه دانش، 1391 - 286 ص.

    فیلیپوف S. A. "رباتیک برای کودکان و والدین" - "علم" 2010.

    منابع اینترنتی

    http: // لگو. rkc-74.ru/

    http://www.9151394.ru/projects/lego/lego6/beliovskaya/

    http://www. لگو com / آموزش /

15.01.2012, 18:51

تاکنون، در مقاله‌هایی درباره الگوریتم‌های مورد استفاده هنگام حرکت در امتداد یک خط، روشی در نظر گرفته می‌شد که حسگر نور از مرز چپ یا راست خود پیروی می‌کند: به محض اینکه ربات به قسمت سفید میدان حرکت کرد، کنترل‌کننده ربات را برمی‌گرداند. تا مرز، حسگر شروع به حرکت عمیق تر به خطوط سیاه می کند - تنظیم کننده آن را صاف کرد.
علیرغم اینکه تصویر بالا مربوط به یک کنترلر رله است، اصل کلی حرکت تناسبی (کنترل کننده P) یکسان خواهد بود. همانطور که قبلاً ذکر شد ، میانگین سرعت چنین حرکتی خیلی زیاد نیست و به دلیل پیچیدگی جزئی الگوریتم چندین تلاش برای افزایش آن انجام شد: در یک مورد از ترمز "نرم" و در مورد دیگر علاوه بر پیچ ها استفاده شد. ، حرکت رو به جلو معرفی شد.
برای اینکه ربات بتواند در برخی مناطق به جلو حرکت کند، یک ناحیه باریک در محدوده مقادیر داده شده توسط سنسور نور اختصاص داده شد که به طور معمول می توان آن را "حسگر در مرز خط است" نامید.
این رویکرد یک اشکال کوچک دارد - اگر ربات از مرز سمت چپ خط پیروی کند، در سمت راست می چرخد، بلافاصله انحنای مسیر را تشخیص نمی دهد و در نتیجه زمان بیشتری را صرف جستجوی خط و چرخش می کند. . علاوه بر این، به جرات می توان گفت که هر چه پیچ تندتر باشد، این جستجو طولانی تر می شود.
شکل بعدی نشان می دهد که اگر سنسور در سمت چپ مرز نبود، بلکه در سمت راست بود، آنگاه انحنای مسیر را تشخیص داده و شروع به مانورهای چرخشی می کند.

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

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

نمودار بالا بلافاصله نشان می دهد که دقیقاً چگونه رفتار موتورها باید در برنامه تغییر کند.حالا نوشتن برنامه نباید سخت باشد.باید با انتخاب سنسوری که ابتدا نظرسنجی می شود شروع کنید. واقعاً مهم نیست، پس بیایید آن را در سمت چپ نگه داریم. تعیین اینکه آیا بالای یک سطح روشن است یا بالای یک سطح تاریک لازم است:
این عمل هنوز به شما اجازه نمی دهد که بگویید ربات باید به کدام سمت برود. اما حالت های ذکر شده در بالا را به دو گروه تقسیم می کند: (I, II) برای شاخه بالایی و (III, IV) برای شاخه پایین. اکنون هر یک از گروه ها دارای دو حالت هستند، بنابراین باید یکی از آنها را انتخاب کنید. اگر به دو حالت اول I و II دقت کنید، آنها در موقعیت سنسور سمت راست متفاوت هستند - در یک مورد بالای یک سطح روشن است، در دیگری - بالای سطح تاریک. این چیزی است که انتخاب اقدامی را که باید انجام شود تعیین می کند:
اکنون می‌توانید بلوک‌هایی را وارد کنید که رفتار موتورها را مطابق جداول بالا تعریف می‌کنند: شاخه بالایی حالت تودرتو ترکیبی را تعریف می‌کند "هر دو سنسور در نور"، یکی از بالا - "چپ در روشنایی، راست در تاریکی":
شاخه پایینی شرایط اصلی مسئول گروه دیگری از حالات III و IV است. این دو شرایط همچنین از نظر میزان روشنایی که سنسور مناسب دریافت می کند با یکدیگر متفاوت هستند. بنابراین، انتخاب هر یک از آنها را تعیین می کند:
دو شاخه حاصل با بلوک های حرکتی پر می شود. شاخه بالایی مسئول حالت "چپ در تاریکی، سمت راست در روشنایی" و شاخه پایین برای "هر دو سنسور در تاریکی" است.
لازم به ذکر است که این طرح تنها نحوه روشن شدن موتورها را بسته به قرائت سنسورها در یک مکان مشخص در میدان مشخص می کند، طبیعتاً پس از یک لحظه برنامه باید بررسی کند که آیا قرائت ها تغییر کرده است تا رفتار آن را اصلاح کند. موتورها، و بعد از یک لحظه دوباره، دوباره، و غیره. بنابراین، باید در حلقه ای قرار گیرد که این بررسی تکراری را ارائه دهد:

اگر حداکثر سرعت را هنگام رانندگی در حالت های I و IV به درستی تنظیم کنید و همچنین روش بهینه ترمز را در حالت های II و تنظیم کنید ، چنین برنامه نسبتاً ساده ای سرعت حرکت نسبتاً بالایی ربات را در طول خط بدون غلبه بر آن فراهم می کند. III - هرچه پیچ‌ها در مسیر تندتر باشد، ترمز باید "سخت‌تر" باشد - سرعت باید سریع‌تر کاهش یابد و بالعکس - با پیچ‌های نرم می‌توان ترمز را از طریق خاموش شدن یا حتی به طور کلی با افت خفیف ترمز کرد. در سرعت

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



 


خواندن:



روانشناسی عمومی stolyarenko a m

روانشناسی عمومی stolyarenko a m

جوهر روان و روان. علم یک پدیده اجتماعی است، بخشی جدایی ناپذیر از آگاهی اجتماعی، شکلی از شناخت انسان از طبیعت، ...

کار آزمون همه روسی برای دوره دبستان

کار آزمون همه روسی برای دوره دبستان

VLOOKUP. زبان روسی. 25 گزینه برای کارهای معمولی Volkova E.V. et al. M.: 2017 - 176 p. این راهنما کاملا مطابق با ...

فیزیولوژی انسان سن ورزش عمومی

فیزیولوژی انسان سن ورزش عمومی

صفحه فعلی: 1 (کتاب در مجموع 54 صفحه دارد) [گزیده ای موجود برای مطالعه: 36 صفحه] قلم: 100% + Alexey Solodkov, Elena ...

سخنرانی در مورد روش شناسی آموزش زبان و ادبیات روسی در توسعه روش شناختی مدرسه ابتدایی با موضوع

سخنرانی در مورد روش شناسی آموزش زبان و ادبیات روسی در توسعه روش شناختی مدرسه ابتدایی با موضوع

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

فید-تصویر Rss