在 cpp ros 节点中使用外部 类

Using external classes in cpp ros nodes

我的ros包目录下除了src和include目录还有一个目录,其中我的class头文件和源文件是:

my_dir/my_class

我在src目录下用cpp写了一个ros节点。 我在此节点中创建了一个对象。我应该如何配置 cmake.txt 和 package.xml 以了解此 class 定义?

我只想在节点文件之外有 class 定义!

动力学 ros - ubuntu 16.04 - roscpp

如果您使用 catkin_create_pkg 创建包,通常您只需调用 catkin_make 来构建您的项目,您无需在 package.xml.[=25 中手动编写任何内容=]要在其他文件中找到您定义的 class,只需将头文件包含在您的节点中,就像简单的 C++ 程序一样。

关于 CMakeLists.txt,请参阅 here,最后几行将告诉您如何添加可执行文件。 CMakeLists.txt是自动生成的,里面注释了一大堆解释,你看看吧。它通过示例解释了您需要的一切,做得非常好。

此外,您可以查看我参考的 ros tutorials 以了解有关 ROS 的所有基础知识。

最后,你有一个比Whosebug更好的ROS问题的专业网站,它是ros answers。它是ROS用户的金矿。

希望你能找到答案:)

您不需要修改您的package.xml,但您需要修改您的CMakeLists.txt

添加额外的包含目录(在您的情况下:my_dir

include_directories(
  include ${catkin_INCLUDE_DIRS} my_dir
)

这允许包括 header 喜欢

#include <my_class.hpp>

要将源文件构建到您的节点或库中,只需将公共 src 目录替换为您的特定目录(在您的情况下:my_dir )

add_executable(your_node
  src/your_node.cpp
  my_dir/my_class.cpp
)