Следване на линия. Как движенията да са по-плавни Pro Preview

Досега използвахме алгоритъм за следване на линия, който наричаме "патешко следване на линия" заради движенията на робота. Нека обърнем по-специално внимание на този алгоритъм и видим, колко състояния се съдържат в него.

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

Абонирай се

  • #885
  • 30 Mar 2018

Програмата за следване, в която се използва алгоритъмът за „патешко“ следване на линия, изглежда по следния начин:

content picture

и се състои от две състояния:

  • Ако засеченият цвят е черен, роботът завива на една страна;
  • Ако засеченият цвят е бял, роботът завива на другата страна.

Както можете да прецените, това не води до особена продуктивност. Роботът постоянно се върти наляво или надясно и никога не върви напред, дори когато линията е права. Това прави алгоритъма бавен и неефективен. Отново, за целите на този пример, нека си представим, че роботът следва десния контур на линията.

Нека помислим как бихме могли да добавим състояние, в което роботът върви право напред. Идеята е да имаме три състояния:

  • завиване наляво – когато роботът е извън линията:
  • завиване надясно – когато роботът е върху линията:
  • движение напред – когато роботът е върху контура:

За да постигнем това, обаче, не можем да използваме режима за цвят на сензора за цвят, а режима за отразена светлина. Да кажем, че сме отчели стойностите, които сензорът е засякъл на черно, бяло и върху контура на линията, и те са следните:

  • върху линията -> 9%;
  • върху контура -> 32%;
  • извън линията -> 55%.

Безсмислено е роботът да се движи напред, само когато сензорът отчита 32. Затова ще програмираме робота да се движи напред, когато стойността, която отчита сензорът, е близка до 32. Нека допустимата грешка бъде +/- 5. Така, когато стойността е между 27% и 37%, роботът ще се придвижва напред.

Когато стойността е по-малка от 27%, роботът ще завие надясно, а когато е по-голяма от 37%, ще завие наляво. Като имаме тези три състояния, можем да съставим следния алгоритъм:

  • Ако сензорът отчете стойност, по-малка от 27%, това означава, че роботът е върху черна линия и трябва да завие надясно;
  • Ако роботът отчете стойност, която е по-голяма от 27%, то роботът е или върху контура, или върху бяло. За да установим, къде се намира роботът, трябва да направим втора проверка, като сравним стойността с 37%. Ако отчетената стойност е по-голяма от 27% и по-малка от 37%, то роботът се намира върху контура и трябва да продължи напред;
  • Ако сензорът отчита стойност, по-голяма от 37%, то роботът е върху бяло и трябва да завие наляво;

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

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

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

Image for Instructors Remote Training
  • 136
  • 280:11
  • 156
Image for Competition programming
  • 7
  • 0
  • 8
  • 3d_rotation 1
Image for Роботика с LEGO - Ниво 2.0 - Роботи в производството
  • 44
  • 15:01
  • 129
Image for Допълнителни задачи за роботниците
  • 2
  • 1
  • 3
  • 3d_rotation 0
Image for Ниво Д - "Транспорт" - Роботика с LEGO
  • 33
  • 1:03
  • 110
Image for Занятие 5 - Лодка за следване на линия с 3 състояния
  • 5
  • 3
  • 8
  • 3d_rotation 1
Image for Роботика с LEGO - Ниво 2.0 - Роботи в производството
  • 44
  • 15:01
  • 129
Image for Занятие 5 - Робо-Кола
  • 6
  • 4
  • 11
  • 3d_rotation 1
Image for Stay @ Home SPIKE Prime Course
  • 4
  • 0:33
  • 27