Как да направим поведенческа програма? Pro Preview

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

Необходимо е да се абонирате за FLLCasts.com, за да достъпите това видео

Абонирай се

  • #1499
  • 12 Dec 2019

Една програма поведенческа програма има три главни части:

  1. Цикъли за четене на сензорите. Обикновено това са няколко паралелни цикъла, по един за всеки сензор, които проверяват някакво условие и записват резултата в променлива или флагче.
  2. Цикъл за управление на поведенията. Това е цикъл, който събира цялата информация от всички сензори от първа точка и я сортира и обработва. Обработката и сортирането стават, като се мине през дърво от условни оператори, в края на което се записва желаното поведение в една текстова променлива.
  3. Цикъл за движение на робота. В този цикъл се чете текстовата променлива и спрямо това какво е решил цикълът от втора точка, се изпълняват някакви действия. Важно за този цикъл е, да се сложи случай по подразбиране, който да не се случва никога. Той служи за да ни показва ако се случи грешка при четенето на променливата и обикновено се програмира робота да издава звук. 

За пример си представете един робот, който трябва да следва черна линия, но когато сензорът му за допир е натиснат, трябва да спре за 10 секунди. Първо правим две променливи и два цикъла, които да четат двата сензора - за допир и за цвят.

content picture

След това създаваме още един цикъл, където ще определяме поведението на робота. В тази програма имаме само две поведения - следване на линия и спиране, като следването на линия е серия от завои наляво и надясно. Спирането е по-важно от следването на линия, за това първо проверяваме дали сензорът за допир е докоснат. Ако е, записваме в променливата за поведение, че робота трябва да спре. Ако не е проверяваме дали робота е на линията или не, съответно записваме завой наляво или надясно.

content picture

Накрая създаваме цикъла за движение на робота. В него проверяваме променливата за поведение и се движим спрямо нея. Ако казва да завие робота наляво - блокче за завиване наляво, ако трябва надясно - надясно, ако трябва да спре - спиране и изчакване 10 секунди. Слагаме случаят по подразбиране да проверява за грешка, която можем да кръстим error, понеже никъде в програмата не сме записали променливата да става error, ако програмата влезе в този случай, със сигурност е станала грешка и ние ще разберем!

content picture

Курсове и занятия включващи този Урок

Този Урок е използван в следните курсове и занятия.

Image for Роботика с LEGO - Ниво 4.5 Време за игра
  • 35
  • 13:40
  • 221
Image for Занятие 4 - Сумо битка (С няколко сензора)
  • 2
  • 4
  • 16
  • 3d_rotation 1