【问题标题】:Identify node types using Veins使用 Veins 识别节点类型
【发布时间】:2021-06-21 06:39:20
【问题描述】:

我在具有不同类型节点(汽车、行人等)的场景中使用静脉和 OMNeT++。出于评估目的,我使用基于this 帖子的 TraCIScenarioManager::getManagedHosts 方法获取 std::map(我还回答了我的相关@​​987654322@ 之一)。

现在,我想检查场景中每个节点的类型。为了更清楚,我想获得某种列表,指示每个节点的类型(是行人吗?是公共汽车吗?)。有什么方法可以从地图上获得这个吗?有没有标识节点类型的属性?

我已经可以通过消息添加具体标签来识别节点的类型,但是现在我需要独立于消息的到达来获取节点的类型。

非常感谢您提供的任何帮助。

【问题讨论】:

    标签: omnet++ veins


    【解决方案1】:

    TraCIScenarioManager::getManagedHosts 返回一个 std::map<std::string, cModule*>,它将每个 SUMO 标识符映射到一个 OMNeT++ cModule*。根据模拟中汽车、公共汽车等的不同,我可以想出多种方法来确定主机模型的 SUMO 对象类型。

    也许它们在 SUMO 中的命名不同?然后您可以使用std::string 来区分它们。

    也许它们在 OMNeT++ 中的命名不同?然后您可以使用cModule* 中的getFullName() 来区分它们。

    也许他们使用不同的 C++ 类作为其应用层的模型?然后你可以使用cModule*getSubmodule() 之类的东西来获取指向其应用层模块的指针,并检查此指针的dynamic_cast<ApplicationOfACar*> 是否成功。

    【讨论】:

    • 通过“在 OMNeT++ 中命名不同”,您的意思是在静脉管理器.moduleType 参数中的不同名称吗?在这种情况下,我有前两个选项。我会尝试每个选项。非常感谢!
    • 我指的是实例名称(默认情况下,创建的 OMNeT++ 模块称为node,即node[1]node[2],...)。该值在github.com/sommer/veins/blob/veins-5.1/src/veins/modules/…中配置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多