Обнаружение плохих действий вождения от скорости в C # - PullRequest
0 голосов
/ 13 июня 2018

Скорость отслеживается через порт OBD или GPS.Измеряется в милях в секунду.Существует событие, которое срабатывает при каждом обновлении новой скорости, как я могу определить, как быстро ускоряется эта скорость с течением времени?Например, автомобиль разгоняется до 30 миль в час и внезапно быстро разгоняется до 100 всего за несколько секунд?

Кроме того, подобное применимо и к резкому торможению, когда скорость падает слишком быстро.

Ответы [ 2 ]

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

ускорение может быть измерено в милях / секунду / секунду или милях / с ^ 2.Вы можете просто взять разницу между двумя измерениями и рассчитать ускорение по этим измерениям.например, если вы проходите от 2 до 5 миль в секунду за 2 секунды.это означает, что у вас есть ускорение 1,5 миль / с ^ 2.Или, если вы используете скорость от 5 до 2 миль в секунду, то скорость равна -1,5 миль / с ^ 2

, поэтому вам нужно 2 вещи:

2 измерения и время между ними.

, поэтому, если вы проводите измерение каждую секунду, вы просто берете разницу между измерениями и берете это в качестве значения ускорения / замедления.

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

Ускорение - первая производная скорости.Вы должны рассчитать увеличение / уменьшение скорости с течением времени, может быть, по немедленным выборкам.

Отражая комментарий Я вхожу в детали: у вас есть обратный вызов в каждую секунду с фактической скоростью.Вы должны рассчитать разницу в скорости между вызовами, то есть ускорение в милях / секунду ^ 2.Сохраните этот результат ускорения (желательно упакованный с текущей скоростью и отметкой времени) в списке.После этого сохраните текущую скорость на следующую секунду.

private double LastSpeedSample;
private void OnNewSample(object sender, SampleEventArgs e) {

    double Acceleration = LastSpeedSample - e.Speed;
    // Pack and save calculated value
    LastSpeedSample = e.Speed;
}
...