Занятие № 2. Плавные повороты. Датчик касания

Задание № 1. Независимое управление двигателями

С помощью блока Независимое управление моторами можно самостоятельно указать мощность левого и правого колеса:

Режимы работы блока совпадают с режимами работы блока Рулевое управление. От соотношения мощностей будет зависеть скорость и направление движения робота:

Робот x поедет прямо.

Робот повернёт x направо x одним колесом.

Робот повернёт x налево x на месте.

Составьте следующую программу с помощью которой робот проедет прямо 45 см а потом повернёт направо на 135 градусов с помощью поворота на месте. Значения мощностей и необходимое количество оборотов выберите самостоятельно.

Чтобы проехать 45 см, колеса должны сделать x оборотов. Для поворота на 135 градусов нужно сделать x оборотов.

Задание № 2. Поворот по дуге

Если мощности двигателей не равны друг другу, но имеют одинаковый знак, робот будет двигаться по дуге окружности определённого радиуса.

Получим формулу, с помощью которой можно будет рассчитать соотношение мощностей левого и правого моторов \(k\) для плавного поворота по окружности радиуса \(R\).

Мощности левого и правого колёс относятся как радиусы окружностей, которые описывают левое и правое колесо соответственно: \[ \frac{P_{лев}}{P_{прав}} = \frac{R-\frac{B}{2}}{R+\frac{B}{2}}=\frac{2R-B}{2R+B} \tag{1}\] Уравнение 1 поможет получить значение мощности одного колеса, по выбранной мощности второго колеса, радиусу поворота \(R\) и ширине колеи робота \(B\).

Количество оборотов будем рассчитывать исходя из длины дуги, которую опишет колесо с большим радиус поворота. \[ x = \frac{(R+\frac{B}{2})\cdot a}{180\cdot d}=\frac{(2R+B)\cdot a}{360 \cdot d} \tag{2}\] Используем Уравнение 1 и Уравнение 2, чтобы повернуть робота на 180 градусов по окружности радиусом 20 см. Подставим \(R=20\ см\) и \(B=13,8\ см\) в Уравнение 1: \[ \frac{P_{лев}}{P_{прав}} = 0.487 \] Мощность \(P_{лев}\) возьмём равной 20. Значит \(P_{прав}\) будет равна x .

Рассчитаем количество оборотов с помощью Уравнение 2: \[ x = \frac{(2\cdot 20+13.8)\cdot 180}{360\cdot 5.6}=4.804 \]

Составьте следующую программу, чтобы проверить правильность вычислений:

Точность вычислений

Все вычисляемые значения мощностей и количества оборотов приблизительны. Может понадобится вручную подобрать более точные значения, исходя из поверхности, по которой движется робот.

Составьте программу движения робота по фрагменту восьмёрки. Повороты должны быть плавными. Расстояние между бочками - 50 см. Стартовая позиция робота находится на расстоянии 25 см от одной из бочек.

Задание № 3. Датчик касания

Первое измерительное устройство, которое используем в проектах - датчик касания.

С помощью датчика касания можно определить три состояния:

  • нажат;
  • не нажат;
  • нажали и отпустили;

Присоедините к платформе датчик касания так, чтобы он находился в передней части робота. Подключите датчик в порт номер 1.

Чтобы приостановить выполнение программы до обнаружения одного из состояний датчика, используем блок Ожидание:

По умолчанию блок приостановит выполнение программы на одну секунду. Для ожидания состояния датчика касания нужно выбрать подходящий режим:

Теперь первым параметром можно выбрать состояние датчика касания, после которого программа продолжит выполнение:

Составьте программу после запуска которой робот поедет прямо и остановится после нажатия на датчик касания.

Где-то перед роботом находится стена. Робот едет вперёд пока не столкнётся со стеной, затем отъезжает назад и поворачивает налево на 90 градусов.

Перед роботом находится коробка. Робот едет вперёд до тех пор, пока не скинет коробку со стола.


Условием остановки робота можно считать момент, когда кнопка датчика касания перестаёт быть нажатой.

Задание № 4. Цикл

Многократное повторение команд можно реализовать с помощью блока Цикл:

Как и у многих других блоков, цикл может работать в нескольких режимах: бесконечное повторение до остановки программы, определённое количество повторений, завершение по таймеру и так далее.

Робот движется между двумя стенами без остановки. Расстояние между стенами может поменяться в процессе работы программы.

В видео показан пример выполнения задания для пятиугольника.


Для вычисления внутреннего угла используйте формулу:

\[ a = \frac{(n-2)\cdot 180^\circ}{n} \]

\(n\) - количество сторон многоугольника.

Но поворачивать нужно на внешний угол: \[ b=180^\circ-a \]


Движение вперёд и поворот лучше поместить внутрь цикл с определённым количеством повторений.