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

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

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

Как же это сделать?

Ниже представлена диаграмма, показывающая как изменяется характер движения тележки в зависимости от того, с какой стороны границы находится датчик света. На границе линии датчик показывает 50% освещенности.


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


Иными словами, когда тележка находится прямо над границей линии, то она должна двигаться вперед.

На практике можно сказать, что ситуация, когда датчик света будет показывать ровно 50% очень редки, поэтому робот практически никогда не будет двигаться прямо, как бы ровно он не стоял относительно границы. Поэтому необходимо сделать допущение - выбрать небольшой диапазон значений, которые робот будет расценивать как "нахожусь прямо над границей".


45% и 55% процентов взяты произвольным образом по принципу "чуть-чуть меньше и чуть-чуть больше". Важно помнить, что для каждого отдельного датчика и для каждых новых условий освещенности данные значения будут разные, но все они будут зависеть о того, что показывает датчик на границе линии.

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


Как теперь изменится алгоритм поведения робота?

Если раньше в нем было ветвление на две ветки, то теперь появляется третья. Легче это представить, если опять нарисовать схемы:


Иными словами в новом алгоритме нижняя часть ветвления в свою очередь тоже ветвится, и таким образом достигается три различных вида движения.

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

Комментариев нет:

Отправить комментарий

Related Posts Plugin for WordPress, Blogger...