Как определить, в каком направлении движется машина, используя все свои позиционные данные, используя Python? - PullRequest
0 голосов
/ 04 июня 2018

Объяснение вопроса:

У меня довольно большой файл (до 1 миллиона строк), содержащий данные с майнинг-машины.Данные включают в себя координаты X и Y машины.Машина должна иметь возможность только майнироваться влево (направление -X) или вправо (направление + X), и это происходит в «полосе движения».Он не должен иметь возможность снова добывать ту же область, но может изменить координаты Y в любое время (т. Е. Может изменить полосы в любое время) и пропустить определенные области.Я хочу определить, в каком направлении движется машина в данный момент времени.Например, я хочу увидеть, куда движется машина влево или вправо.Хотя это звучит достаточно просто, у меня возникли некоторые проблемы.

Моя попытка:

В настоящее время я нахожу сумму 100 значений массива разностейX-координаты (массив разностей показывает расстояние, на которое машина переместилась).В идеале, если X-координаты уменьшаются в интервале 100 точек, то они должны двигаться влево, а если X-координаты увеличивались в этом интервале, они должны двигаться вправо.Поэтому, если сумма была отрицательной, она добавит «0» к массиву 100 раз.Я выбрал 100, потому что я думал, что это будет довольно точно, учитывая большое количество образцов.

# miner_x = array of the x-coordinates of the machine
# miner_x_diff = numpy.diff(miner_x)
# 0 = Negative X direction
# 1 = Positive X direction

diffSample= [sum(miner_x_diff[i:i+100]) for i in range(0, len(miner_x_diff), 100)]
Direction = np.array([])
for value in diffSample:
    if value < 0:
        for _ in itertools.repeat(None, 100):
           Direction = np.append(Direction,0)
    else:
        for _ in itertools.repeat(None, 100):
            Direction = np.append(Direction,1)
# correct size 
if Direction.size > miner_x.size:
    Direction = Direction[0:Direction.size-(Direction.size-miner_x.size)]

Проблема, с которой я сталкиваюсь, заключается в том, что она меняет направление слева направо или наоборот, и это в основном происходит во время смены полосы движения.Это, если курс ожидается, так как сумма вокруг этой области может быть близка к 0. Но я не уверен, как вести учет этого изменения, используя мой текущий метод.Существует ли более точный способ определения направления движения машины?

Ниже приведен пример графика положения машины с использованием одного конкретного набора данных (код опущен, поскольку он не нужен).Желтые точки - это позиции, где у меня были неправильные результаты. В этом примере не должно быть никаких желтых точек.Я не показал цвет направления в этом примере, но вы, конечно, можете увидеть его, если я скажу, что начальная позиция находится внизу справа.Position of the machine

Буду признателен за любую помощь / совет / подсказки:)

Редактировать: Вот изображение того, что я хочу (умМалярные навыки).Обратите внимание, что я не хочу «видеть» прямую линию, просто чтобы знать, что она движется в этих направлениях в этих точках.Зеленый является отправной точкой.desired result

1 Ответ

0 голосов
/ 04 июня 2018

Начните с использования меньшего образца окна.Сколько времени представлено 100 точками выборки?Интервал должен быть достаточно маленьким, чтобы вы могли просто посмотреть на смещение между начальной и конечной позицией и указать направление для этого отрезка времени.(Вы понимаете, что суммирование разности последовательных пар чисел такое же, как вычитание первого из последнего числа, не так ли?) Если вы поймаете машину в точке, где она поворачивается, вы можете получить неопределенные данные, нообразцы до и после покажут прямой вектор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...