【问题标题】:Gazebo model path issue when starting from Java从 Java 启动时的 Gazebo 模型路径问题
【发布时间】:2020-05-19 22:51:12
【问题描述】:

我的团队目前正在开发一个涉及机器人仿真软件 Gazebo 的 Java 项目。为了启动具有特定世界的 Gazebo,我们编写了一个 shell 脚本,我们希望使用 Java(或 ProcessBuilder)中的Runtime.getRuntime().exec(...) 命令执行该脚本。

这是我们的问题:

如果我们从终端启动该脚本,一切都会完美运行,即您可以使用我们的一个模型(塔架)看到一个世界:

但是,如果我们尝试从 Java 应用程序中执行该脚本,它只会显示这一点(模型被识别但不可视化):

我们假设 Gazebo 没有找到 Gazebo 模型路径,尽管它们在 ~/.bashrc 中定义。

有人知道为什么它不起作用。我们知道你们中的大多数人可能不知道 Gazebo,但也许你们中的一些人处理过类似的问题。 提前致谢!

【问题讨论】:

  • 您可以通过指定所需的特定变量来确保您的脚本始终在正确的环境下运行,或者在脚本开头通过. ~user/.bashrc 加载环境。
  • 感谢您的评论!我切换到 ProcessBuilder 并找到了一种定义环境变量的方法。现在可以使用了

标签: java bash shell ros


【解决方案1】:

我找到了适合我们的解决方案:

我使用 ProcessBuilder,而不是“Runtime.getRuntime().exec(...)”命令。

ProcessBuilder builder = new ProcessBuilder();
builder.command(your_command);
builder.directory(new File(your_path));
Map<String, String> env = builder.environment();
env.put("GAZEBO_MODEL_PATH", variable_content);
Process process = builder.start();

现在,我们可以在这里设置 GAZEBO_MODEL_PATH 并且 Gazebo 会正确加载所有世界

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 2014-01-14
    • 2013-10-25
    • 1970-01-01
    相关资源
    最近更新 更多