После нескольких неудачных попыток тестирования системы управления электронным якорем сегодня этот тест был пройден!
Это была тяжелая неделя тестовых испытаний электронной системы управления "Электронный якорь". Об этом проекте я уже писал на своем канале.
Цель проекта - создание электронной системы управления для удержания местоположения на лодке, имеющего более простое название "Электронный якорь".
Созданный прототип робота с электронным якорем никак не хотел возвращаться на место, то и дело пытаясь уехать в неопределенном направлении, порою строго в определенном, самому роботу известного, но не понятного для меня. Почему он так делает...?
И так эта неделя была плодотворной на изменение программного кода, - практически 50% было переписано.
Но что же было не так?
1. Хорошо писать код сидя в офисе, получая информацию о работе системы из системного монитора. Но вот тестирование перенеслось на открытый воздух, - только здесь можно получить качественную GPS-связь со спутников, и сразу начались проблемы. Подключать компьютер бессмысленно - на нем ничего не видно, мешает солнышко. Пришлось дополнять систему монитором. В качестве такового был взят LCD 1602, широко применяемого в робототехнике.
2. Погрешность в определении местоположения доходит до 80 метров. Ни о каком удержании точки в этом случае быть не может. Робот просто начинает беспричинно уезжать от места фиксации положения, не собираясь возвращаться.
3. Выявились ошибки, не замеченные на этапе офисного тестирования. Просто там они были не заметны и никак не влияли на результат. А на улице они вдруг проявились.
В результате был не только переписано 50% кода, но и изменен алгоритм управления, заменена используемая библиотека TinyGPS.h на TinyGPSPlus.h
Хоть получаемые координаты широты и долготы подразумевают координатную сетку с шагом 10 см, реально такую погрешность не получить. Все на практике зависит от количества захваченных спутников и фильтрации данных, получаемых с GPS-модуля. В моем случае это NEO6M. Попытки поменять модуль на другой из этой серии не принес значимых результатов.
Без системы фильтрации - погрешность определения местоположения минимальна до 2 - 3 метров. Более точное определение требует дополнительную систему фильтрации, будь-то использование фильтра Калмана или комплиментарного фильтра. Но особо сильно этим не позлоупотребляешь, т.к. частота обновления данных со спутников получается 1 - 0,5 Гц. И применение фильтра сильно затормаживает систему управления.
Расчет расстояния
В создании алгоритма работы устройства были использованы несколько способов изменения расстояния между двумя GPS-точками, как классические, с учетом радиуса Земли, так и более упрощенные. В первом случае погрешность измерения 1м, во втором 10см. Но с учетом общей погрешности в 2-3 метра, это было уже не принципиально и в конечном итого задача расчета расстояния между фиксированной точкой и текущей GPS-позицией делается как функция библиотеки TinyGPSPlus. Еще один положительный момент этой библиотеки, использованного в алгоритме движения - это расчетный курс движения и скорость движения. Оба этих значения легли в основу расчета скорости и курса сноса лодки для последующего выравнивания и возврата на точку.
Что дальше
Следующий этап - это создание драйвера моторов для управления электромотором и сервоприводом поворотной штанги непосредственно на самой лодке. Ну и конечно же полевые испытания разработанного устройства.
В наилучшими пожеланиями к читателям моего канала,
подписывайтесь, делитесь информацией и комментариями.
Михалев СИ, руководитель конструкторского бюро и детских лабораторий робототехники