我正在尝试通过SSH将带有pycroft的Raspberry pi与Turtlebot链接起来。我已经创造了一种技能,我希望当我说“去某个地方”时,乌龟机器人会转到这个地方。
这部分没有问题。问题来了。
我有一个python脚本,如果首先通过ssh连接,然后执行python go_to_specific_point_on_map.py
,则该脚本可以正常工作$ ssh tb2@192.168.0.158
$ python go_to_specific_point_on_map.py
Image of everything working fine
但是,如果我尝试用一个命令完成所有操作,则会得到: ImportError:没有名为“ rospy”的模块
$ ssh tb2@192.168.0.158 python go_to_specific_point_on_map.py
Image of the error. ImportError: No module named rospy
^[Traceback (most recent call last):
File "./mubita/go_to_specific_point_on_map.py", line 22, in <module>
import rospy
ImportError: No module named rospy
我已经尝试了arunp9294的解决方案,但是遇到了同样的错误。 $ ssh tb2@192.168.0.158“源〜/ .bashrc; python go_to_specific_point_on_map.py”
文件go_to_specific_point_on_map.py在此处: go to specific point on map script
我认为这是一个问题,因为未加载.bashrc,也没有别名。我完全不知道问题是什么以及如何解决。
有人可以帮我吗?请。
我不知道如何使它工作。
非常感谢您!
答案 0 :(得分:0)
我猜这是路径问题,请尝试使用以下命令将rospy模块的位置添加到pythonpath中:
import sys
sys.path.append("/path/to/rospy/in/your/turtlebot")
import rospy
问题是,如果代码在“ rospy”模块的不同位置的不同系统上执行,则必须手动更改路径
如果您不知道路径,可以先执行
之类的python程序import sys
print(sys.path)
通过两种方式(直接在ssh中和ssh之后)查看输出是否存在差异,如果您看到差异,则只需使用该差异扩展代码路径即可。
示例:
连接后输出并执行:
$ ssh tb2@192.168.0.158
$ python print_path.py
['a', 'b', 'c', 'd']
在一个命令中通过连接和执行输出:
$ ssh tb2@192.168.0.158 python print_path.py
['a', 'b']
如果发现不同之处,请使用以下命令修改turtlebot中的代码:
import sys
sys.path.extend(['c', 'd'])
import rospy
...