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

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

И ведь так можно продолжать довольно долго - разбивать диапазон все на более мелкие участки: на 9, 11, 13 и т.п. Во всех этих случаях будет наблюдаться следующая тенденция: на одном из моторов мощность будет расти с увеличением показаний на световом сенсоре, в то время как на другом моторе мощность будет уменьшаться.
Иными словами:
Причем, мощность все время увеличивается (или уменьшается) на одинаковые пропорции

Как на предыдущих диаграммах, где были явно показаны мощности, так и на графике выше видно, что существует некоторая средняя освещенность (LA), при которой на оба мотора подается одинаковая мощность - 50%, т.е. оба колеса едут с одинаковой скорость. Отклонение от этой средней освещенности (LA - L, где L - текущее показание освещенности) будет приводить к изменению мощности на обоих моторах. И как это видно из графиков, чем больше это отклонение, тем больше отличаются мощности моторов от 50%. Именно поэтому, данное отклонение и используется, чтобы определять с какой мощностью должны вращаться моторы.
Вот, например, пусть показание на сенсоре показывают освещенность чуть меньше средней.

Тогда мощность на моторе B возрастет на соответствующую величину, а мощность на моторе C, наоборот, на эту величину уменьшится.

Теперь рассмотрим отклонение в другую сторону - показание на сенсоре больше средней освещенности. Формула вычисления отклонения не изменяется.

При использовании такого же подхода, как и в предыдущем случае, будет видно, что здесь мощность на моторе B упадет, а на моторе С увеличиться.

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

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

Следует напомнить, что средняя освещенность - это разность показаний на самом темном и самом светлом участках поля. Она будет индивидуальная для каждого робота и каждого поля - это нужно замерять для каждых новых условий освещенности заново.

Теперь посчитаем мощность для каждого мотора: в одном случае вычтем из 50, в другом прибавим к 50. 50 в данном случае мощность, при которой колеса двигаются с одинаковой скоростью - тележка едет прямо.

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

Таким образом, диапазон всех возможных показаний сенсора разбивается теперь не на три, как в прошлый раз, а на пять участков.
Следующая диаграмма показывает, что будет происходить с мощностью двигателей в алгоритме, диапазон которого разбивается на семь участков.
И ведь так можно продолжать довольно долго - разбивать диапазон все на более мелкие участки: на 9, 11, 13 и т.п. Во всех этих случаях будет наблюдаться следующая тенденция: на одном из моторов мощность будет расти с увеличением показаний на световом сенсоре, в то время как на другом моторе мощность будет уменьшаться.
Иными словами:
- Чем больше освещенность, тем больше мощность на моторе X, но меньше - на моторе Y
- Чем меньше освещенность, тем меньше мощность на моторе X, но больше - на моторе Y
Причем, мощность все время увеличивается (или уменьшается) на одинаковые пропорции
- При освещенности 10, мощность будет V
- а при освещенности 20, мощность будет 2V
Как на предыдущих диаграммах, где были явно показаны мощности, так и на графике выше видно, что существует некоторая средняя освещенность (LA), при которой на оба мотора подается одинаковая мощность - 50%, т.е. оба колеса едут с одинаковой скорость. Отклонение от этой средней освещенности (LA - L, где L - текущее показание освещенности) будет приводить к изменению мощности на обоих моторах. И как это видно из графиков, чем больше это отклонение, тем больше отличаются мощности моторов от 50%. Именно поэтому, данное отклонение и используется, чтобы определять с какой мощностью должны вращаться моторы.
Вот, например, пусть показание на сенсоре показывают освещенность чуть меньше средней.
Тогда мощность на моторе B возрастет на соответствующую величину, а мощность на моторе C, наоборот, на эту величину уменьшится.
При использовании такого же подхода, как и в предыдущем случае, будет видно, что здесь мощность на моторе B упадет, а на моторе С увеличиться.
Сначала необходимо посчитать отклонение от средней освещенности.
Следует напомнить, что средняя освещенность - это разность показаний на самом темном и самом светлом участках поля. Она будет индивидуальная для каждого робота и каждого поля - это нужно замерять для каждых новых условий освещенности заново.
Теперь посчитаем мощность для каждого мотора: в одном случае вычтем из 50, в другом прибавим к 50. 50 в данном случае мощность, при которой колеса двигаются с одинаковой скоростью - тележка едет прямо.
Остается подать вычисленную мощность на каждый из моторов. Вся программа, теперь выглядит следующим образом.
Комментариев нет:
Отправить комментарий