[1]我正在尝试使用TraCE Command Interface::Vehicle::change Vehicle Route(const std::list<std::string>& edges)
为车辆分配新路线,但一切都没有发生。
我正在获取当前路线[&#39; 6 / 7to6 / 6&#39;,&#39; 6 / 6to5 / 6&#39;,&#39; 5 / 6to4 / 6&#39;, &#39; 4 / 6to3 / 6&#39;,&#39; 3 / 6to3 / 7&#39;,&#39; 3 / 7to3 / 8&#39;,&#39; 3 / 8to3 / 9&#39 ;,&#39; 3 / 9to2 / 9&#39;,&#39; 2 / 9to2 / 8&#39;]计算新的并发送[&#39; 6 / 7to6 / 6&#39;,&#39; ; 6 / 6to5 / 6&#39;,&#39; 5 / 6to4 / 6&#39;,&#39; 4 / 6to3 / 6&#39;,&#39; 3 / 6to2 / 6&#39;,& #39; 2 / 6to2 / 7&#39;,&#39; 2 / 7to2 / 8&#39;,&#39; 2 / 8to3 / 8&#39;,&#39; 3 / 8to3 / 9&#39; ,&#39; 3 / 9to2 / 9&#39;,&#39; 2 / 9to2 / 8&#39;]。
但changeVehicleRoute(edges)
返回0,因此未分配新路线。
我的代码片段如下。有人能帮助我吗?
更多问题,
[2]如果我的当前路线为[a , b, c, d, e, f]
并且车辆在c
中是最新的,那么当我计算新路线[a,b,c,H,I,f]
时,我可以分配所有路线{{1}或者只有其余的[a,b,c,H,I,f]
?
[3]如果我只把剩下的那个放在一起,它会受到路线长度,距离,燃料......的SUMO统计数据的影响吗?
rot.h
[c,H,I,f]
rot.cc
TraCIMobility* mobility;
TraCICommandInterface* traci;
TraCICommandInterface::Vehicle* traciVehicle;
...
答案 0 :(得分:0)
车辆的新路线始终需要从车辆当前所在的边缘开始。如果车辆位于交叉路口或接近交叉路口且无法在其前方停车,则交叉路口附近的接近边缘应为起点。否则重新路由将失败。我承认可能很难判断车辆是否仍能停止,因为它取决于所使用的车型,但是如果出现冲突/红色交通信号灯用于新方向,则可选择紧急制动。这可能导致碰撞,这是不太理想的。车辆的所有统计数据都将基于最终驱动的路线,因此您不会通过设置新路线来更改历史记录。