ros节点:是运行计算的过程,所有的节点都包含在一张图中(rqt_graph可以查看),通过话题流,RPC服务和参数服务器彼此进行通信,1个机器人控制系统包含了许多节点,雷达,里程计等等
ros中使用节点对整个系统有着复数的好处
- 当一个节点崩溃时,系统有着额外的容错率,把崩溃了的节点与正常运行的节点隔离开
- 代码复杂度与庞大的系统相比而言大大减小了
- 执行细节被很好的隐藏了起来,节点通过接触最小的API,然后变换执行,这在其他编程语言中可以被轻松代替
(以上内容80%翻译于wiki)
所有的执行节点都有一个在图中的资源名,这些名字是每个节点特有的
rosnode info [node-name]
打印出节点信息,包括节点的订阅者和发布者
rosnode kill [node-name]
此命令不能保证执行成功,如果节点处于挂起状态,或者在roslaunch中被设置为respawn的状态,执行命令或许会失效,或许该节点会很快又会出现
rosnode kill [node-name1] [node-name2]
单次杀掉1个或者多个节点
rosnode kill -a
杀光(误
rosnode list
列出现有的节点
rosnode list /meta-pkg
列出现有节点中包含的节点,面向对象推测为元功能包
rosnode list-u
列出当前节点的XML——RPC和URL
rosnode list -a
列出所有节点的名和URL
rosnode machine [machine-name]
列出在特定机器上运行的节点
Coming soon:列出所有的机器名字,推测会在noetic后续版本推出
rosnode ping [node-name]
重复对特定节点ping的过程
rosnode ping --all
ping所有节点
rosnode ping -c num [node-name]
对特定节点进行num次的ping
rosnode cleanup
对所有的联系不上的节点进行消除,打印一份无法获取联系的,有待确定的节点
PS:只是临时解决方案(权宜之计是这个意思吗?)正常操作下不推荐运行此命令,虽然功能很强大,但有正在运行的节点解除在rosmaster注册的风险
------------------------------------分ga线-------------------------------------------------
ros的节点通过发布消息(message)
到话题(topic)
的方式进行通信,消息(message)
是一个简单的数据结构,包含典型的数据类型(int,char,string,数组,bool等)消息(message)
也允许包含任意嵌套的结构体和数组(和c的结构体很像)