把ROS中的功能节点嵌入到C++中是很有意义的,比如用C++编写GUI界面程序,在GUI中启动node节点,以实现对系统的集成,同时便于用户操作,因为不是谁都会使用终端敲代码的方式的。
以启动autoware的runtime_manager为例,在终端启动:
roslaunch runtime_manager runtime_manager.launch
而要在C++程序中启动,首先需要包含头文件:
#include <unistd.h>
接着便可以在C++代码中通过execlp()函数启动runtime_manager节点。
//execlp函数的作用是从PATH 环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件
execlp("roslaunch", "roslaunch", "runtime_manager","runtime_manager.launch", NULL);