理解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 ...
随机推荐
- 【数据库】SQL优化方法汇总
最近在研究SQL语句的优化问题. 下面是从网上搜集的,有的地方有点老了,可是还是有很多可以借鉴的地方的. 如何加快查询速度? 1.升级硬件. 2.根据查询条件,建立索引,优化索引.优化访问方式,限制结 ...
- Android API Level在11前后及16之后时Notification的不同用法
作为刚入门Android的小白,最近在按照郭大神的<第一行代码>在练习,在用到Notification时遇到了一些问题,网上资料比较零散,我这里做了一个总结分析给各位,若有错误,恳请指正~ ...
- R 语言学习笔记
data() 调用内置数据集 help(women) 查看数据集women的帮助文档 当忘记函数名称时可以按关键字搜索:help.search(),简写为??“” str(var) 查看R对象内部结 ...
- JS 精粹( 函数)
函数是对象,它与其它对象唯一的不同是它可以调用.函数可实现:代码复用.信息隐藏.代码组合调用. 建立函数时会建立:上下文.调用函数的代码.每个函数(除Function.prototype)都会有一个原 ...
- 6.828 lab1 bootload
MIT6.828 lab1地址:http://pdos.csail.mit.edu/6.828/2014/labs/lab1/ 第一个练习,主要是让我们熟悉汇编,嗯,没什么好说的. Part 1: P ...
- Properties读写资源文件
Java中读写资源文件最重要的类是Properties,功能大致如下: 1. 读写Properties文件 2. 读写XML文件 3. 不仅可以读写上述两类文件,还可以读写其它格式文件如txt等,只要 ...
- Mysql表锁定解决
#查看进程SELECT *FROM information_schema.processlistWHERE USER = 'root' AND state LIKE 'Waiting%';#杀掉进程K ...
- 获取checkbox 的选中状态的id、checkbox的一些操作
var id_array=new Array(); $('input[name="id"]:checked').each(function(){ id_array.push($(t ...
- MongoDB(二)
通过程序来操作数据库: //链接字符串 string connectionString = "mongodb://192.168.1.107"; //数据库名 string dat ...
- 柯南君:看大数据时代下的IT架构(4)消息队列之RabbitMQ--案例(Helloword起航)
柯南君:看大数据时代下的IT架构(4)消息队列之RabbitMQ--案例(Helloword起航) 二.起航 本章节,柯南君将从几个层面,用官网例子讲解一下RabbitMQ的实操经典程序案例,让大家重 ...