首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PyQt4图形用户界面中查找bash文件

在PyQt4图形用户界面中查找bash文件
EN

Stack Overflow用户
提问于 2016-07-29 18:47:25
回答 1查看 281关注 0票数 5

我正在开发一个用PyQt4和Python2.7构建的GUI,它为运行ROS的Clearpath Husky启动各种演示。图形界面在发射导航演示和可视化我的物理机器人之间切换。要做到这一点,它必须在本地ROS上启动演示和在我的Husky上启动ROS之间切换。在两个不同的ROS实例之间切换时,我需要能够为每个操作系统“源”devel/setup.bash,以便正确构建包,并且可视化Rviz内部的Husky ( TF框架的错误,如“无tf数据。实际错误:固定帧odom不存在”和RobotModel "URDF模型解析失败“)。在我的.bashrc中,如果我获取Husky的setup.bash,那么在我尝试运行一个本地演示之前,可视化是很好的。反之亦然;当获取本地setup.bash将运行本地演示时,哈士奇的可视化中断了。

是否有一种方法可以使用python的子流程(或另一种替代)来在GUI实例中获取适当的devel/setup.bash,从而使可视化不会中断?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-30 16:31:58

是的,在执行所需的ROS命令之前提供安装脚本就足够了,例如:

代码语言:javascript
复制
#!/usr/bin/env python

from subprocess import Popen, PIPE

shell_setup_script = "/some/path/to/workspace/devel/setup.sh"
command = "echo $ROS_PACKAGE_PATH"
cmd = ". %s; %s" % (shell_setup_script, command)

output = Popen(cmd, stdout=PIPE, shell=True).communicate()[0]
print(output)

正如您所看到的,使用了shell=True,它将在子subshell中执行cmd。然后,cmd包含在执行命令之前来源于安装脚本的. <shell_setup_script>; <command>。请注意,.sh文件是来源于Popen,而不是.bash,因为Popen很可能使用通用POSIX。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38665664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档