Често, когато имаме робот с много сензори, искаме той да изпълнява различни "поведения" спрямо всеки сензор. Точно с това ни помага поведенческото програмиране! Чрез него на теория можем да управляваме робота чрез безкрайно много сензори, без те да си пречат и дори да знаят, кой е по-важен и кой не!

Необходимо е да се абонирате за FLLCasts.com, за да достъпите това видео
- #1499
- 12 Dec 2019
Една програма поведенческа програма има три главни части:
- Цикъли за четене на сензорите. Обикновено това са няколко паралелни цикъла, по един за всеки сензор, които проверяват някакво условие и записват резултата в променлива или флагче.
- Цикъл за управление на поведенията. Това е цикъл, който събира цялата информация от всички сензори от първа точка и я сортира и обработва. Обработката и сортирането стават, като се мине през дърво от условни оператори, в края на което се записва желаното поведение в една текстова променлива.
- Цикъл за движение на робота. В този цикъл се чете текстовата променлива и спрямо това какво е решил цикълът от втора точка, се изпълняват някакви действия. Важно за този цикъл е, да се сложи случай по подразбиране, който да не се случва никога. Той служи за да ни показва ако се случи грешка при четенето на променливата и обикновено се програмира робота да издава звук.
За пример си представете един робот, който трябва да следва черна линия, но когато сензорът му за допир е натиснат, трябва да спре за 10 секунди. Първо правим две променливи и два цикъла, които да четат двата сензора - за допир и за цвят.
След това създаваме още един цикъл, където ще определяме поведението на робота. В тази програма имаме само две поведения - следване на линия и спиране, като следването на линия е серия от завои наляво и надясно. Спирането е по-важно от следването на линия, за това първо проверяваме дали сензорът за допир е докоснат. Ако е, записваме в променливата за поведение, че робота трябва да спре. Ако не е проверяваме дали робота е на линията или не, съответно записваме завой наляво или надясно.
Накрая създаваме цикъла за движение на робота. В него проверяваме променливата за поведение и се движим спрямо нея. Ако казва да завие робота наляво - блокче за завиване наляво, ако трябва надясно - надясно, ако трябва да спре - спиране и изчакване 10 секунди. Слагаме случаят по подразбиране да проверява за грешка, която можем да кръстим error, понеже никъде в програмата не сме записали променливата да става error, ако програмата влезе в този случай, със сигурност е станала грешка и ние ще разберем!
Курсове и занятия включващи този Урок
Този Урок е използван в следните курсове и занятия.

Роботика с LEGO - Ниво 4.5 Време за игра
Осмото ниво от учебната програма по LEGO роботика за ученици от пети до дванадесети клас.
С помощта на роботи създадени за игри между учениците се упражнява работа с променливи. Роботите пазят натрупаните точки от играчите и правят пресмятания с информацията в променливите. Постоянно се използват познатите вече собствени блокове за групиране на функционалност. Въвежда се понятието поведение и програмите на роботите са организирани в множество нишки, които си обменят информация. В края на нивото роботите генерират задачи с числа, чрез които учениците трябва да съставят уравнение.
- 35
- 13:40
- 221

Занятие 4 - Сумо битка (С няколко сензора)
Въведение
В това занятие ще построите сумо робот и ще го програмирате по нов начин, наречен поведенческо програмиране! За разлика от предишни уроци, днес ще ви дадем наш робот за сумото, който може да ви подготви да печелите състезания по ЛЕГО Сумо!
Били ли сте на състезание по Сумо с роботи? Какво мислите, че трябва да има днешният робот за да спечели едно състезание?
Първо трябва да знаете, че състезанията по Сумо с роботи и състезанията по ЛЕГО Сумо са много различни. В състезанията, които не се ограничават само до ЛЕГО, основната стратегия е да хванеш робота на противника отстрани и да го вдигнеш на рампа. За целта на робота му трябва скорост и множество сензори! Може да видите видео на такова състезание тук:https://www.youtube.com/watch?v=QCqxOzKNFks Освен тези готини неща, това сумо е много скъпо и доста опасно, за това виждате съдията да носи предпазители на краката си!
ЛЕГО сумото от друга страна използва напълно различни стратегии. Обикновено се цели да се направи възможно най-тежък и голям робот, което означава, че рядко остава място за рампа или друг начин за атака. Често роботите представляват големи кутии със сензори, които се бутат на полето. Това е до голяма степен и заради ограниченията в размерите, които в някои състезания са 15 см дължина и 15 см ширина, които, ако премерите, не ви стигат за да сложите два мотора и брик между тях! Обикновено сумо роботите нямат ограничение във височината си. Можете ли да се сетите защо?
- 2
- 4
- 16
- 3d_rotation 1