Високий рівень алгоритм руху по лінії »робот з lego nxt 2

Високий рівень алгоритм руху по лінії »робот з lego nxt 2

Високий рівень алгоритм руху по лінії »робот з lego nxt 2

Тому гарною ідеєю є оснастити робота відразу двома датчиками, які розташовувалися по різні боки від лінії і, відповідно, допомагали б роботу більш оперативно реагувати на зміну напрямку руху.
Високий рівень алгоритм руху по лінії »робот з lego nxt 2
Тепер необхідно визначити, як така зміна конструкції позначиться на програмі. Для простоти знову слід почати з найпростішого релейного регулятора і тому, в першу чергу, цікавлять можливі положення датчиків щодо лінії:
Високий рівень алгоритм руху по лінії »робот з lego nxt 2
Насправді, можна виділити ще одне допустимий стан - на складних трасах це буде перетин перехрестя або якогось потовщення на шляху.
Високий рівень алгоритм руху по лінії »робот з lego nxt 2
Інші положення датчиків розглядатися не будуть, тому що або є похідними від показаних вище, або це такі положення робота, коли він зійшов з лінії і вже не зможе повернути себе на неї використовуючи інформацію з датчиків. У підсумку, всі перераховані положення можна звести до наступної класифікації:
  • лівий датчик, також як і правий - над світлою поверхнею
  • лівий датчик над світлою поверхнею, правий датчик над темною
  • лівий датчик над темною поверхнею, правий датчик над світлою
  • обидва датчика знаходяться над темною поверхнею
Високий рівень алгоритм руху по лінії »робот з lego nxt 2
Якщо в певний момент часу програма на роботі виявляє одне і з цих положень, вона повинна буде зреагувати відповідним чином:
  • Якщо обидва датчика над білою поверхнею, то це нормальна ситуація, в якій лінія знаходиться між датчиками, тому робот повинен їхати прямо.
  • Якщо лівий датчик ще над світлою поверхнею, а правий датчик вже над темною, значить, робот заїхав своєю правою частиною на лінію, а значить йому потрібно повертати направо, щоб лінія знову опинилася між датчиками.
  • Якщо лівий датчик виявився над темною поверхнею, а правий ще над світлою, то для вирівнювання роботу треба повертати ліворуч.
  • Якщо обидва датчика над темною поверхнею, то в загальному випадку, робот знову продовжує рухатися прямо.
Високий рівень алгоритм руху по лінії »робот з lego nxt 2
На схемі вище відразу ж показано, як конкретно в програмі має змінюватися поведінка моторов.Теперь, написання програми не повинно скласти великих труда.Начать варто з того, щоб вибрати який датчик опитуватиметься першим. Це не має великого значення, тому нехай буде лівий. Необхідно визначити, над світлою або над темною він поверхнею:
Високий рівень алгоритм руху по лінії »робот з lego nxt 2
Ця дія ще не дозволяє сказати в яку сторону роботу треба їхати. Але воно розділить стану, перераховані вище, на дві групи: (I, II) для верхньої гілки і (III, IV) для нижньої. У кожній з груп тепер по два стану, тому необхідно вибрати якийсь з них. Якщо уважно подивитися на перші два стану I і II, то вони відрізняються становищем правого датчика - в одному випадку він над світлою поверхнею, в іншому - над темною. Саме це і визначить вибір, яку дію зробити:
Високий рівень алгоритм руху по лінії »робот з lego nxt 2
Тепер можна вставити блоки, що визначають поведінку моторів згідно з таблицями вище: верхня гілка вкладеного умови визначає комбінацію "обидва датчика на світлому", верхня - "лівий на світлому, правий на темному":
Високий рівень алгоритм руху по лінії »робот з lego nxt 2
Нижня гілка основної умови відповідає за іншу групу станів III і IV. Ці два стани також відрізняються один від одного рівнем освітленості, який уловлює правий датчик. Значить, він буде визначати вибір кожного з них:
Високий рівень алгоритм руху по лінії »робот з lego nxt 2
Утворені дві гілки наповнюються блоками руху. Верхня гілка відповідає за за стан "лівий на темному, правий на світлому", а нижня - за "обидва датчика на темному".
Високий рівень алгоритм руху по лінії »робот з lego nxt 2
Слід зазначити, що дана конструкція всього лише визначає, як включити мотори в залежності від показань сенсорів в певному місці поля, природно через мить програма повинна перевірити чи не змінилися показання, щоб відповідним чином підправити поведінку моторів, а через мить ще раз, ще й т . Д. Тому вона повинна бути поміщена в цикл, який буде забезпечувати таку повторювану перевірку:
Високий рівень алгоритм руху по лінії »робот з lego nxt 2
Така досить проста програма буде забезпечувати досить високу швидкість пересування робота вздовж лінії без вильоту за її межі, якщо правильним чином налаштувати максимальну швидкість при русі в станах I і IV, а також задати оптимальний спосіб гальмування в станах II і III - чим крутіше повороти на трасі , тим "жорсткіше" має бути гальмування - швидкість повинна скидатися швидше, і навпаки - при плавних поворотах цілком можна застосовувати гальмування через вимкнення енергії або навіть взагалі через незначний скидання швидкості.

Схожі статті