文章只是个人学习过程中学习笔记,主要参考ROS教程1。
1、概念
节点(Nodes):节点是一个可执行文件,它可以通过ROS来与其他节点进行通信。
节点管理器(Master):ROS的命名服务,例如帮助节点发现彼此。
2、Nodes
一个节点(Node)实际上只不过是ROS软件包中的一个可执行文件(C++编译生成的可执行文件、python脚本),可执行文件在运行之后就成了一个进程(process),这个进程在ROS中就叫做节点。。ROS节点使用ROS客户端库与其他节点通信。节点可以发布或订阅话题,也可以提供或使用服务。一个ROS控制系统包含许多节点,例如无人车,一个节点(Node)控制无人车的车轮电机、一个节点(Node)通过惯导获取定位信息、一个节点(Node)通过摄像头获取图像信息、一个节点(Node)融合各种信息执行路径规划等等。
ROS客户端库可以让用不同语言编写的节点进行相互通信:
- roscpp = C++客户端
- rospy = python客户端
3、Master
机器人是一种组件众多、功能庞大、高度复杂的系统性实现。在实际的应用中,机器人可能集成激光雷达、惯导、毫米波雷达、摄像头、GPS等各种传感器以及运动控制器件,负责感知、控制、决策和计算等功能,每一项功能点都是一个单独的节点(Nodes)。那么如何去管理、分配、控制这些节点呢?这就用到ROS Master,它为ROS系统中的其余节点提供命名和注册服务。Master的作用是使各个ROS节点(Nodes)之间能够相互定位,然后才能进行点对点通信。
4、rosnode
rosnode
是用于显示有关ROS节点信息的命令行工具。命令有:
命令 | 功能 |
---|---|
rosnode ping | 测试与节点的连接 |
rosnode list | 列出活动的节点 |
rosnode info | 打印关于节点的信息 |
rosnode machine | 列出指定设备上的节点 |
rosnode kill | 杀死一个正在运行的节点 |
rosnode cleanup | 清除不可连接的节点 |
在使用ctrl+C停止节点时,该节点并没有彻底清除,可以使用
rosnode cleanup
清除节点。
5、 实例测试
#步骤1:(ROS首要操作)运行roscore
命令, 启动 master, master负责 ros 的节点注册, 参数服务器, 话题通信管理等等。
#步骤2:运行rosnode
相关命令。
/rosout
这个节点,是用于收集和记录节点的调试输出,该节点总是运行。
ROS.otg. ROS教程[EB/OL]. 2020-12-22[2022-7-5].
http://wiki.ros.org/cn/ROS/Tutorials. ↩︎