特定范围内的节点数

Count of nodes in an specific range

我正在使用 veins 5,我正在尝试获取距节点一定距离的周围节点的位置。更具体地说,我试图在瞬间获得所有节点的映射位置以处理节点的位置。

我读了这个问题 ,但是它以 veins 4.6 为中心,我也不知道如何使用 Christoph Sommer 建议的方法。是否有可能在 veins 5 中获得映射?我该如何操作?

我会很感激任何帮助 谢谢!

最后我得到了模拟中所有节点的位置并计算了它们与标记汽车的距离。

为此,我通过以下方式将 Ahmad Ahsan 在问题 中的回答“翻译”为 veins 5.0:

void MessageGenerator::getMapping(){

    // Get my position on the scenario
    veins::Coord myPosition = mobility->getPositionAt(simTime());
    EV << myPosition << endl;

    // Get all available nodes in simulation
    std::map<std::string, cModule*> allNodes = mobility->getManager()->getManagedHosts();

    // Iterate through collection and find distance,
    std::map<std::string, cModule*>::iterator it;

    for(it = allNodes.begin(); it != allNodes.end(); it++)
    {
        TraCIMobility* auxMobility = TraCIMobilityAccess().get(it->second);
        veins::Coord receiverPosition = auxMobility->getPositionAt(simTime());

        //returns distance in meters
        double dist = myPosition.distance(receiverPosition);
        EV << "Distance: " << dist << endl;
    }
}

关键的变化在 getPositionAt(simTime()) 方法中。

post 中所讨论的,如果将此数据用于现实模拟目的,获取模拟中所有车辆的方法是一种不好的做法,因为几乎不可能在一个时间步内获得所有位置。就我而言,我仅将其用于评估目的。