Omnet++ 将函数添加到TraCICommandInterface

Omnet++ 将函数添加到TraCICommandInterface,omnet++,veins,sumo,Omnet++,Veins,Sumo,我想知道是否有可能通过向TraCICommandInterface添加函数来访问加速度参数。 我看到速度值取自Move.h文件。 如果可能的话,我想访问TraCI计算的加速度,只是为了得到它,而不是为了设置它。 有人有什么建议吗?感谢通过命令0xa4(获取车辆变量)、变量0x72(加速度),TraCI API(自SUMO 1.1.0起)支持获取车辆在上一时间步中执行的加速度 对于Veners 5 alpha 1,您只需修改Veners本地副本的TraCICommandInterface类,就可以

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

通过命令0xa4(获取车辆变量)、变量0x72(加速度),TraCI API(自SUMO 1.1.0起)支持获取车辆在上一时间步中执行的加速度

对于Veners 5 alpha 1,您只需修改Veners本地副本的TraCICommandInterface类,就可以使用一种方法进行修改。您的方法可能与函数非常相似

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

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

如果还使用相应的
双getAcceleration()修改
TraCICommandInterface.h
声明和
src/venides/modules/mobility/traci/TraCIConstants.h
,常数为
const uint8\u t VAR\u ACCELERATION=0x72
,您可以在
TraCIDemo11p.cc

中查询加速度,如
traciVehicle->getAcceleration()
,我想给出一个如何发现加速度问题的解决方案。 我使用的是相扑0.30.0、Velse4.7.1、Omnet++5.4.1

我更仔细地研究了可追踪性课程。逐行阅读,我发现加速度是计算出来的!所以我把它保存到一个变量中,我创建了一个pubblic方法来获取它,并尝试打印每辆车的结果,得出它与相扑车相等!因此,无需通过TraCICommandInterface进行任何调用,我就能获得可靠的加速度值

对于没有很多经验的人,我补充说: 在TraCIMobility.h中,在TraCIMobility类结束之前:

    protected:
        double m_acceleration = 0;
    public:
        double getAcceleration() { return m_acceleration;}
在TraCIMobility.cc中,在计算二氧化碳排放量变量后,我添加以下行:

m_acceleration = acceleration;

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

这并不是那么简单,事实上我尝试了这种方法,但没有什么问题:1)0x72它是一个已声明的变量,即使未使用2)如果我尝试在模拟启动后立即使用0x72获取值,这是报告的错误消息:发生运行时错误:TraCI服务器报告执行0xa4时出错(“获取车辆变量:指定了不支持的变量0x72”)--在模块(TraCIDemo11p)中,您完全正确-这(相扑拒绝查询加速度)似乎是一个缺陷,至少在相扑1.1.0中存在。所有代码都已准备就绪,但您需要允许VAR_加速作为可能的查询变量之一,例如,在我希望Veines 5和SUMO 1.1.0将尽快工作:)。我可以问你是否有可能尝试在相扑0.30.0中引入加速度吗?有没有像您为Sumo1.1.0描述的那样的接口?Commit基于Velse5Alpha 1并添加了对Sumo1.1的支持。0@ChristophSommer从python客户端查询加速是可能的,至少我们的测试是有效的。您所指的代码行用于设置而不是检索,因此我不会立即看到相扑bug。