【发布时间】:2021-03-17 04:45:14
【问题描述】:
我正在使用一个简单的网络来更改以下车辆的路线。我的代码没有显示任何错误。 SUMO 和 omnet++ 都正常工作;但是,车辆并没有改变路线。我已经使用给定的静脉演示网络进行了尝试,但仍然无法正常工作。到目前为止,我已经尝试了几种在不同来源中找到的方法(当我将它们留在 cmets 中时,您可以在实际代码中看到这些方法),但仍然没有任何车辆正在改变路线。
我的 rou.xml 是:
<vehicle id="0" depart="5.00">
<route edges="-gneE4 -gneE3 -gneE2 "/>
</vehicle>
<vehicle id="1" depart="5.00">
<route edges="-gneE4 -gneE3 -gneE2 "/>
</vehicle>
<vehicle id="2" depart="5.90">
<route edges="-gneE4 -gneE3 -gneE2 "/>
</vehicle>
<vehicle id="3" depart="6.0">
<route edges="-gneE4 -gneE3 -gneE2 "/>
</vehicle>
<vehicle id="4" depart="7.0">
<route edges="gneE2 gneE3 gneE4"/>
</vehicle>
<vehicle id="5" depart="40.0">
<route edges="-gneE4 -gneE3 -gneE2 "/>
</vehicle>
并且更改路由是 TraCIDemo11p.cc 中的更改路由....
void TraCIDemo11p::onWSM(BaseFrame1609_4* frame){
TraCIDemo11pMessage* wsm = check_and_cast<TraCIDemo11pMessage*>(frame);
findHost()->getDisplayString().setTagArg("i", 1, "green");
//traciVehicle->changeVehicleRoute({"-gneE11","-gneE11"});
// mobility = TraCIMobilityAccess().get(getParentModule());
// traci = mobility->getCommandInterface();
//traciVehicle = mobility->getVehicleCommandInterface();
// traciVehicle->changeRoute("-gneE11", 6);
if (mobility->getRoadId()[0] != ':'){traciVehicle->changeRoute("-gneE11", 3600);}
if (!sentMessage) {
sentMessage = true;
// repeat the received traffic update once in 2 seconds plus some random delay
wsm->setSenderAddress(myId);
wsm->setSerial(3);
scheduleAt(simTime() + 2 + uniform(0.01, 0.2), wsm->dup());
}
}
【问题讨论】: