从 Java 开始时的 Gazebo 模型路径问题
Gazebo model path issue when starting from Java
我的团队目前正在 Java 开展一个涉及机器人模拟软件 Gazebo 的项目。要在特定世界启动 Gazebo,我们编写了一个 shell 脚本,我们希望使用 Java(或 ProcessBuilder)中的 Runtime.getRuntime().exec(...)
命令执行该脚本。
这是我们的问题:
如果我们从终端启动该脚本,一切都会完美运行,即您可以看到一个带有我们模型(塔)的世界:
但是,如果我们尝试从我们的 Java 应用程序中执行该脚本,它只会显示这一点(模型被识别但未可视化):
我们假设 Gazebo 没有找到 gazebo 模型路径,尽管它们在 ~/.bashrc
中定义。
有谁知道为什么它不起作用。我们知道你们中的大多数人可能不了解 Gazebo,但也许你们中的一些人已经处理过类似的问题。
提前致谢!
我找到了适合我们的解决方案:
我使用 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 会正确加载所有世界
我的团队目前正在 Java 开展一个涉及机器人模拟软件 Gazebo 的项目。要在特定世界启动 Gazebo,我们编写了一个 shell 脚本,我们希望使用 Java(或 ProcessBuilder)中的 Runtime.getRuntime().exec(...)
命令执行该脚本。
这是我们的问题:
如果我们从终端启动该脚本,一切都会完美运行,即您可以看到一个带有我们模型(塔)的世界:
但是,如果我们尝试从我们的 Java 应用程序中执行该脚本,它只会显示这一点(模型被识别但未可视化):
我们假设 Gazebo 没有找到 gazebo 模型路径,尽管它们在 ~/.bashrc
中定义。
有谁知道为什么它不起作用。我们知道你们中的大多数人可能不了解 Gazebo,但也许你们中的一些人已经处理过类似的问题。 提前致谢!
我找到了适合我们的解决方案:
我使用 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 会正确加载所有世界