【问题标题】:SUMO and OMNeT++ working together with JavaSUMO 和 OMNeT++ 与 Java 一起使用
【发布时间】:2016-04-20 10:28:44
【问题描述】:

我目前正在写我的学士论文,我的目的是创建一个 VANET 模拟器,让流量模拟器 SUMO 和网络模拟器 OMNeT++ 协同工作。

我知道已经有一个名为 Veins 的项目正在这样做。

但问题是我除了 PHP 或 Java 外不知道其他语言,我认为我需要更多时间来尝试理解 Veins,而不是用 Java 来做。

我已经看到,在 Java 中,有一个名为 traci4j 的库,旨在替代 Java 语言中的 TraCI。

我认为,要完成的第一步是能够从 Java 运行 SUMO 和 OMNeT++。一旦我实现了这一点,我就会着手处理两个程序之间的数据交换。

但是,我正在尝试从我的简单程序运行 SUMO-gui,但均未成功:

public static void main(String[] args) throws IOException, InterruptedException {

    String configFile = "test/resources/sumo_maps/Test2/Test2.sumo.cfg";
    SumoTraciConnection trial = new SumoTraciConnection(configFile,-1);
    trial.runServer(true);

}

但我不断收到以下信息。我曾尝试在调试模式下进行此操作,但这是一项非常乏味的工作,最后我什么也得不到。

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 9, Size: 7
    at java.util.ArrayList.rangeCheckForAdd(Unknown Source)
    at java.util.ArrayList.add(Unknown Source)
    at it.polito.appeal.traci.SumoTraciConnection.runSUMO(SumoTraciConnection.java:477)
    at it.polito.appeal.traci.SumoTraciConnection.runServer(SumoTraciConnection.java:267)
    at trial.TrialConnection.main(TrialConnection.java:32)

如果你能告诉我我的想法是什么,我将不胜感激。任何其他关于我的想法和计划我的论文的方式的评论也将不胜感激。

顺便说一句,我正在使用 SUMO 0.25、OMNeT++ 4.6 和 Eclipse Mars.2 Release (4.5.2)

提前感谢您的关注

编辑:

我设法找到了异常的来源,您可以将其作为答案找到。但是,我不断收到错误消息:

ERROR StatusLogger 找不到 log4j2 配置文件。使用默认配置:仅将错误记录到控制台。

不管怎样,这似乎并不影响程序的运行,因为我运行成功了。但是,如果我不按运行按钮,它就不起作用!

【问题讨论】:

  • 您使用的 SUMO 版本可能与您使用的 traci4j 版本不兼容
  • 我刚刚发现了IndexOutOfBoundsException的起源,似乎当SumoTraciConnection调用runServer(boolean WithGui)时,如果WithGui设置为true,那么它会跳过添加2项到列表中: if (randomSeed != -1) { args.add(7, "--seed"); args.add(8, Integer.toString(randomSeed)); } args.add(9, "--xml-validation"); args.add(10, "never"); 而且,关于版本,它在他们的网页上说:一个有效的 SUMO 安装(0.23.0 或更高版本)
  • 如果您能够回答自己的问题,请随时自行添加答案。 StackOverflow 就是为(好的)问题收集好的答案。发布针对常见问题的良好解决方案将有助于未来的其他人。
  • 对不起,我是新来的,我不知道“评论”和“答案”之间有显着区别!我现在就做

标签: java omnet++ veins traffic-simulation


【解决方案1】:

我发现了 IndexOutOfBoundsException 的来源,似乎当 SumoTraciConnection 调用 runServer(int remotePort, boolean withGui) 时,如果 WithGui 设置为 true,那么它会跳过向列表中添加 2 项:

if (randomSeed != -1) {
    args.add(7, "--seed");
    args.add(8, Integer.toString(randomSeed));
}

// this avoids validation of the input xml files; if SUMO_HOME is not set correctly,
// sumo will try to download the schema files from the web and may wait 30 seconds at startup
// for the connection to time out.
args.add(9, "--xml-validation");
args.add(10, "never");

【讨论】:

    猜你喜欢
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多