ROS学习(三)了解ROS节点

ROS学习(三)了解ROS节点

一、概念概述

节点(Nodes):节点是使用ROS与其他节点通信的可执行文件。

消息(Messages):订阅或发布主题(topic)时使用的ROS数据类型。

主题(Topic):节点可以将消息发布到主题,也可以订阅主题以接收消息。

节点管理器(Master):ROS的名称服务(即帮助节点相互查找)

rosout:等效于stdout / stderr的ROS

roscore:Master + rosout +参数服务器(参数服务器将在以后介绍)

二、节点数

节点实际上只不过是ROS包中的可执行文件而已。ROS节点使用ROS客户端库与其他节点进行通信。节点可以发布或订阅主题。节点也可以提供或使用服务。

三、客户图书馆(Client Libraries)

ROS客户端库允许使用不同编程语言编写的节点进行通信:

  • rospy = python客户端库
  • roscpp=C++客户端

四、roscore

roscore是使用ROS时应该运行的第一件事。
运行:

$ roscore

你会看到类似的内容:

... logging to ~/.ros/log/9cf88ce4-b14d-11df-8a75-00251148e8cf/roslaunch-machine_name-13039.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://machine_name:33919/
ros_comm version 1.4.7

SUMMARY
======

PARAMETERS
 * /rosversion
 * /rosdistro

NODES

auto-starting new master
process[master]: started with pid [13054]
ROS_MASTER_URI=http://machine_name:11311/

setting /run_id to 9cf88ce4-b14d-11df-8a75-00251148e8cf
process[rosout-1]: started with pid [13067]
started core service [/rosout]

五、使用rosnode

打开一个新的终端,让我们使用rosnode来查看运行roscore所做的。请记住,通过打开新选项卡或将其最小化来保持前一个终端处于打开状态。
rosnode 显示有关当前正在运行的ROS节点的信息。该***rosnode list*** 命令列出了这些活动节点:

$ rosnode list

你将会看到:

/rosout

这向我们显示只有一个节点在运行:rosout。它在收集并记录节点的调试输出时始终处于运行状态。

该***rosnode info*** 命令返回有关特定节点的信息。

$ rosnode info /rosout

这给了我们更多关于rosout的信息,例如它发布了***/ rosout_agg***

ROS学习(三)了解ROS节点_第1张图片

六、使用rosrun

rosrun 允许您使用功能包名称直接运行功能包内的节点(而不必知道程序包路径)。
用法:

$ rosrun [功能包名称] [节点名称]

现在,我们可以运行turtlesim功能包中的turtlesim_node节点。

然后,在新的终端中(确保roscore要还在运行):

$ rosrun turtlesim turtlesim_node

你将会看到:
ROS学习(三)了解ROS节点_第2张图片
注意:在您的turtlesim窗口中,乌龟看起来可能有所不同。
新终端中

$ rosnode list

你会看到:
ROS学习(三)了解ROS节点_第3张图片
ROS的一项强大功能是您可以从命令行重新分配名称。

关闭turtlesim窗口以停止该节点(或返回rosrun turtlesim终端并使用ctrl-C)。现在让我们重新运行它,但是这次使用“重映射参数”更改节点的名称:

$ rosrun turtlesim turtlesim_node __name:=my_turtle

现在,如果我们返回并使用rosnode list:
你会看到:

/my_turtle
/rosout

我们看到了新的/ my_turtle节点。让我们使用另一个rosnode命令ping来测试它是否启动:

$ rosnode ping my_turtle

ROS学习(三)了解ROS节点_第4张图片

你可能感兴趣的:(ROS)