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