Rosnode命令系列

编程入门 行业动态 更新时间:2024-10-06 18:25:08

Rosnode<a href=https://www.elefans.com/category/jswz/34/1771323.html style=命令系列"/>

Rosnode命令系列

Rosnode命令系列

Rosnode list

这个命令主要是列举出现如今在本项目文件下,已经正在被运行的节点。示例如下:

 

我已经运行了我编写的源文件,一个是lisener_person节点所在的sub_person.cpp文件以及talker_person节点所在的pub_person.cpp源文件。当我运行完这两个源文件之后,我在转到RosProject这个项目文件下调用rosnode list就可以列举出现在正在运行的节点了。

Rosnode kill node_name

这个命令顾名思义就是“杀死正在运行的节点,即结束该节点的运行,千万不要以为是删除该节点哈”,示例如下:

 

当我输入rosnode kill lisener_person之后,左下角这个命令窗口出现了:

 

这说明,我们成功结束了该节点的运行。但是有一点需要注意:该命令只能结束正在运行的节点,这并不意味着该节点不能在再次被启动!

Rosnode info node_name

打印本项目文件下任意节点的信息:

 

Rosnode machine device_name

 

使用这个命令可以列出指定设备上正在运行的节点名称,ROS可以应用于分布式系统中,即节点可以存在于不同的设备上,这个命令可以帮助我们获取“指定设备上正在运行的节点名称”。

Rosnode cleanup

清除无法立即联系的任何节点的注册。打印必须确认的不可达节点列表,无需带任何参数。那啥叫“不可达节点呢?”一个节点一旦被认定成为“不可达节点”说明这个节点没有与其搭配完成指定任务的节点,例如:在服务通信中只有一对“服务端节点和客户端节点”才能完成服务通信这个功能,但是只有服务端节点或者只有客户端节点,这根本没法完成通信,就好比“你在这里喊破了嗓子那边也没有人回应你”。这种单个节点或者不完整的节点就叫做“不可达节点”。

操作如下:

 

但是这样做确实可以去掉一些现在还没有用的节点,但是这些节点现在没有用不代表以后没有用,也就是说你现在把XXX节点清除了,但是人家一会还得用XXX节点呢,例如:

 

我先启动一下服务通信模式下的客户端,现在客户端正在等待服务端的启动,但是如果我们此时调用rosnode cleanup命令呢?就会出现如下情况:

 

Rosnode cleanup打印出了我们所需要的“不可达节点名单(就是):cli_object1”,由于只有客户端节点没有服务端节点可用,因此cli_object1被认为是“不可达节点”,调用命令后紧接着系统就询问我们“是否需要清楚这个不可达节点”。但是问题又来了:我又没说我服务端的节点不启动,我可能待会启动,但是你这一个指令把客户端节点清除了,那我在调用服务端节点时谁给我回应呢?你这一个cleanup直接把服务通信的两个节点都整残废了,因此这个命令一般建议使用。

Rosnode ping node_name

我们在通信中一听”ping”这个单词就想到“双方连接建立成功”,这个指令顾名思义其功能就是“测试某个节点是否可以与相同topic的另一个节点实现通信,这个简单的验证了一个节点是否可以完成与另一个接待你的可能性”。操作如下:

 

当我们调用指令之后,系统反馈给我们两个节点实时响应的日志信息,只要可以出现如上图所示的通信日志,就说明系统中存在可以与“你测试的这个名为node_name的节点”建立通信的节点。

更多推荐

Rosnode命令系列

本文发布于:2024-03-09 03:15:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1723578.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:命令   系列   Rosnode

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!