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的信息
rosrun 允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径)。
可以使用
$ rosrun turtlesim turtlesim_node __name:=my_turtle 其中后面__name 可以重新指定节点的名字
如果使用ctrl+c终止 turtlesim,那么再次用rosnode list的时候,还是有,可以用rosnode cleanup清除。
还可以通过另一个终端去ping这个节点。
rosnode ping my_turtle