Michael_K » 10 сен 2010, 12:37
Имхо, сложно это - целый алгоритм... позиционироваться вдоль стенок, разворачиваться, искать базу и т.п.
Я бы проще поступил - пылесосим спиралью.
Пусть будет для ясности только один шарповский дальномер
и, скажем энкодер (даже на одном колесе сойдет), , хотя тут пробовать конечно надо...
Ставим дальномер, так чтобы он смотрел вперед вправо. И катаемся тупо по стенке, постепенно увеличивая расстояние от нее, темп увеличения расстояния можно считать приблизительно по пройденному пути по энкодеру (или даже без энкодера - по времени экспериментально подобрать).
Навскидку алгоритм такой спирали прост (хотя уверен, в процессе отладки вылезут какие-нибудь грабли). Допустим, робот хочет ехать на расстоянии от правой стенки 40 сантиметров. Если стенка дальше - едем вперед (ну может быть с легким загребанием направо), если стенка ближе, крутимся влево.
Ну, скажем, первый "круг" проехать прямо по стенке, второй - на расстоянии 40 см от нее, третий - на расстоянии 80 см, четвертый, на расстоянии 120 см... Плюс полметра ширина "хавальника" - вот вам и вся площадь (включая обе базы). Потом начать уменьшать расстояние до стенки, потом опять увеличивать и так далее....
Если увидишь под ногами свой цвет вывалить туда свои шашки и продолжать нарезать круги...
Попадется робот соперника - ну и фиг с ним - вильнем и поедем дальше нарезать, на следующем круге зацепим эту зону...
Тут, по-моему, не нужно сильно умничать - надо сделать максимально просто,
НО (!!!) _быстро_ и _надежно_...
(А то как ни посмотришь, то один тыкается мордой в стену, стоя на месте,
то другой сто лет "ищет правильный угол" ... зато по две камеры понавесили - хайтек, типа... Да кому это все надо?)
Добавлено спустя 8 минут 47 секунд:
Имхо, общая проблема сложных роботов в том, что датчиков очень много, и все варианты воздействий невозможно прописать, а они возникают. Причем довольно часто возникают такие комбинации, которые не предусмотрены программой, поэтому и поведение получается нелогичным и даже хаотичным - несмотря на сложность и казалось бы массу информации об окружающем мире.
Проще надо быть.