我想知道是否有可能通过向TraCICommandInterface添加一个函数来访问加速度参数。我已经看到速度值取自Move.h文件。如果可能的话,我想访问TraCI计算的加速度,只是为了得到它而不是设置它。有人有一些建议吗?谢谢
通过命令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
。
我想就如何找出加速问题给出一个解决方案。我正在使用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中使用每辆车的正确加速度,而无需在每次收到消息时进行计算。