在cpp ros节点中使用外部类

时间:2019-05-15 10:22:21

标签: c++ ros

我的ros软件包目录中除了src之外还有一个目录,并且包含目录,其中我的类头文件和源文件是:

my_dir / my_class

  • my_class.cpp

  • my_class.hpp

我已经在src目录中的cpp中编写了一个ros节点。 我已经在该节点中创建了一个对象。我应该如何配置cmake.txt和package.xml来了解此类定义?

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

动力学ros-Ubuntu 16.04-roscpp

2 个答案:

答案 0 :(得分:2)

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

添加其他包含目录(在您的情况下为: my_dir

include_directories(
  include ${catkin_INCLUDE_DIRS} my_dir
)

这允许包含标题,例如

#include <my_class.hpp>

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

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

答案 1 :(得分:1)

如果您使用catkin_create_pkg创建了程序包,通常只需调用catkin_make来构建您的项目,则无需在package.xml中手动编写任何内容。
要查找您的程序在其他文件中定义的类,只需在您的节点中包含头文件即可,因为它确实与简单的C ++程序一样。

关于CMakeLists.txt,请参见here,最后几行将为您提供如何添加可执行文件。 CMakeLists.txt是自动生成的,并且您在其中注释了很多说明,请查看。它通过示例解释了您所需的一切,并且做得很好。

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

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

希望您能找到答案:)