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


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

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

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

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

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

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

در اینجا مکان نقطه اساسی است - بین سفید و سیاه. به دلایل ریاضی دقیقاً نمی توان آن را روی سفید یا سیاه تنظیم کرد.

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

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

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

داده های اولیه

نقطه ایده آل

خوانش سنسور نور فعلی

نتیجه.

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

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

راه حل.

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

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

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

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

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

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

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

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

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

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

Iid - نقطه ایده آل محاسبه شده.

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

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

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

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

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

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

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

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

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

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

· دو سنسور.

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

طراحی

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


الگوریتم

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


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

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

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

مثال 2. یک سنسور، با تنظیم کننده PK.

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

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

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

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

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


ما از این ویژگی هنگام طراحی و برنامه نویسی یک ربات برای رده مسابقه "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 متصل می شود.

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

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

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


در حالی که ربات در یک خط مستقیم حرکت می کند، مقادیر سنسور منطبق هستند، به این معنی که خروجی بلوک "تفریق" 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) و سپس به واحدهای کنترل موتور تغذیه می کند.
حال در بلوک ریاضی (افزودن) کنترل موتور B، مقدار توان 50 +50 = 100 به موتور B عرضه می شود.
در بلوک ریاضی (تفریق) کنترل موتور C، مقدار توان 50 - 50 = 0 به موتور C داده می شود.
و ربات یک چرخش شدید انجام می دهد.

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

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

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

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

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

Lego Mindstorms EV3

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

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

نتیجه گیری

ادبیات

1-مقدمه

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

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

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

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

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

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

    سازنده EV3 Mindstorms.

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

یک سروموتور بزرگ وظیفه حرکت ربات را بر عهده دارد که به میکروکامپیوتر 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 بسازید.

ادبیات.

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

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

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

    http://lego. 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 - هرچه پیچ ها در بزرگراه تندتر باشد، ترمز باید "سخت تر" باشد - سرعت باید سریعتر کاهش یابد و بالعکس - با پیچ های نرم ترمزگیری با خاموش کردن برق کاملاً امکان پذیر است. یا حتی با کاهش کلی سرعت.

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



 


بخوانید:



حسابداری تسویه حساب با بودجه

حسابداری تسویه حساب با بودجه

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

کیک پنیر از پنیر در یک ماهیتابه - دستور العمل های کلاسیک برای کیک پنیر کرکی کیک پنیر از 500 گرم پنیر دلمه

کیک پنیر از پنیر در یک ماهیتابه - دستور العمل های کلاسیک برای کیک پنیر کرکی کیک پنیر از 500 گرم پنیر دلمه

مواد لازم: (4 وعده) 500 گرم. پنیر دلمه 1/2 پیمانه آرد 1 تخم مرغ 3 قاشق غذاخوری. ل شکر 50 گرم کشمش (اختیاری) کمی نمک جوش شیرین...

سالاد مروارید سیاه با آلو سالاد مروارید سیاه با آلو

سالاد

روز بخیر برای همه کسانی که برای تنوع در رژیم غذایی روزانه خود تلاش می کنند. اگر از غذاهای یکنواخت خسته شده اید و می خواهید لذت ببرید...

دستور العمل لچو با رب گوجه فرنگی

دستور العمل لچو با رب گوجه فرنگی

لچوی بسیار خوشمزه با رب گوجه فرنگی مانند لچوی بلغاری که برای زمستان تهیه می شود. اینگونه است که ما 1 کیسه فلفل را در خانواده خود پردازش می کنیم (و می خوریم!). و من چه کسی ...

فید-تصویر RSS