理解ROS的节点(NODE)
经过前面的学习,我们已经知道了如何构建一个ROS的包,这篇博客将介绍ROS中的节点的概念。
在继续之前,请按ctrl+alt+t打开一个终端,在里面输入:
sudo apt-get install ros-<distro>-ros-tutorials
安装一个轻量级的模拟器,命令中的"<distro>"需要替换为你自己的ros版本,若按照前面的教程的话,替换为hydro。
下面来看一下ROS中图的相关概念:
节点(NODE):一个节点就是一个可执行程序,它使用ROS可以和其他节点进行通信。
消息(Message):当在一个话题上,发布或订阅时所使用的ROS的数据类型。
话题(Topic):节点可以在一个话题上发布消息,同样也可以订阅一个话题来接收消息。
主机(Master):是ROS的名字服务器。
ROS的客户端库允许用不同的编程语言编写的节点之间相互通信。
roscore是你在使用ros之前应该首先运行的程序。在终端中运行roscore:
roscore
rosnode命令显示了正在运行的ros的节点的信息。如下命令列出了活跃的ros节点,新打开一个终端输入:
rosnode list
你将会看到:
/rosout
这说明了当前只有一个节点rosout在运行。
下面的这个命令可以返回活跃的节点的信息:
rosnode info /rosout
rosrun允许你直接运行一个包里面的节点。使用方法如下:
rosrun [package_name] [node_name]
在终端中输入:
rosrun turtlesim turtlesim_node
将会看到在屏幕上出现了一只乌龟。这个命令的作用是运行turtlesim包下面的turtlesim_node节点,多次运行这个命令可能会看到不同的乌龟,这算不算是一个惊喜呢。
新打开一个终端,在里面输入:
rosnode list
可以看到我们刚刚运行的节点,出现在了列表中。
我们还可以在命令行下给运行的节点直接指定名字,将刚刚打开的乌龟关闭。Close the turtlesim window to stop the node (or go back to the rosrun turtlesim terminal and use ctrl-C)。重新运行刚才的节点输入:
$ rosrun turtlesim turtlesim_node __name:=my_turtle
这时我们再次查看运行的节点:
rosnode list
显示的结果:
/rosout
/my_turtle
如果这时还能看到/turtlesim这个节点,那么可能的原因就是你是在terminal中用ctrl+c关闭的,而不是关掉窗口的。还有可能是环境变量$ROS_HOSTNAME的配置不正确。
下面学习另一个rosnode的命令:ping
$ rosnode ping my_turtle
返回的结果是:
rosnode: node is [/my_turtle]
pinging /my_turtle with a timeout of .0s
xmlrpc reply from http://aqy:42235/ time=1.152992ms
xmlrpc reply from http://aqy:42235/ time=1.120090ms
xmlrpc reply from http://aqy:42235/ time=1.700878ms
xmlrpc reply from http://aqy:42235/ time=1.127958ms
上面的这条指令执行后,跟网络的ping是一样的,也就是说我们的客户端是可以和这个node相互通讯的,只不过他们的通讯方式是利用xmlrpc。
总结:
这节学到的基本就是rosnode的相关概念和对应的命令行工具。roscore,rosnode,rosrun
理解ROS的节点(NODE)的更多相关文章
- 理解ROS的参数
记住每次操作之前都要在一个单独的终端中运行ros的核心. roscore rosparam命令允许你在ROS的参数服务器上操作和存储数据,参数服务器可以存储整数,浮点数,布尔类型,字典,列表.ROS使 ...
- 理解ROS话题
首先需要打开一个终端在里面运行roscore: roscore 再打开一个终端,在里面运行一个turtlesim_node节点: rosrun turtlesim turtlesim_node 打开另 ...
- ROS知识(2)----理解ROS系统结构
学习新事物,方法高于技术本身,如果没有把握"BIG PICTURE"的话很难理解进去.通过以下几点进行理解ROS: ROS实际上不是操作系统,他只是一个通信的框架,一个代码管理的架 ...
- (六)ROS话题---节点之间通信的方式
1. 理解 ROS 话题: (Ctrl+Alt+T 打开一个新终端) 运行下面的命令: $ roscore (Ctrl+Alt+T 打开一个新终端) $ rosrun turtlesim turtle ...
- 理解ros话题--6
理解ROS话题(原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/) Description: 本教程介绍ROS话题(topics)以及如何使用ro ...
- Cocos2d-x 3.0final 终结者系列教程07-画图节点Node
在Cocos2d-x中全部能看到的都是引擎调用底层图形库函数绘制完毕的. Cocos2d-x将屏幕全部要绘制的全部内容逻辑上保存到一个场景Scene中(尺寸通常会和屏幕大小一致) 而在Scene中又包 ...
- 由浅到深理解ROS(2)
ROS文件系统 用户可以直接参看官网:http://wiki.ros.org/ROS/Tutorials/NavigatingTheFilesystem ROS文件系统中的两个最基本的概念:Packa ...
- 由浅到深理解ROS(1)
ROS机器人操作系统 ( Robot Operating System 或简称 ROS),可以帮助提高机器人软件的开发效率.ROS能够提供类似传统操作系统的诸多功能,如硬件抽象.底层设备控制.常用功能 ...
- ROS向节点传递参数
ROS的节点有很多中调用方式,包括rosrun,launch,直接运行等,向节点内传递参数的方式也有很多. 1. rosrun + 参数服务器传递 ros::init(argc, argv, &quo ...
随机推荐
- 产品专家Marty Cagan:不做仅仅会编码的人
Marty Cagan是享有世界声誉的产品管理专家,曾担任Netscape副总裁.eBay产品管理及设计高级副总裁. 近日,记者在"PM-China首届产品经理高峰论坛"上对他做了 ...
- OAuthBase.cs
using System; using System.Security.Cryptography; using System.Collections.Generic; using System.Tex ...
- 使用Cloudsim实现基于多维QoS的资源调度算法之中的一个:配置Cloudsim环境
Cloudsim是一款开源的云计算仿真软件,它继承了网格计算仿真软件Gridsim的编程模型,支持云计算的研究和开发.它是一个自足的支持数据中心.服务代理人.调度和分配策略的平台,支持大型云计算的基础 ...
- java生成指定范围的随机数
要生成在[min,max]之间的随机整数, import java.util.Random; public class RandomTest { public static void main(Str ...
- SQL 字段里有逗号隔开的数据的取值
table 1 : id code1 0012 001,0023 001,002,003 table 2:code name001 数学002 体育003 美术 要求结果 id name1 数学2 数 ...
- Python核心编程读笔 5: python的序列
第六章 序列:字符串.列表.元组 一.序列 (1)序列类型操作符 seq[ind] 获得下标为 ind 的元素 seq[ind1:ind2] 切片操作 seq * expr 序列重复 expr 次 s ...
- EC读书笔记系列之3:条款5、条款6、条款7
条款5:了解C++默默编写并调用哪些函数 记住: ★编译器可以(仅仅是可以,并非必须,仅当程序中有这样的用法时才会这么做!!!)暗自为class创建default构造函数,copy构造函数,copy ...
- poj 1149 pigs ---- 最大流
题意以及分析:http://ycool.com/post/zhhrrm6#rule3 主要是建图,简化图,然后在套最大流的模板. #include <iostream> #include& ...
- 将 子集和问题 运行时间从 200.8s 优化到 0.4s
在过去24小时里,一直被这题折腾着... 题目: A Math gameTime Limit: 2000/1000MS (Java/Others) Memory Limit: 256000/12800 ...
- Linux系统管理员不可不知的命令:sudo
对Linux系统管理员或高级用户而言,sudo是必不可少的最重要的命令之一.当我们想要运行重要任务时,sudo提供了安全的提升权限.请耐心读本文,看看sudo能为你做些什么. sudo是个统管一切的命 ...