是否可以"stuff"一个ROS包到另一个ROS包?
Is it possible to "stuff" one ROS package into another ROS package?
我正在研究要部署在我们实验室机器人上的 ROS 包。我的包中有一项功能需要第三方 ROS 包。我认为这个包还没有发布,至少我在 ROS wiki 文档站点上找不到它。依赖包被称为 ros_msg_parser 用于订阅主题而事先不知道它们的消息类型。这是回购协议的 link。 (https://github.com/facontidavide/ros_msg_parser)
我需要指出的是,我们在所有设备中都使用 ubuntu 16.04。我们用 ROS 和 C++ 编程。
我的目的是将我自己的 ROS 包部署到机器人上,而不用担心设备上是否安装了 ros_msg_parser 包。
我知道几种方法:
- 使用.so 库文件。 (我们不认为这种方法对我们来说是理想的方法,因为 .so 库将来将成为实验室其他同事的黑匣子,并且无法知道它的版本,所以没有。)
- 发布ros_msg_parser ROS repo,作为ros生态环境程序使用,如std_msgs.
- 最后,(不是我们想要的)我们可以在我们所有的设备上 build/install 这个 ros_msg_parser 包。
我也研究过 externalpackage_add,到 build/install ros_msg_parser 作为第三方库。然后我意识到我正在使用 ros 包作为我的依赖项,而不是构建 && cmake && 安装的标准方法。如果我错了请纠正我。
我希望包现在可以正常工作,catkin_make ros_msg_parser 包在我的 space 中一起工作。
我只是想知道是否有人可以帮助我解决一些问题,例如是否有任何我可以做的方法或任何我可以自己研究以实现我的目标的地方。
提前致谢。
幸运的是,我得到了团队的一些帮助来解决这个问题。比我想象的要简单。
以下是我们实施的步骤:
git clone
ros pacakge 源,仅将源文件复制到与[=24平行的名为your_third_party_folder/的文件夹中=]your_main_work_space/src 文件夹。请记住删除您的 git 克隆历史等,您只需要源文件,否则您的主要工作 space 将无法与您自己的 repo 一起正常工作。由于不干净的 repo 提示,您将无法将我们的 third_party 项目推送到您的 repo。 也许还有其他方法可以解决这个问题,但将源文件复制到想要的文件夹。
处理你的两个 CMakeLists.txt 文件,确保包含 link 并定位一些库以通过 catkin_make
并且不要忘记 add_subdirectory(YOUR_THIRD_PARTY_PACKAGE)
在你的主要工作space CMakeLists.txt 文件中。
请注意,我花了一些时间来修复编译过程,但最终安装的 third_party 项目没有 .so 文件,也没有安装本地库。
我正在研究要部署在我们实验室机器人上的 ROS 包。我的包中有一项功能需要第三方 ROS 包。我认为这个包还没有发布,至少我在 ROS wiki 文档站点上找不到它。依赖包被称为 ros_msg_parser 用于订阅主题而事先不知道它们的消息类型。这是回购协议的 link。 (https://github.com/facontidavide/ros_msg_parser)
我需要指出的是,我们在所有设备中都使用 ubuntu 16.04。我们用 ROS 和 C++ 编程。
我的目的是将我自己的 ROS 包部署到机器人上,而不用担心设备上是否安装了 ros_msg_parser 包。
我知道几种方法:
- 使用.so 库文件。 (我们不认为这种方法对我们来说是理想的方法,因为 .so 库将来将成为实验室其他同事的黑匣子,并且无法知道它的版本,所以没有。)
- 发布ros_msg_parser ROS repo,作为ros生态环境程序使用,如std_msgs.
- 最后,(不是我们想要的)我们可以在我们所有的设备上 build/install 这个 ros_msg_parser 包。
我也研究过 externalpackage_add,到 build/install ros_msg_parser 作为第三方库。然后我意识到我正在使用 ros 包作为我的依赖项,而不是构建 && cmake && 安装的标准方法。如果我错了请纠正我。
我希望包现在可以正常工作,catkin_make ros_msg_parser 包在我的 space 中一起工作。
我只是想知道是否有人可以帮助我解决一些问题,例如是否有任何我可以做的方法或任何我可以自己研究以实现我的目标的地方。
提前致谢。
幸运的是,我得到了团队的一些帮助来解决这个问题。比我想象的要简单。
以下是我们实施的步骤:
git clone
ros pacakge 源,仅将源文件复制到与[=24平行的名为your_third_party_folder/的文件夹中=]your_main_work_space/src 文件夹。请记住删除您的 git 克隆历史等,您只需要源文件,否则您的主要工作 space 将无法与您自己的 repo 一起正常工作。由于不干净的 repo 提示,您将无法将我们的 third_party 项目推送到您的 repo。 也许还有其他方法可以解决这个问题,但将源文件复制到想要的文件夹。处理你的两个 CMakeLists.txt 文件,确保包含 link 并定位一些库以通过 catkin_make
并且不要忘记
add_subdirectory(YOUR_THIRD_PARTY_PACKAGE)
在你的主要工作space CMakeLists.txt 文件中。
请注意,我花了一些时间来修复编译过程,但最终安装的 third_party 项目没有 .so 文件,也没有安装本地库。