Сегодня произвёл замеры точности измерения расстояния до маяков.
Текущий результат:
- разброс разовых значений от -15% до +12% от корректного значения.
- разброс средненакопленных за 50 измерений значений +/- 2% от корректного значения.
То есть при необходимости - можем постоять потупить и с очень высокой точностью определить расстояния до маяков и свои координаты.
Хочется увеличить точность разовых замеров, чтобы можно было получить хотя-бы +/- 5% от корректного расстояния при разовых замерах.
Текущие проблемы как видится связаны с тем, что неточно определяются углы маяка (они сейчас получаются как побочный результат распознавания самого маяка и никакой специальной обработки на выявление точных их координат нету).
Добавлено спустя 37 минут 45 секунд:
Чтобы качественно определять углы маяков нужна функция "детектор угла маяка", которую мы будем вычислять в некоторой окрестности найденных как побочный результат координат угла маяка и из полученных значений будем выбирать максимум.
Пока надумался такой вариант:
1. Будем оценивать пиксели в области = в радиусе R единиц от проверяемой точки (например, будем брать R=4);
2. Очевидно если это искомый угол, то среди этих пикселей сектор в 90° будет черным, а остальное белым, однако в реальности есть шумы и съехавшие в разные стороны цвета - вместо черного имеем некоторой степени темносерый, а вместо белого - светлосерый.
Добавлено спустя 11 часов 55 минут 47 секунд:
Победил низкую точность разовых измерений - правда без всяких хитровыдуманных функций оценочных - сделал тупую функцию, которая из суммы пикселей внешнего уголка вычитает сумму пикселей внутреннего уголка. Благо ориентация уголка примерная уже известна.
Полученный результат - не более 4.5% отклонения разового измерения от средневзвешенной величины, правда рулетку куда-то посеял, поэтому надо еще проверить, что средневзвешенная величина сейчас не уехала от правильного значения расстояния, но не думаю что там будут серьезные проблемы.
А полученный результат будет позволять локализовать робота в помещении очень качественно (точность порядка 10см и может даже лучше).