Understanding ROS Nodes
Last updated
Last updated
/ /
描述:本文介绍ROS图形概念,并讨论了命令行工具 , , 和 的使用。
下一节:
安装ros-tutorials
元功能包,使用以下命令:
Replace <distro>
with the name of your ROS distribution (e.g. indigo, jade, kinetic, noetic)
: 使用ROS与其他节点通信的可执行程序。
: ROS中订阅或发布一个话题时使用的数据类型。
: 节点通过话题发布数据(Messages),通过订阅话题接受数据(Messages)。
: ROS的 Name 服务(帮助节点之间建立连接)。
: 相当于stdout/stderr。
: Master + rosout + parameter server (参数服务器)。
节点(Nodes) 不过是 ROS package 的可执行文件。ROS 节点使用 ROS 用户库(client library)与其他节点通信。节点能够发布或订阅话题(topics)。节点也能够提供或使用服务(service)。
ROS 用户库(client library)允许节点使用不同的编程语言实现通信:
roscpp = c++ client library
roscpp = python client library
使用ROS的第一步就是运行roscore
:
命令行将出现类似以下的信息:
打开一个新终端,并使用rosnode
来查看roscore
运行了哪些节点。请保证roscore
运行终端的启动。
Notes:当打开新终端时,环境变量将会重置,~/.bashrc
文件将会执行。如果运行类似rosnode
的ROS命令出现错误,那么可能需要添加一些环境变量到你的~/.bashrc
文件,或者手动source
。
rosnode
将展示当前运行的ROS节点的有关信息。输入rosnode list
命令以获取当前所有活跃节点:
命令行输出
表明当前仅有rosout
一个节点运行。rosout
的作用是记录节点的调试输出。
使用rosnode info
命令可以获取特定节点的相关信息:
以下就是rosout
的有关信息,例如发布了/rosout_agg
...
使用rosrun
可以启动ROS节点。rosrun
使用package name
和node name
直接运行节点,而不需要package
和node
的完整路径:
现在,我们使用该命令运行turtlesim
package下的turtlesim_node
节点。
打开新终端,输入:
将弹出以下窗口:
打开新终端,重新输入:
命令行输出:
ROS一个比较有用的特性就是,可以在命令行修改节点的名称。
关闭turtlesim
终端以关闭节点(或者在该终端使用ctrl+c
)。然后重新运行,并且需要在后面添加 [重映射参数(Remapping Argument)](http://wiki.ros.org/Remapping Arguments):
重新输入rosnode list
:
命令行输出:
Notes:如果输出仍然为/turtlesim
,说明你用了ctrl+c
而不是关闭窗口。此时,可以尝试先使用rosnode cleanup
,然后在输入rosnode list
。
当输出为/my_turtle
时,可以使用rosnode ping
测试节点是否启动成功:
涵盖的内容:
roscore = ros + core : master (为 ROS 提供 name service) + rosout (stdout / stderr) + parameter server (参数服务器);
rosnode = ros + node : 获取节点信息的 ROS 工具;
rosrun = ros + run : 运行指定package
下的指定node
;
http://wiki.ros.org/ROS/Tutorials/UnderstandingNodes
Notes:这只乌龟的样式可能与你的不同。这是因为ROS提供了许多,可以说是官方的小彩蛋。