在模拟中,我需要将汽车停在停车场中,当汽车离开停车场时,它会将其信息传输到停车场内的其余汽车中。停车场,其与停车场外部或停车场内部的通信不应中断。
我正在使用omnetpp-5.0,sumo-0.25.0和静脉-静脉-4.4。我试图对基静脉进行更改,但没有得到结果。如何在不中断与停车场内部和外部的通信的情况下停放汽车?
有人可以帮助我吗?
答案 0 :(得分:1)
我不是静脉专家,所以我只能说相扑面。您只需在车辆路线上添加一个停车站并标记为这样的停车位即可:
<vehicle id="1" depart="0">
<route edges="edge1 edge2"/>
<stop lane="edge2_0" endPos="100" duration="100" parking="true"/>
</vehicle>
如果由于停车将车辆从网络中移出而无法工作,并由于不再有可靠的位置而可能导致通信中断,则此操作不起作用,请在网络中创建一条单独的街道:
<vehicle id="1" depart="0">
<route edges="edge1 edge2a parking edge2b"/>
<stop lane="parking_0" endPos="100" duration="100"/>
</vehicle>
“停车”处的车道比edge2多出至少一个车道,因此车辆可以超车。 (我是从内存中编写示例的,未经测试,因此其中可能有错误。)
答案 1 :(得分:0)
以下摘录可能会有所帮助,因为它演示了车辆在临时停靠点(模拟停车)。有关详细信息,请查看静脉中的 TraCIMobility.cc
void TraCIMobility::handleSelfMsg(cMessage *msg)
{
if (msg == startAccidentMsg) {
commandSetSpeed(0);
simtime_t accidentDuration = par("accidentDuration");
scheduleAt(simTime() + accidentDuration, stopAccidentMsg);
accidentCount--;
}
else if (msg == stopAccidentMsg) {
commandSetSpeed(-1);
if (accidentCount > 0) {
simtime_t accidentInterval = par("accidentInterval");
scheduleAt(simTime() + accidentInterval, startAccidentMsg);
}
}
}