2

到目前为止,在我的项目上工作时,我一直在使用 rospy 构建 ROS 脚本——建立主题和节点,订阅事物,并且通常只做各种功能。不过,我一直相信,最终我的脚本将需要被制作成“包”,其概念是它们增加了程序的模块化(这就是事情的完成方式)。

到目前为止,我的脚本非常紧凑,我不明白为什么发送调用 rospy 的 python 脚本需要这种额外的包装级别(特别是考虑到大多数 ROS wiki 教程的混淆性质)。到目前为止,我不必为我的任何程序创建 catkin 包或任何东西。为什么我需要关心 ROS 包和 catkin 之类的东西,有什么压倒性的原因吗?现在,我只是看不到一切运行良好并且可能会在运行脚本的任何机器上运行的点。

谢谢!

4

1 回答 1

2

有很多情况下你肯定要使用 catkin:

  • 您的包包含 C++ 代码。这必须编译,由 catkin 处理。
  • 您有自定义消息类型。必须生成和编译自定义消息。这又是由 catkin 完成的。
  • 您依赖于其他 ROS 包(反之亦然)。catkin 解决了这种依赖关系,并在必要时构建它们。
  • 您有需要安装的 Python 模块,以便其他包可以使用它们。当然,您可以制作自定义 setup.py,但使用 catkin 是 ROS 方式来做到这一点。
  • 当您的脚本在 catkin 包中时,您可以使用 ROS 命令行工具(rosrunroscdrosed、 ...),非常方便。

只要你真的只有简单的 Python 脚本而不依赖于其他非核心 ROS 包,你可能没有将它们捆绑在一个包中就可以了。
但是,一旦您与其他 ROS 开发人员共享您的代码,我仍然会将它们打包。虽然它可能有效,但如果其他人没有得到他们习惯的包结构,就会感到困惑。

于 2015-10-06T08:49:11.440 回答