可以在catkin工作区外创建ROS节点吗?

时间:2018-05-14 06:38:48

标签: ros catkin

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

2 个答案:

答案 0 :(得分: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将替换为您在代码中使用的任何消息。您可能会在某处找到这些文件,或者您可以通过搜索在线获取文件的源代码。

答案 1 :(得分:0)

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

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

在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_MASTER_URI这样的ros环境变量。

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