将函数添加到TraCICommandInterface

问题描述 投票:1回答:2

我想知道是否有可能通过向TraCICommandInterface添加一个函数来访问加速度参数。我已经看到速度值取自Move.h文件。如果可能的话,我想访问TraCI计算的加速度,只是为了得到它而不是设置它。有人有一些建议吗?谢谢

omnet++ veins sumo
2个回答
1
投票

通过命令0xa4(获取车辆变量),变量0x72(加速度)according to the SUMO Wiki,TraCI API(从SUMO 1.1.0开始)支持车辆在最后一个步骤中执行的加速。

从Veins 5 alpha 1开始,您只需修改Veins本地副本的TraCICommandInterface类,即可获得一个方法。您的方法可能看起来非常类似于TraCICommandInterface::Vehicle::getMaxSpeed函数。

以下是一些适用于Veins 5a1和SUMO 1.0.1的示例代码。在src/veins/modules/mobility/traci/TraCICommandInterface.cc,添加:

double TraCICommandInterface::Vehicle::getAcceleration()
{
    return traci->genericGetDouble(CMD_GET_VEHICLE_VARIABLE, nodeId, VAR_ACCELERATION, RESPONSE_GET_VEHICLE_VARIABLE);
}

如果你也修改TraCICommandInterface.h与相应的double getAcceleration();声明和src/veins/modules/mobility/traci/TraCIConstants.h与常量像const uint8_t VAR_ACCELERATION = 0x72;,你可以查询加速像traciVehicle->getAcceleration()中的TraCIDemo11p.cc


1
投票

我想就如何找出加速问题给出一个解决方案。我正在使用SUMO 0.30.0,Veins 4.7.1,Omnet ++ 5.4.1。

我正在仔细研究TraCIMobility课程。逐行阅读我发现计算加速度!所以我将它保存到一个变量中,我创建了一个pubblic方法来获取它,并且我打算为每辆车打印结果,结果表明它等于SUMO!因此,如果不通过TraCICommandInterface使用任何调用,我就能够获得可靠的加速值。

对于没有很多经验的人,我在TraCIMobility类结束前的TraCIMobility.h中添加:

    protected:
        double m_acceleration = 0;
    public:
        double getAcceleration() { return m_acceleration;}

在TraCIMobility.cc中,在计算了co2emission变量之后,我添加了这一行:

m_acceleration = acceleration;

通过这种方式,我可以在TraCIDemo11p.cc中使用每辆车的正确加速度,而无需在每次收到消息时进行计算。

© www.soinside.com 2019 - 2024. All rights reserved.