Сегодня опытным путем обнаружил еще одни грабли энкодера. У меня энкодер на отражательном оптроне ktir0711. Он хоть и маленький, а площадки ему примерно 3х3 мм нужны. Следовательно чем больше импульсов на оборот нужно получить - тем больше диаметр черно/белого диска. Конструктивные особенности моей механики не позволили сделать большой диаметр, получилось всего 8 импульсов на оборот (диаметр 15 мм). То есть 16 импульсов на оборот будет 30 мм диаметром и т.д. Сегодня пробовал ездить по энкодерам. У меня два мотор-редуктора, танковый принцип. И хоть и редукторы и моторы идентичны - при езде уводит немного вправо (примерно на 5 см на двух метрах). Поэтому я сделал так, чтобы возврат по энкодерам для каждой стороны был независимым. В итоге получилось что робот возвращается не в ту точку, из которой выехал, а рядом. Он подъезжает, а затем доворачивает, чтобы оба энкодера обнулились. Это происходит из-за того, что погрешность энкодера плюс/минус один импульс на оборот. Диаметр колеса у меня 45 мм, значит погрешность около 18 мм!!!. Возврат же по одному энкодеру (любому) приводит к лучшим результатам.
И еще хотелось бы немного пофилософстровать на тему энкодеров. Мне кажется что им, как датчикам, верить сильно нельзя. Энкодер, используемый для учета пройденного пути робота, потенциально опасен. Первая причина - он работает только при 100% сцеплении колеса с поверхностью. Если есть проскальзывание - пиши пропало. Вторая причина - по нему очень сложно определить перемещение, отличное от прямой линии. Пример: есть два заезда, после которых показания энкодеров одинаковы. Но в первом случае робот ехал по дуге (колеса вращались с разной скоростью), а потом крутился вокруг неподвижного колеса. Во втором случае робот сделал полоборота, потом ехал прямо, потом полоборота в другую сторону. Начальная точка одна, показания энкодеров одинаковые, а роботы находятся в разных местах. Даже с энкодерами роботы напоминают слепых котят
.