在 ROS catkin 工作空间中定义和使用 Python class

Defining and using a Python class within a ROS catkin workspace

我是 运行 ROS Indigo。我有一个应该是简单的问题:我的包中有一个实用程序 class,我希望可以从我们的脚本中调用它。只需要在我们自己的包内调用即可;我不需要它对其他 ROS 包可用。

我在文件 HandControl.py 中定义了一个名为 HandControl 的 class。我所有导入它或不导入就使用它的尝试都失败了。我应该把它放在 catkin 工作区的什么位置——包的根目录,还是脚本?我是否需要 __init.py__ 任何地方(我已经尝试了几个地方)?

艾丽卡,

请参阅 this 学校项目,该项目是在 ROS Indigo 上用 Python 和 运行 编写的。如果您查看 /scripts 文件夹,您可以看到从其他脚本调用的自定义 class 示例。如果您查看 /launch 中的启动文件,您可以看到配置 ROS 节点的示例 - 也许这就是您的问题。

在这里遵循 Python 和 ROS 的标准是一个很好的做法。脚本通常放在 /script 目录中,它们应该 被导入到其他 python 脚本中。可重用 python 代码表示 python 模块。 Python 模块应该放在 /src/package_name 中,你也应该在那里创建 __init__.py。该模块将在您的 catkin 工作区中随处可用。这个结构很有可能会在未来帮助你构建事物,即使你现在似乎不需要它。项目通常会增长,遵循指南有助于维护良好的代码。有关更具体的详细信息,请查看此 python doc.