使用 Veins 识别节点类型

Identify node types using Veins

我在具有不同类型节点(汽车、行人等)的场景中使用静脉和 OMNeT++。出于评估目的,我使用基于 post (I also answered one of my related ).

的 TraCIScenarioManager::getManagedHosts 方法获取 std::map

现在,我想查看场景中每个节点的类型。更清楚地说,我想获得某种表明每个节点类型的列表(是行人吗?是公共汽车吗?)。有没有办法从地图上获取这个?有没有标识节点类型的属性?

我已经可以通过向其添加特定标签的消息来识别节点类型,但现在我需要获取与消息到达无关的节点类型。

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

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

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

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

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