ROS Indigo beginner_Tutorials-06 ROS节点

我使用的虚拟机软件:VMware Workstation 11

使用的Ubuntu系统:Ubuntu 14.04.4 LTS

ROS 版本:ROS Indigo

一. 理解ROS 节点:

ROS的节点: 可以说是一个可运行的程序。当然这个程序可不简单。因为它可以接受来自ROS网络上其他可运行程序的输出信息,也可以发送信息给ROS网络,被其他 ROS 可运行程序 接收。所以虽然你看ROS它是在执行好多个程序,但是它们可是相互关联的,是一个网络。所以 Willow Garage 公司管这种可运行的程序叫做: 节点

二. 运行ros节点的大前提:

运行ros节点的大前提就是启动roscore (它是运行所有ROS程序前 首先要运行的命令) 。新开一个终端(Ctrl+Alt+T):

roscore 命令执行完之后,它也会产生一个节点,这个节点是主节点,叫:/rosout

三. 查看当前运行的 ROS 节点

现在你可以重新打开一个终端(Ctrl+Alt+T)去运行你要运行的ROS节点程序了:

我们先来看一下,当前有什么节点在运行:重新开一个终端,执行 rosnode list命令 就可以罗列出当前运行的所有ROS节点:

roscore命令 启动的就是 rosout 节点)

如果我们想看一下 某个节点里面的具体的信息,要怎么做:

$ rosnode info /rosout

没错,现在你也不知道这些信息有什么用处,你现在不知道没有关系,等用到时,我再介绍。

四. 举个例子,运行一个节点:

下面来具体运行一个 ros节点 程序,使用什么命令运行它 呢? 答案: rosrun 命令。

比如: 运行一个 ROS 里的例子程序: (这个例子是开一个窗口,窗口里面有一只小海龟。我仅仅只是想举一个例子来让大家直观的看看ROS节点是个什么东西。)

$ rosrun turtlesim turtlesim_node

输出下面信息,并弹出一个TurtleSim窗口,如下图所示。

[ INFO] [1472484820.593688966]: Starting turtlesim with node name /turtlesim
[ INFO] [1472484820.599420738]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]

看到了吗,这就是 ros 节点。

现在看一下这个 rosrun 命令的使用格式:


# rosrun [package_name] [node_name]

其中:package_name是程序包名;node_name是ros节点的可执行程序的名字。

我们重新开个终端(Ctrl+Alt+T),执行 rosnode list 命令,再来看现在有哪些节点在运行:

/rosout
/turtlesim

五. 自定义节点的名字:

如果你不喜欢这些默认生成的ROS节点名(/rosout /turtlesim). 你可以使用下面的方法改写它 ros节点的名称: (再新开一个终端)

$ rosrun turtlesim turtlesim_node __name:=my_turtle

参数 __name 后面跟的就是你自定义的名字。

再来看看当前运作的ros节点有哪些: (再新开一个终端)

六. ping一个ROS节点

你看ROS它是在执行好多个程序,但是它们可是相互关联的,是一个网络。所以我们可以ping任何一个节点。

rosnode ping /my_turtle


小小总结:

我上面说了,ROS中的每个节点都可以将一些数据发布到ROS网络上(这个过程叫做:发布话题)。并且ROS的每个节点都可以在这个网络总线上接收自己想要的数据(这个过程叫订阅话题, 就像是你订阅一刊杂志一样)。

所以下一讲,就讲: ROS 发布话题 和 订阅话题:

最新文章

  1. Linux 命令与文件的搜寻
  2. window、document、html、body、element的事件属性比较
  3. QTP基础学习(二)启动与设置
  4. mysql (master/slave)复制原理及配置
  5. DC-EPC小结
  6. Sublime Text使用心得(一)
  7. xcode5 自定义模板
  8. AspectJ给类的属性打桩,进行替换。
  9. struts2相关简单介绍
  10. 史上最强学生管理系统之ArrayList版
  11. SpringMVC 如何在页面中获取到ModelAndView绑定的值
  12. Vue自定义插件方法大全
  13. MySQL8.0
  14. add web server(nginx)
  15. Java Deadlock Example and How to analyze deadlock situation
  16. python enum 枚举
  17. shell执行字符串中的命令
  18. springmvc IDEA
  19. Python 序列与映射的解包操作
  20. h5的classList对象

热门文章

  1. RabbitMQ学习系列三:.net 环境下 C#代码订阅 RabbitMQ 消息并处理
  2. 二叉排序树的应用(java)
  3. 剑指offer--14.求1+2+3+...+n
  4. nyoj-655-光棍的yy(大斐波那契数列)
  5. 整理下PC和移动获取点击、移动坐标的代码和坑
  6. Effective Python之编写高质量Python代码的59个有效方法
  7. Dubbo模块介绍
  8. Azure VNet介绍
  9. winrm service
  10. 并集(union和union all的区别)、交集、差集、全连接