问题标签 [catkin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
951 浏览

c++ - 调用其他文件未定义引用的标头中的函数

首先,我想说我对 c++ 有点缺乏经验。

我正在使用 catkin 为大学做一个项目。其中我有 3 个文件(与这个问题相关),TestCode.cppRobotInfo.cppRobotInfo.h

他们里面有以下代码:

TestCode.cpp

RobotInfo.h

RobotInfo.cpp

此外,它们都已添加到 CMakeLists.txt 中。

现在,每次我尝试运行它时,我都会收到以下错误:未定义对 `Joints::size()' 的引用,指向 TestCode.cpp 中 size() 调用的行。

如果我将 TestCode.cpp 中的包含更改为 #include"RobotInfo.cpp" 一切正常,但对我来说,这看起来像是一个肮脏的解决方案。

所以我想知道是什么导致了这个问题,我已经尝试解决这个问题几个小时,但似乎我缺乏经验真的在这个问题上伤害了我。

这也是我构建控制台时控制台输出的所有内容:

编辑:

我想通了,这对我来说是一个愚蠢的错误,我在 CMakeLists 上犯了一个错误,它没有将两个文件一起编译,特别感谢@NathaOliver 向我指出了这一点。很抱歉在这么简单的问题上浪费了您的时间。

0 投票
1 回答
2027 浏览

xml - 在 ROS 中使用 Launch 文件打开时是否可以在节点之间切换?

有两个不同的节点,一个是用 Python 编写的,另一个是用 C++ 编写的。他们基本上在做同样的事情。假设他们正在使用 viola-jones 或 hog 等不同的方法寻找香蕉。所以,他们的名字是:

节点 1:object_detector_hog_node

节点 2:object_detector_viola_node

我想分配选择哪个节点将打开的参数。有可能做这样的事情吗?

我知道在启动文件中无法使用 if 。另外,我不想打开两个节点并检查参数并杀死其中一个节点。

0 投票
0 回答
1766 浏览

c++ - Catkin/ROS C++ 库链接错误(未定义引用)

我正在尝试在我的 ROS 项目中使用CPP Redis库。在以下代码中,似乎无法正确链接到 cpp-redis:

出现以下错误:

我的 CMakeLists.txt 如下所示:

我将 CLang 编译器与称为 catkin 的ROS构建系统结合使用。

所以有一些奇怪的事情:

  • 看起来它已正确链接,因为如果我从 target_link_libraries 中删除cpp_redisand tacopie,我会得到更多未定义的引用,而我的 IDE 只会识别所有内容。

  • 方法的参数似乎有问题,因为如果我在client没有任何参数的情况下调用方法,client.commit()那么它只会编译并运行。我用于 redis 库的代码是从他们提供的示例中获得的,因此我认为它们是正确的。

我真的不知道出了什么问题,如果我尝试在没有catkin. 我希望你们能帮助我。谢谢!

0 投票
1 回答
1017 浏览

cmake - 注册。使用 CMake 将外部库链接到项目

我正在尝试使用外部库构建项目,但系统一直认为它需要使用损坏的 usr/lib 中的库。我希望改用地址中构建的库:/home/CMake-hdf5-1.8.18/build/HDF5-1.8.18-Linux/HDF_Group/HDF5/1.8.18/include。这是 CMakeLists.txt。我想要的解决方案是 #Add hdf5 库下的两行。

这是我仍然收到的错误消息:

我已经对此错误进行了研究,这是因为它仍在查看 /usr/lib,并且没有库 libhdf5.so,因为符号链接已损坏。那么如何让它查看该库的另一个地址呢?任何帮助消除此错误将不胜感激

0 投票
3 回答
597 浏览

ros - DJI Onboard-SDK ROS 安装 catkin_ws 的位置

我正在尝试使用此处的说明设置 ROS 安装:

http://developer.dji.com/onboard-sdk/documentation/sample-doc/sample-setup.html#ros-oes

具体来说,我很高兴并且成功安装和制作,直到我到达第 4 步:

这个 catkin_ws 去哪儿了?在上一步中,我们位于 ~MyUser/Onboard-SDK/build/ 但这似乎不是安装 catkin_ws 的正确位置?截至目前,我已尝试在 ~MyUser/Onboard-SDK/build/catkin_ws 的构建文件夹中安装 catkin_ws,但在第 6 步后出现错误:

错误:

然后我删除了 MyUser/ 文件夹中的所有内容并重新开始,这次我在与 OnBoard-SDK 相同的文件夹中创建了一个 catkin_ws (即 ~MyUser/catkin_with 与 MyUser/OnBoard-SDK 在同一个文件夹中),我仍然得到一个致命的第6步的错误,完全相同。找不到 tf/tf.h。嗯:/

0 投票
1 回答
191 浏览

c++ - CMake:find_package 中的项目如何破坏程序?

我的 c++ 程序出现运行时错误(互斥锁崩溃)。不是直接来自我的代码而是来自它使用的一些库的异常。我开始追查问题,发现我有一个库(giskard_core,但这没关系),其中列出了CMakeLists.txtfind_package(catkin REQUIRED COMPONENTS ... giskard_core)目前没有使用的库。评论它修复了我正在调查的崩溃。将其拉回find_package列表会使崩溃重新出现。我的代码非常简单,实际上只是一个主要功能和 ROS 应用程序的基本框架,而且肯定没有使用导致问题的库。

到底是怎么回事?find_package一个包是否会因为列在中而带来错误CMakeLists.txt

0 投票
1 回答
80 浏览

python - 是否可以运行安装脚本来下载和安装 ROS 包的所有要求?

我有一个想要分发的 ROS 包。它带来了一些无法通过 pip 或包管理器安装的依赖项。它们应该手动下载和安装。我编写了一个运行良好的安装脚本,但我希望所有进程都是自治的,换句话说,如果可能的话,我希望所有依赖项都使用 rosdep 安装。

理想的实现: - 创建一个包含必要的 CMakeLists 文件的外部包 - 运行 catkin_make 以使用我的脚本自动下载和安装库(或运行 rosdep 来安装依赖项,但我想这是不可能的)

0 投票
1 回答
751 浏览

cmake - 在 ROS 中使用 ZeroMQ 和包 zeromq_catkin - 如何包含?

我正在尝试设置一个 ROS 节点以通过 ZeroMQ 与其他操作系统进行通信(这里没有选择)。

我在ubuntu 16.04 LTS和catkin build上使用ROS Kinetic Kame(而不是catkin_make)。

幸运的是,已经有一个用于 ZeroMQ 的 Catkin-Package(一个包装器),它非常适合我:https ://github.com/ethz-asl/zeromq_catkin

但是当我尝试包含#include "zmq.hpp"也与上述软件包一起安装的 Cpp-Wrapper 时,编译器找不到头文件。

关于我做错了什么的任何想法?每个提示都受到高度赞赏。


附加信息

我的package.xml(对于我自己的节点)有:

CMakeLists.txt的有:

0 投票
1 回答
3785 浏览

c - 在 ROS 包中链接外部头文件

我正在尝试将 Kilobot 模拟器Kilombo与 ROS 包一起使用。我正在正常安装 Kilombo,然后尝试将 Kilombo 头文件包含在 ROS 包中。Kilombo 的 CMakeLists.txt 看起来像这样

我正在创建的 ROS 包的 CMakeLists.txt 如下所示:

我像往常一样包含了 Kilombo 头文件:"#include <kilombo.h>"

但是,当我运行时catkin_make,我会收到许多“未定义的引用”错误。其中一些消息是:

这些消息显示在命令之后:

两者,kilo_turn_left并且该函数set_motors在“kilolib.h”中定义,该函数本身包含在“kilombo.h”中。

如果尝试正常运行模拟而不是作为 ROS 包运行,一切正常。我尝试运行时的 Makefile 通常如下所示。我已经删除了为真实机器人而不是模拟编译的部分。

但是,当作为 ROS 包运行模拟时,我们需要定义一个 CMakeLists.txt,这是我遇到的问题。我到底做错了什么?

0 投票
1 回答
7334 浏览

cmake - ROS catkin_make:重建包

我发现我错误地将依赖项“std_msgs”命名为“std_msg”。所以我修复了!但是等等,catkin 仍然认为草坪机器人描述需要“std_msg”作为依赖项,即使我修复了依赖项:

执行 catkin_make --force-cmake 时的错误输出:

它仍然认为草坪机器人描述包需要“std_msg”。为什么这么难?修改包裹信息并更新它不可能这么复杂。

我发现有一个名为:catkin_tools clean 的包,但是为什么我必须下载一个额外的包来简单地更新我的工作区?

我努力了:

我担心 catkin clean meadowbot_description 只会删除整个包。这是我最好的选择吗?

本地的 glassbot_description cmake 文件: