roscore,可以使节点间进行通信
rosrun一次启动一个节点,启动多个节点并实现它们的通信,需要先启动roscore
roslaunch是个启动文件,其目的是一次启动多个节点(会自动启动节点管理器)
/rosout是一个特殊节点,通过/roscore自动启动,它类似于程序中的标准输出std::cout。所有节点都向话题/rosout发布消息,而这个话题由同名的/rosout节点订阅,话题的作用是用来生成各个节点的文本日志消息。(消息有组织的存放在话题里)
!!!要注意的是rosrun 命令中可执行文件的名称与节点名称并不一定相同。节点名称是在代码中命名的例如ros::init (argc, argv, "odom");而可执行文件名称是在CMakeLists.txt中命名的。但可以使用 rosrun 命令显式设置节点的名称,语法如下:rosrun package-name executable-name _ _name:=node-name 这种方法将使用 node-name 参数给出的名称覆盖节点的默认名。因为 ROS 中要求每个节点有不同的名称,因此该方法很重要尤其是移植程序中。
话题和消息
节点发布消息:发布(publish)消息到对应的一个或多个话题
节点接收消息:订阅(subscribe)一个或多个话题
节点管理器负责发布和订阅的节点间能互相找到对方,但消息不经过节点管理器,而是直接有发布节点到订阅节点
launch:启动多个文件用XML文件,文件后缀.launch