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的节点”建立通信的节点。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肥肥胖胖是太阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值