【问题标题】:Using external classes in cpp ros nodes在 cpp ros 节点中使用外部类
【发布时间】:2019-05-15 10:22:21
【问题描述】:

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

my_dir/my_class

  • my_class.cpp

  • my_class.hpp

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

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

动力学 ros - ubuntu 16.04 - roscpp

【问题讨论】:

    标签: c++ ros


    【解决方案1】:

    您不需要修改您的 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
    )
    

    【讨论】:

      【解决方案2】:

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

      关于 CMakeLists.txt,请参阅here,最后几行将告诉您如何添加可执行文件。 CMakeLists.txt 是自动生成的,里面有很多解释,检查一下。它通过示例解释了您需要的一切,做得很好。

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

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

      希望你能找到答案:)

      【讨论】:

        猜你喜欢
        • 2016-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多