使用shell脚本调用多个ROS启动文件

Posted

技术标签:

【中文标题】使用shell脚本调用多个ROS启动文件【英文标题】:Using a shell script to call multiple ROS launch files 【发布时间】:2014-06-11 20:01:38 【问题描述】:

我刚刚发现我明天需要一个快速而肮脏的演示。我正在使用一个使用 ROS 的机器人,我们有一些包可以让它以简单的模式移动。我想用一个命令启动所有必要的节点。我需要在单独的终端中运行的命令行是:

roscore

rviz

roslaunch [空白 move_base 地图]

roslaunch [包] [移动脚本]

rqt_graph

所有这些程序都无限期地运行——例如,roscore 是一个协调其他节点的服务器。我不能只使用“&”将它们串成一行。它们每个都需要一个专用的终端窗口/进程。如何在 bash 或 Python 中做到这一点?

注意:我意识到使用自定义 ROS 启动文件可能会更好,但我没有时间。

【问题讨论】:

尝试 subprocess 模块...例如 subprocess.call(["your code","code params"],shell=False) 【参考方案1】:

您可以从终端二进制文件本身启动您的软件,为每个软件获取一个新终端。这取决于您使用的终端。使用konsole,您可以拥有

konsole -e command [args]
...

使用 gnome-terminal 你可以:

gnome-terminal -e command [args] &

使用 xterm:

xterm -e command [args] &

也可以参考类似的帖子:Run multiple .sh scripts from one .sh script? CentOS

【讨论】:

我们最终使用了 xterm。谢谢!

以上是关于使用shell脚本调用多个ROS启动文件的主要内容,如果未能解决你的问题,请参考以下文章

ROS从入门到精通系列(二十五)--常用工具值shell脚本启动多条指令

ROS 机器人技术 - 编写一个 launch 启动多个节点

4.2 ROS节点运行管理launch文件

基于Bash脚本自己开发ROS的一键启动

python ros 使用launch文件启动脚本

Linux的shell脚本文件中怎么写多个自动启动的系统服务