关于ROS包的必要性
Regarding the Necessity of ROS Packages
到目前为止,在处理我的项目时,我一直在使用 rospy 构建 ROS 脚本 - 建立主题和节点,订阅事物,以及通常执行各种功能。不过,我已经被引导相信,最终我的脚本将需要制作成 'packages',其概念是它们增加了程序的模块化(这正是事情完成的方式)。
到目前为止,我的脚本非常紧凑,我不明白为什么发送一个 python 脚本调用 rospy 需要这种额外的包装级别(特别是考虑到大多数 ROS wiki 的混淆性质教程)。到目前为止,我还没有为我的任何程序创建 catkin 包或任何东西。有什么压倒性的理由让我需要关心 ROS 包和 catkin 之类的东西吗?现在,我只是看不到一切都运行良好并且可能会在脚本来自 运行 的任何机器上运行的意义。
谢谢!
肯定要用catkin的情况有很多:
- 您的包中包含 C++ 代码。这必须编译,由 catkin 处理。
- 您有自定义消息类型。必须生成和编译自定义消息。同样,这是由 catkin 完成的。
- 您依赖于其他 ROS 包(反之亦然)。 catkin 解决了这个依赖关系,并在必要时构建它们。
- 您有 Python 个模块需要安装,以便其他包可以使用它们。当然你可以自定义 setup.py 但使用 catkin 是实现此目的的 ROS 方式。
- 当你的脚本在catkin包中时,可以使用ROS命令行工具(
rosrun
、roscd
、rosed
、...),非常方便.
只要你真的只有简单的 Python 脚本而不依赖于其他非核心 ROS 包,你可能不需要将它们捆绑在一个包中。
但是,一旦您与其他 ROS 开发人员共享您的代码,我仍然会打包它们。虽然它可能有效,但如果其他人不了解他们习惯的包结构,就会感到困惑。
到目前为止,在处理我的项目时,我一直在使用 rospy 构建 ROS 脚本 - 建立主题和节点,订阅事物,以及通常执行各种功能。不过,我已经被引导相信,最终我的脚本将需要制作成 'packages',其概念是它们增加了程序的模块化(这正是事情完成的方式)。
到目前为止,我的脚本非常紧凑,我不明白为什么发送一个 python 脚本调用 rospy 需要这种额外的包装级别(特别是考虑到大多数 ROS wiki 的混淆性质教程)。到目前为止,我还没有为我的任何程序创建 catkin 包或任何东西。有什么压倒性的理由让我需要关心 ROS 包和 catkin 之类的东西吗?现在,我只是看不到一切都运行良好并且可能会在脚本来自 运行 的任何机器上运行的意义。
谢谢!
肯定要用catkin的情况有很多:
- 您的包中包含 C++ 代码。这必须编译,由 catkin 处理。
- 您有自定义消息类型。必须生成和编译自定义消息。同样,这是由 catkin 完成的。
- 您依赖于其他 ROS 包(反之亦然)。 catkin 解决了这个依赖关系,并在必要时构建它们。
- 您有 Python 个模块需要安装,以便其他包可以使用它们。当然你可以自定义 setup.py 但使用 catkin 是实现此目的的 ROS 方式。
- 当你的脚本在catkin包中时,可以使用ROS命令行工具(
rosrun
、roscd
、rosed
、...),非常方便.
只要你真的只有简单的 Python 脚本而不依赖于其他非核心 ROS 包,你可能不需要将它们捆绑在一个包中。
但是,一旦您与其他 ROS 开发人员共享您的代码,我仍然会打包它们。虽然它可能有效,但如果其他人不了解他们习惯的包结构,就会感到困惑。