【问题标题】:Accident Avoidance in Veins静脉中的事故避免
【发布时间】:2016-03-13 20:04:00
【问题描述】:

我正在 Veins 中实施事故避免计划。我修改了 TracIDemo11p.cc 并更改了 onData 函数如下 -

void TraCIDemo11p::onData(WaveShortMessage* wsm) {
    findHost()->getDisplayString().updateWith("r=16,green");
    annotations->scheduleErase(1, annotations->drawLine(wsm->getSenderPos(), traci->getPositionAt(simTime()), "blue"));
    if (!sentMessage)
    {
        traci->commandSlowDown(0.0,4);  //speed changes smoothly to 0 in 4sec
        sendMessage(wsm->getWsmData());
    }
}

我希望车辆在收到消息后 4 秒内减速并停止。但是这件事并没有发生。当事故发生时,第一辆车立即制动,其余车辆照常停车。我哪里错了?请提出建议。

【问题讨论】:

    标签: omnet++ veins traffic-simulation


    【解决方案1】:

    正如我写的on the mailing list;我认为您的问题的原因是 SUMO 自动模拟驾驶员对事故或障碍物的反应。如果司机看到事故,他们的反应是打破特定的模式。 SUMO 由交通科学界开发,以某种程度的真实性来反映这种行为。

    据我所知,commandSlowDown 旨在作为一项附加功能,例如,当您想要模拟由于 SUMO 无法模拟的其他原因而减速的车辆时。特别是,当您收到有关距离较远的事故的信息时(例如,经过多次跳跃),您可以使用减速。我怀疑这可能是您想要实现的目标,那么您确定其他车辆也收到了消息吗?

    【讨论】:

    • 是的,所有车辆都会收到消息,因为 Veins 教程有代码可以在整个车辆排上广播消息,并且车辆会改变他们的路线。同样,我想将响应更改为紧急制动而不是更改路线。我应该在哪里进行更改?
    • 我不确定你的意思。如果您想禁用或更改 SUMO 的紧急破坏行为,您可能应该在 SUMO 邮件列表上提出您的问题 - 不幸的是,我对 SUMO 不够熟悉,无法建议一种处理您尝试的好方法做。或者,您可能想看看 Michele Segeta 的 plexe 工作,它处理队列(并且可能有类似的问题)。
    【解决方案2】:

    默认情况下,事故避免行为会覆盖 TraCI 命令。您需要使用“速度模式”命令明确启用不安全驾驶。见http://sumo.dlr.de/wiki/TraCI/Change_Vehicle_State#speed_mode_.280xb3.29

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 2019-09-20
      • 1970-01-01
      相关资源
      最近更新 更多