Значение функции getSpeed ​​() отличается от рассчитанного значения

Использую OMNeT ++ - 4.6, сумо-0.22.0 и Veins-4a2.

Мне интересно вычислить скорость автомобиля при получении сообщения. Для этого я использовал функцию getSpeed ​​(). Но проблема в том, что когда я вычислял вручную скорость на основе времени и расстояния (по формуле s = d / t), значение было другим.

Например, при t = 55,104470531278 с и расстоянии d = 29,0477 м скорость, полученная путем вызова функции getSpeed ​​(), равна s = 3,34862 м / с = 10,8 км / ч. С другой стороны, рассчитанное вручную значение s = 0,52713 м / с = 1,9 км / ч.

Мне нужна помощь, чтобы понять, почему значение, полученное с помощью getSpeed ​​(), отличается, пожалуйста.


person Joe    schedule 13.11.2017    source источник
comment
В поддержку ответа Майклса: как именно вы рассчитываете скорость?   -  person Julian Heinovski    schedule 13.11.2017
comment
Я вызвал функцию getSpeed ​​() в функции onData () (в моем сценарии эта функция выполняется, когда узел получает сообщение), чтобы узнать скорость каждого узла, когда он получает сообщение.   -  person Joe    schedule 14.11.2017
comment
Я хотел знать, как вы вручную рассчитываете скорость, которую затем сравниваете со значением, полученным от getSpeed(). Это средняя скорость за все время, как подозревал Майкл?   -  person Julian Heinovski    schedule 14.11.2017
comment
Я рассчитал скорость вручную по формуле s = d / t (t - текущее время моделирования).   -  person Joe    schedule 15.11.2017
comment
Хорошо. Я понимаю, что это такое, но откуда у вас d?   -  person Julian Heinovski    schedule 15.11.2017
comment
Похоже, что вопрос был решен ответом Майкла. Я предполагаю, что ваша ручная скорость действительно является средней (путевой) скоростью, которую вы получаете от (overall driven distance of a node / simulation time).   -  person Julian Heinovski    schedule 15.11.2017
comment
Фактически, я вычислил расстояние в текущий момент (когда узел получает сообщение), поэтому я основывался на двух координатах двух узлов и вычислял расстояние между ними (следовательно, это не общее пройденное расстояние одного узла). узел).   -  person Joe    schedule 15.11.2017
comment
Позвольте нам продолжить это обсуждение в чате.   -  person Julian Heinovski    schedule 15.11.2017


Ответы (1)


getSpeed() возвращает текущую скорость транспортного средства (точнее, скорость на последнем этапе моделирования, которая по умолчанию равна 1 с), в то время как ваш расчет дает среднюю скорость за последние ~ 55 с (при условии, что ваше моделирование началось в момент времени 0).

person Michael    schedule 13.11.2017
comment
Итак, насколько я понял, чтобы рассчитать среднюю скорость в каждый момент, когда узел получает сообщение, я должен вычислить вручную, используя формулу (s = d / t)? - person Joe; 14.11.2017
comment
Если вам нужна текущая (иногда называемая местной) скорость (за последнюю секунду), используйте getSpeed(), если вы хотите среднюю (иногда называемую путевой) скорость за всю поездку до момента времени t, используйте d / t. Это действительно зависит от того, что вы подразумеваете под скоростью. В большинстве случаев людям нужна текущая скорость, и это не результат ваших вычислений, а результат getSpeed(). - person Michael; 15.11.2017
comment
Благодарим Вас за разъяснения. - person Joe; 15.11.2017