среда, 24 октября 2012 г.

Алгоритмы: черно-белое движение. Часть IV

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

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


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


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

Иными словами:
  • Чем больше освещенность, тем больше мощность на моторе X, но меньше - на моторе Y
  • Чем меньше освещенность, тем меньше мощность на моторе X, но больше - на моторе Y

Причем, мощность все время увеличивается (или уменьшается) на одинаковые пропорции
  • При освещенности 10, мощность будет V
  • а при освещенности 20, мощность будет 2V
Т.е. мощность ПРОПОРЦИОНАЛЬНО зависит от освещенности.


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

Вот, например, пусть показание на сенсоре показывают освещенность чуть меньше средней.


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


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

Сначала необходимо посчитать отклонение от средней освещенности.


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


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


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

2 комментария:

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

    ОтветитьУдалить
    Ответы
    1. Так ведь речь в последних абзацах заметки как раз и о том, что туда подставить - у всех будет разное значение.

      Удалить

Related Posts Plugin for WordPress, Blogger...