1

我想在 catkin 工作区之外创建一个 ROS 发布者节点。可以创建吗?

4

2 回答 2

3

当然可以。像对待任何其他 cpp 库或 python 包一样对待 ROS。

在 python 中,你必须保持PYTHONPATH环境变量指向 ros 包/opt/ros/kinetic/lib/python2.7/dist-packages

在 cpp 中,您必须告诉编译器在哪里查找包含 ( /opt/ros/kinetic/include)、库 ( /opt/ros/kinetic/lib) 以及要导入的库。对于最简单的应用程序-lroscpp -lrostime -lrosconsole应该足够了。前任:

g++ node.cpp -o node -I/opt/ros/kinetic/include -L/opt/ros/kinetic/lib -lroscpp -lrostime -lrosconsole

请记住,您仍然需要 ros 环境变量,例如ROS_MASTER_URI.

但是,我不知道是否有一种简单的方法可以在不使用catkin_make和 cmake 文件的情况下生成自定义 ros 消息。

于 2018-05-28T22:02:18.333 回答
0

是的,在 Python 中,您可以在 catkin 工作区之外编写 ROS 节点。

启动你roscore的 Python 脚本,然后在一个新的终端中python filename运行它,就像你把它放在你的 catkin 工作区中并构建和获取它一样。

我已经成功创建了订阅者和发布者节点,并在实际的 TurtleBot2 上运行它们,而节点不在 catkin 工作空间内。

我认为我描述的方法不适用于 C++。它仅适用于 Python。在 C++ 中,您必须在编译时链接库。所以,检查一下。例如,我们执行 g++ filename.cpp -lm,其中 -lm 链接要在 filename.cpp 中使用的数学库,因此您可能需要检查如何执行此操作。另一方面,将文件添加到你的 catkin 工作区或者只是转移到 Python 会更容易。

您必须包含 ros/ros.h 和 std_msgs/message_name.h ,其中 message_name 将替换为您在代码中使用的任何消息。您可能会在某处找到这些文件,或者您可以通过搜索在线获取文件的源代码。

于 2018-05-14T14:10:24.253 回答