У меня есть робот, который использует оптическую мышь в качестве трека положения. По сути, когда робот движется, он может отслеживать изменения в направлениях X и Y с помощью мыши. Мышь также отслеживает, в каком направлении вы двигаетесь, т. е. отрицательное значение X или положительное значение X. Эти значения суммируются в отдельных регистрах X и Y.
Теперь робот вращается на месте и движется только вперед. Таким образом, движение робота в идеале должно быть прямым (хотя отслеживание мыши может улавливать отклонения, если вы отклоняетесь) под определенными углами. Конкретный набор движений робота может выглядеть следующим образом:
A: Повернуть на 45 градусов, сдвинуть на 3 дюйма
B: Повернуть на 90 градусов, сдвинуть на 10 дюймов
C: Повернуть на -110 градусов, сдвинуть на 5 дюймов < br> D: Повернуть на 10 градусов, сдвинуть на 1 дюйм
Но каждый раз, когда мышь X и мышь Y регистрируют реальное расстояние, которое вы переместили в каждом направлении.
Теперь, если я хочу повторить набор движений только от A до D, как я могу это сделать, используя информацию, которую я уже собрал. Я знаю, что могу в основном суммировать все углы и расстояния, которые я уже ввел в него, но это оказалось бы неточным, если бы в каждом приказе движения были большие ошибки. Как я могу использовать необработанную информацию с моей мыши? Друг подал идею, что я мог бы непрерывно синусизировать и косинусировать значения мыши и вычислять окончательный вектор, но я не совсем уверен, как это будет работать.
Проблема в том, что мышь дает только относительные показания, поэтому, вращаясь или двигаясь назад, вы потенциально стираете информацию. Так что да, мне интересно, как вы можете реализовать алгоритм, чтобы он мог постоянно отслеживать изменения, чтобы предоставить вам кратчайший путь, если вы двигались зигзагами, чтобы добраться туда изначально.