Расчет расстояния между текущим транспортным средством и предыдущим транспортным средством

Мне нужно было вычислить расстояние между текущим транспортным средством и предыдущим транспортным средством для каждого транспортного средства в потоке, проходящем по краю.

Проходя через TraCI, я наткнулся getLeader метод, который должен вернуть Id лидера и расстояние, которое мне нужно.

Но я не смог найти реализованный метод с этим именем или любой другой метод, перечисленный в Обзор Расширенный поиск переменных написанный на C ++ в TraCI.

Я действительно ценю, если кто-то может мне помочь с этим.


Я был успешным в реализации getLastStepVehicleIDs извлекать значения из индукционных контуров в соответствии с рекомендациями Вот. Я следовал за уже реализованными методами того же типа (например, getJunctionIds), но в этом случае такие уже реализованные методы не могут быть найдены.

1

Решение

В TraCICommandInterface.cc есть множество функций для заимствования. Без тестирования реализация может выглядеть так

std::pair<std:string, double> TraCICommandInterface::getLeader(const double lookahead) {
TraCIBuffer request;
request << static_cast<uint8_t>(VAR_LEADER) << nodeId
<< static_cast<uint8_t>(TYPE_DOUBLE) << lookahead;
TraCIBuffer response = connection.query(CMD_GET_VEHICLE_VARIABLE, request);

uint8_t cmdLength; response >> cmdLength;
if (cmdLength == 0) {
uint32_t cmdLengthX;
response >> cmdLengthX;
}
uint8_t responseId; response >> responseId;
ASSERT(responseId == RESPONSE_GET_VEHICLE_VARIABLE);
uint8_t variable; response >> variable;
ASSERT(variable == VAR_LEADER);
std::string id; response >> id;
uint8_t typeId_r; response >> typeId_r; ASSERT(typeId_r == TYPE_COMPOUND);
uint32_t compoundLength; response >> compoundLength; ASSERT(compoundLength == 2);
uint8_t typeId_resp; response >> typeId_resp; ASSERT(typeId_resp == TYPE_STRING);
std::string leader; response >> leader;
uint8_t typeId_resp2; response >> typeId_resp2; ASSERT(typeId_resp2 == TYPE_DOUBLE);
double dist; response >> dist;

return std::make_pair(leader, dist);
}
7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]