构建ROS的包时,OpenCV函数是未定义的,如何在catkin build中添加`pkg-config opencv --cflags --libs`?

时间:2018-03-20 17:12:16

标签: opencv cmake ros

我在使用require(tidyverse) #> Loading required package: tidyverse mylist <- lst(cars, diamonds) mylist %>% pluck("cars") %>% typeof #> [1] "list" mylist %>% pluck("cars") %>% as.tibble() %>% typeof #> [1] "list" mylist %>% pluck("cars")[1] #> Error in .[pluck("cars"), 1]: incorrect number of dimensions mylist %>% pluck("cars")[[1]] #> Error in .[[pluck("cars"), 1]]: incorrect number of subscripts mylist %>% pluck("cars") %>% unlist() %>% typeof #> [1] "double" mylist %>% pluck("cars") %>% unnest() %>% typeof #> [1] "list" mylist %>% pluck("cars") %>% flatten %>% typeof #> [1] "list" 使OpenCV-3.1.0(直接)工作时遇到了一些问题。我正在尝试构建TIAGo Simulation的工作区,但是我收到了错误。

当我使用g ++和flags构建测试文件(包含opencv函数)时,我没有遇到任何问题:

catkin build

如果我不使用旗帜,我会收到错误:

g++ -o test test.cpp ´pkg-config opencv --cflags --libs´

输出:

g++ -o test test.cpp

在构建使用catkin构建时使用OpenCV的TIAGo Simulation工作区时,情况也是如此。

尝试构建TIAGo模拟:

test.cpp:(.text+0x3e): undefined reference to `cv::imread(cv::String const&, int)'

输出(其中一个错误):

catkin build

因为错误非常相似,我认为可以通过将look_to_point.cpp:(.text+0xa6): undefined reference to `cv::imshow(cv::String const&, cv::_InputArray const&)' 添加到´pkg-config opencv --cflags --libs´来解决。因为我对ROS,catkin和CMake都没有经验,所以我不知道如何实现这一目标。 如果有人想指出我正确的方向,我将非常感激。

2 个答案:

答案 0 :(得分:0)

最好使用CMake为ROS构建软件包(即使你有单个源文件),最简单的方法就是命令catkin_create_package(你的ROS可能会有所不同) Distro)并添加命令生成的CMakeList.txtPackage.xml中的所有库(几乎所有内容都在开头注释掉),以便稍后在ROS环境中找到并使用它。< / p>

此处链接至ROS Wiki Page For Catkin

这是我用过的一个例子然后当我对Catkin的经验较少In Github

答案 1 :(得分:0)

最终证明是OpenCV版本问题。

在我发现这是一个版本问题之前,我尝试将OpenCV库添加到每个需要它的包中,方法是在每个CMakeList.txt(有多个包)中编写它。