无法使用 OpenCV 创建 ROS2 debian 包

问题描述 投票:0回答:1

我有一个

ROS2
软件包,它正在使用
OpenCV 4.7.0
,它是从源代码安装的。 我可以使用
colcon-build --symlink-install
构建包,也可以使用
colcon-test
对其进行测试。找到正确的opencv版本,是
4.7.0
。但是当我使用
bloom-generate rosdebian...
创建 .deb 数据包时,它找不到
OpenCV 4.7.0
,而是找到对
OpenCV 4.5.4
的引用。这是版本之间的冲突,因此不会创建
.deb
数据包。如何让
bloom-generate rosdebian
找到正确的版本?

我不明白为什么构建和测试可以找到

CMakeLists.txt
中提到的正确版本,但不能找到
bloom-generate

注:

  1. OpenCV 4.5.4 一切运行良好,因为我是从源代码构建的,也可能是因为 4.5.4 附带带有“libopencv-dev”数据包的 Ubuntu 22.04。

  2. 我只是更改了版本号,其他都一样。

  3. 我在本地计算机上工作时任何版本都没有任何问题,但这仅发生在 docker 容器内的 Git CD/CI 管道中,该容器与我的本地计算机具有相同的配置。

谢谢你。

c++ opencv cmake debian ros
1个回答
0
投票

bloom
使用 rosdep 规则来解析包,因为它只关心发布到 ROS Build Farm。
bloom
本身不会创建DEB/RPM文件,它只创建触发构建农场的发布文件,该构建农场使用GBP来构建DEB文件。

通常建议不要使用自定义版本的软件包。特别是如果您正在制作一个可普遍分发的 DEB。

但如果您仍然想这样做,您可以选择将 ROS Build Farm 托管在基于 Ubuntu 的容器上,并通过 PPA 安装 OpenCV 4.7.0。我找不到任何此类 PPA,因此这可能不是最佳选择。也许您可以尝试提供安装了 OpenCV 4.7.0 的本地 APT 存储库(希望它不会破坏任何其他软件包)。但是,无论您在哪里安装它,您都必须使用相同的存储库(如果 OpenCV 是运行时依赖项)。也许您可以在本地存储库中创建一个名为

opencv-4.7.0
的新包。

另一个选项是创建自定义 rosdep 规则,例如

10-opencv.list
/etc/ros/rosdep/sources.list.d
。我知道它支持
pip
包,这适用于
python3-opnecv
。我不确定您是否可以使用那里的
git
版本的软件包。

根据这个

answer
,有一个名为
ament_virtualenv
(基于catkin_virtualenv)的包为此目的构建,但最后一个版本是针对ROS 2:Dashing。


colcon build
使用OpenCV 4.7.0的原因可能是因为您在
--ignore-src
中使用了
rosdep install
,因此它没有进一步解析为
rosdistro
版本的依赖项。

  1. 在本地计算机上工作时,任何版本都没有任何问题,但这仅发生在 docker 容器内的 Git CD/CI 管道中,该容器与我的本地计算机具有相同的配置。

我不确定

bloom
是如何在您的本地计算机上获得 4.7.0 的。也许您指的是
colcon build

© www.soinside.com 2019 - 2024. All rights reserved.