ROS节点

首先是一些基本概念,这里只是先列出来。统一理解。

Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。

Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。

Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。

Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。

rosout: ROS中相当于stdout/stderr。

roscore: 主机+ rosout + 参数服务器 (参数服务器会在后面介绍)。


这一次主要考虑节点

ROS节点可以使用ROS客户库与其他节点通信。节点可以发布或接收一个话题。节点也可以提供或使用某种服务,节点是一个能执行特定工作任 务的工作单元,并且能够相互通信,从而实现一个机器人系统整体的功能。比如我们可以把遥控器和机器人简单定义为两个节点,实际上在机器人中根据控制器、传感器、执行机构等不同组成模块,还可以将其进一步细分为更多的节点。

 

客户端库

ROS客户端库允许使用不同编程语言编写的节点之间互相通信:

  • rospy = python 客户端库
  • roscpp = c++ 客户端库

首先必须执行roscore

rosnode list可以查看当前有多少个node,

 rosout。因为这个节点用于收集和记录节点调试输出信息,所以它总是在运行的。

rosnode info /rosout 用于查看node的信息

ROS节点

rosrun 允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径)。

可以使用

$ rosrun turtlesim turtlesim_node __name:=my_turtle 其中后面__name 可以重新指定节点的名字

如果使用ctrl+c终止 turtlesim,那么再次用rosnode list的时候,还是有,可以用rosnode cleanup清除。

还可以通过另一个终端去ping这个节点。

rosnode ping my_turtle

ROS节点