如何获取静脉中车辆的路线id/流量id?

问题描述 投票:0回答:4

omnet++静脉模块有一个功能

getRoadId()
,可以返回车辆当前的“道路ID”,但是我如何才能获得车辆的“路线ID”或“流量ID”。

omnet++ veins
4个回答
3
投票

好吧,我很抱歉这个问题,实际上我之前使用的是veves-3.0。在veves-3.0中没有这个功能。

今天我已经迁移到静脉-4a2。在这里可以使用

traciVehicle->getRouteId()
轻松找到它。非常感谢先生。 Christoph Sommer 带来此更新。


0
投票

我目前使用的是 Veins 2.0-rc1,即使没有实现这样的功能,您也可以通过在 TraCIScenarioManager 类下创建一个新函数来完成这项工作,轻松实现它。

为了做到这一点,您必须检查此类下实现的函数,以及对 SUMO 下已记录的 TraCI Python 模块的良好阅读/理解。


0
投票

如果有人想在旧版本的静脉中使用它,可以手动添加它,如下所示:

TraCICommandInterface.h 中写入

std::string getRoadId();
定义:

// Vehicle methods
        bool addVehicle(std::string vehicleId, std::string vehicleTypeId, std::string routeId, simtime_t emitTime_st = -DEPART_NOW, double emitPosition = -DEPART_POS_BASE, double emitSpeed = -DEPART_SPEED_MAX, int8_t emitLane = -DEPART_LANE_BEST_FREE);

    class Vehicle {
        public:
            Vehicle(TraCICommandInterface* traci, std::string nodeId) : traci(traci), nodeId(nodeId) {
                connection = &traci->connection;
            }

            ...
            std::string getRoadId(); //here is the definition
            ...

        protected:
            TraCICommandInterface* traci;
            TraCIConnection* connection;
            std::string nodeId;
    };

    Vehicle vehicle(std::string nodeId) {
        return Vehicle(this, nodeId);
    }

TraCICommandInterface.cc 中写入

std::string getRoadId();
声明:

std::string TraCICommandInterface::Vehicle::getRoadId() {
return traci->genericGetString(CMD_GET_VEHICLE_VARIABLE, nodeId, VAR_ROAD_ID, RESPONSE_GET_VEHICLE_VARIABLE);
}

0
投票

此方法获取包含车辆路线的列表:

traciVehicle->getPlannedRoadIds();
© www.soinside.com 2019 - 2024. All rights reserved.