如何在ros环境之外包含ros msg?

How to include ros msg outside of ros environment?

我正在使用 g++ 在 ros 工作区之外使用 ros,我想包括我制作的自定义消息。通常我只会做“#include "msg_filter/my_msg.h"”,但这似乎在环境之外不起作用。我应该怎么做?

让我们深入了解正在发生的事情 low-level。如果你有一个 catkin_ws/src/my_pkg/msg/CustomMessage.msg,并且你正确编译它(你可以在 ROS 中正常使用它),你会在 catkin_ws/devel/include/my_pkg/CustomMessage.h 和 [=22] 找到它的 header 文件=] 消息文件位于 catkin_ws/devel/lib/python2.7/dist-packages/my_pkg/msg/_MyMsg.py。如果在 cmd 行或 .bashrc 中有 source catkin_ws/devel/setup.bash,您仍然可以在另一个工作区中看到它们。

但是尝试在 catkin 构建系统之外编译和使用 ROS 消息可能是不明智的 - 在这一点上,在公共 header 中创建自己的数据结构并使用它来连接库或程序(只是猜测你的用例)。 作为记录,虽然您可以使用 g++ 在 cmd 行上编译 ROS 相关的东西(headers/libs 的其余部分位于 /opt/ros/<distro>/),但我怀疑这会比更改 [=20] 更痛苦=] 或在柳絮中进行。

一种非常肮脏的方法是对 IP 流量设置陷阱。