Зима настала и пришла пора всяким кибернетическим организмам впадать в спячку. Тем не менее, за декабрь травяной робот наэволюционировал на третью серию своей биографии.
По итогам второй серии открылись серьезные проблемы с маневренностью в поворотах и ориентацией в пространстве через gps.
Эволюция беспощадно отсекает все лишнее, поэтому верхняя палуба была безжалостно демонтирована, а солнечную батарею теперь можно просто положить сверху, да и то не обязательно.
Далее легким движением электропилы шасси стало на четверть короче, и теперь робот вертится гораздо бодрее.
GPS на мелких расстояниях оказался бесполезен чуть более чем полностью и ему на смену пришла чудо-микросхема:
Акселерометр, компас и гироскоп в одном флаконе. Не все опять же оказалось так радужно: компас и акселерометр требует калибровки и не сразу готовы работать, а пока не готовы, с их сенсоров сыпется всякий мусор. Зато гироскоп готов всегда и теперь робот умеет поворачивать на заданный угол, используя гироскопное рыскание. (вроде бы какая-то фигня написана, но в будущем окажется, что это ключевой навык для дворовой навигации).
Фронт травяных работ задается обходом из левого нижнего угла поляны начиная с левого верхнего (за определение левого нижнего угла и направления будет отвечать естественный интеллект, у которого нет проблем с, кхм, ориентацией). В простейшем случае достаточно пройти поперек, повернуть на 90 градусов, затем пройти вдоль и дальше эти две стороны образуют прямоугольник, внутри которого робот уже будет бороздить территорию.
В реальности геометрия будет сложнее, но это все равно не более чем набор пар (направление, дистанция).
Дистанция... А с ней не так все просто. Определить расстояние из gps не получилось, да и оказалось, что посчитать пробег по акселерометру - та еще задача, над которой сломано немало копий умными людьми. Вообще способ навигации относительно начальной точки с помощью измерения движения в английском имеет даже специальный термин - dead reckoning (а как это по русски, даже гугл не в курсе).
Итак, без акселерометра пришлось как-то выкручиваться и мне пришло в голову измерять дистанцию с помощью.. времени. Таким образом контур задается примерно так:
- 10 секунд прямо, поворот направо на 90 градусов, 15 секунд прямо - стоп, контур готов.
Для начала покоса робот должен снова оказаться в начальной точке (посредством ручного управления или грубой силы, не суть важно).
При борозжении(?) контура есть один тонкий момент - определить ширину этой самой борозды. В идеале она должна совпадать с диаметром пропеллера косилки, но выразить этот диаметр через секунды движения колес оказалось не под силу слабому разуму создателя робота. Поэтому ширина борозды определяется естественным интеллектом оператора(!) и может корректироваться через телефон.
На серо-белом покрывале декабря робот проходит последнее в этом году испытание бороздой, самостоятельно вспахивая тестовый кусок поляны:
Ну а пока робот сопит в углу в хибернации, можно помечтать, что вот настанет лето, выйдет он на заре на траву, щелкнет реле, взвоет пропеллер и полетят ошметки травы в разные стороны. А я на сэкономленные на рабочих-крестьянах деньги куплю себе пива и буду сидеть в шезлонге и тихо деградировать от безделья, размышляя о прогрессе, луддитах, и том, что автономная газонокосилка - это первый шаг на пути к резиновойроботизированой женщине...
А реле щелкает и щелкает и все равно, в конце пути придется рассчитаться..