ROS catkin 工作区中的 Python 模块和子模块
Posted
技术标签:
【中文标题】ROS catkin 工作区中的 Python 模块和子模块【英文标题】:Python Modules and submodules in ROS catkin workspace 【发布时间】:2018-06-25 20:28:20 【问题描述】:我正在尝试在 ROS 中运行 python 代码,它包含一个我必须 pip 安装的模块(不是为 ROS 制作的模块)。当我尝试在运行 roscore 的 catkin 工作区中运行代码时,它找不到我安装的模块并给我一个 ImportError。知道如何使用 rospy 在 ROS 上运行已经创建的模块吗?
【问题讨论】:
你试过像python filename.py
一样直接运行吗?这可能会奏效。但是,实际上您必须在 CMakelists.txt
文件中包含该库。
@akshayk07 CMakeLists.txt 中无需提及 Python 模块。只要 Python 包安装正确,它应该可以使用,无需对 ROS 包进行任何额外配置。
@Priyal Gosar:可以在 ROS 包之外使用 Python 模块吗?例如。你能在交互式 Python 终端中导入它吗?正如我上面写的,应该不需要在 ROS 包中做任何特殊的事情。
把你的源代码和错误完全追溯。
【参考方案1】:
确保您可以找到该模块
这里有 3 个选项。它们都应该工作并且按照hackiness的顺序排列。
您可以像 ros numpy tutorial 一样将模块添加到 package.xml。
<build_depend>python-numpy</build_depend>
<run_depend>python-numpy</run_depend>
在 .bashrc 中设置 $PTYHONPATH 环境变量:
export PYTHONPATH=$PYTHONPATH:/path/to/your/package_or_module
在你的python代码中导入模块之前注入一个路径:
import sys
sys.path.insert(0, "/path/to/your/package_or_module")
确保您正确运行程序
在运行程序之前为您的 .bashrc 和 catkin 工作区提供资源。
如果您尝试使用rosrun package_name filename.py
,则需要确保该文件是可执行文件:
chmod +x pythonfile.py
并且python文件的顶部应该有代码:
#!/usr/bin/env python
考虑直接使用 python 来运行文件,就像提到的 akshayk07 一样
python filename.py
【讨论】:
以上是关于ROS catkin 工作区中的 Python 模块和子模块的主要内容,如果未能解决你的问题,请参考以下文章
完成 catkin 构建后,ROS Python 脚本不可执行
在 ROS catkin 工作区中定义和使用 Python 类
通过 CMake 在 catkin 工作场所外使用 ROS 自定义消息