ROS学习笔记8(理解 ROS节点)

图概念的快速概述

  • 节点:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。

  • 消息:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。

  • 话题:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。

  • Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。

  • rosout:ROS中相当于stdout/stderr。

  • roscore:主机+ rosout + 参数服务器 (参数服务器会在后面介绍)。

节点

节点实际上只不过是ROS包中的可执行文件。

ROS节点使用ROS客户端库与其他节点通信。

节点可以发布或订阅主题。

节点还可以提供或使用服务。

客户端库

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

  • rospy = python客户端库

  • roscpp = c ++客户端库

roscore

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

请运行:

$ roscore

你会看到类似的东西:

如果roscore未初始化,则可能存在网络配置问题。请参见网络设置 - 单机配置

如果 roscore 不能初始化并提示缺少权限,这可能是因为~/.ros文件夹

归属于root用户(只有root用户才能访问),修改该文件夹的用户归属关系:

$ sudo chown -R <your_username>〜/ .ros

使用rosnode

打开一个新的终端,让我们用rosnode来看看正在运行的roscore做了什么

注意:打开新终端时,您的环境将被重置,并且您的〜/ .bashrc文件将被配置。(应该是被source)

如果您在运行rosnode等命令时遇到问题,则可能需要在〜/ .bashrc中添加一些环境设置文件或手动重新配置它们。

rosnode 显示当前运行的ROS节点信息。rosnode list 指令列出活跃的节点:

$ rosnode list

你会看见:

这表示当前只有一个节点在运行: rosout

因为这个节点用于收集和记录节点调试输出信息,所以它总是在运行的。

rosnode info 命令返回的是关于一个特定节点的信息。

$ rosnode info /rosout

这给了我们一些关于rosout的更多信息,例如它发布/ rosout_agg这一事实。

现在,让我们看看更多的节点。为此,我们将使用rosrun来启动另一个节点。

使用rosrun

rosrun 允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径)。

用法:

$ rosrun [package_name] [node_name]

所以现在我们可以在turtlesim包中运行turtlesim_node。

然后,在一个新的终端

$ rosrun turtlesim turtlesim_node

你会看到turtlesim窗口:

注意:您的乌龟窗口中的乌龟可能看起来不同。不要担心 - 有很多类型的龟,你的是一个惊喜!

在一个新的终端

$ rosnode list

你会看到类似的东西:

ROS的一个强大功能是您可以从命令行重新分配名称。

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

$ rosrun turtlesim turtlesim_node __name:= my_turtle

现在,如果我们回去使用rosnode列表:

$ rosnode list

你会看到类似的东西:

注意:如果您仍然在列表中看到/ turtlesim,则可能意味着您使用ctrl-C而不是关闭窗口来停止终端中的节点,或者您没有按照网络中的描述定义$ ROS_HOSTNAME环境变量设置 - 单机配置

您可以尝试使用以下方法清除rosnode列表:$ rosnode cleanup

我们看到了new / my_turtle节点。让我们使用另一个rosnode命令ping来测试它是否正常:

$ rosnode ping my_turtle

可以看到:

回顾:

涵盖的内容:

  • roscore = ros + core:master(提供ROS的名称服务)+ rosout(stdout / stderr)+参数服务器(参数服务器将在后面介绍)

  • rosnode = ros + node:ROS工具,用于获取有关节点的信息。

  • rosrun = ros + run:从给定包中运行一个节点。

猜你喜欢

转载自blog.csdn.net/qq_27806947/article/details/82155145