Зупинка на перехресті

Завдяки знанням, отриманим у цьому модулі, ви тепер можете використовувати пропорційне керування для швидкого та точного переміщення робота вздовж лінії за допомогою обох датчиків відбиття. Однак плавне слідування лінії — не єдина причина, чому XRP має два датчики. Наявність двох датчиків також дозволяє нам виявляти перетини між двома лініями.

Розгляньте цю діаграму з останнього модуля:

../../_images/p_control_2_sensors_centered.png

Спрощена схема датчиків відбиття, розташованих по центру лінії.

Зверніть увагу, що обидва датчики відбиття знаходяться в основному на лінії, але не повністю. Так само, як і на початку модуля, вам потрібно буде зробити кілька вимірювань того, що показують лінійні датчики. Цього разу вам потрібно буде подивитися, що вони показують, коли робот знаходиться по центру лінії. Саме так робот буде розташовуватися на лінії, якщо він точно слідує за нею.

Спробуйте

Напишіть нескінченний цикл для запису значень з обох лінійних датчиків за допомогою веб-сервера. Поставте робота по центру лінії і подивіться, які значення отримані.

Використовуйте виміряні значення для визначення нового порогового значення. Зверніть увагу, що цей поріг, ймовірно, не буде близьким до середини між білим і чорним значеннями, оскільки датчики вашого робота можуть бути не ідеально відцентровані на краях лінії, оскільки це залежить від ширини лінії, яку ви використовуєте. Хорошим значенням для цього порогу буде приблизно середина між значенням, яке ви щойно виміряли, і максимальним значенням, яке ви виміряли в першому модулі.

Порада

Якщо ви не пам’ятаєте максимальне значення датчика, просто поставте робота боком на лінію так, щоб обидва датчики лінії знаходилися над лінією. Використовуйте той самий код, який ви щойно використовували, щоб знову прочитати значення.

Розглянемо, що побачить лінійний датчик, коли перетинає перехрестя:

../../_images/line_crossing.png

Спрощена схема датчиків відбиття над перехрестям.

При перетині перехрестя датчик бачить тільки чорний колір. Це означає, що коли обидва датчики бачать повністю чорний колір, ми можемо припустити, що знаходимося на перехресті.

Спробуйте

Напишіть функцію is_at_intersection(), яка зчитує значення обох лінійних датчиків і повертає True, якщо робот знаходиться на перехресті.

Тепер, коли ви знаєте, як виявити перетин, настав час зв’язати все разом.

Спробуйте

Напишіть функцію follow_line_until_intersection(), яка виконує ваш алгоритм слідування за лінією до виявлення перетину, а потім зупиняє робота.

Виклик

Спробуйте написати код для повороту на перехресті. Виберіть напрямок повороту, а потім нехай ваш робот поверне в цьому напрямку, поки не перетне іншу лінію перехрестя, а потім почне рухатися вздовж цієї лінії.

Порада

Для того, щоб це працювало, колеса вашого робота повинні бути розташовані по центру перехрестя. Для цього використовуйте одну з функцій «drivetrain» після того, як ви прибудете на перехрестя.