文章目录

  • 1.图概念速览
  • 2.节点
  • 3.客户端库
  • 4.roscore
  • 5.使用rosnode
  • 6.使用rosrun


1.图概念速览

计算图(Computation Graph)是一个由ROS进程组成的点对点网络,它们能够共同处理数据。ROS的基本计算图概念有节点(Nodes)、主节点(Master)、参数服务器(Parameter Server)、消息(Messages)、服务(Services)、话题(Topics)和袋(Bages),它们都以不同的方式向图(Graph)提供数据。
●节点:节点是一个可执行文件,它可以通过ROS来与其他节点进行通信
●消息:订阅或发布话题时所使用的ROS数据类型。
●话题:节点可以将消息发布到话题,或通过订阅话题来接收消息。
●主节点:ROS的命名服务,例如帮助节点发现彼此。
●rosout:在ROS中相当于stdout/stderr(标准输出/标准错误)。
●roscore:主节点+rosout+参数服务器。

2.节点

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

3.客户端库

ROS客户端库可以让用不同编程语言编写的节点进行相互通信:
●rospy=Python客户端库
●roscpp=C++客户端库

4.roscore

roscore是你在运行所有ROS程序前首先要运行的命令

参考架构焦点解决 参考节点什么意思_参考架构焦点解决


如果roscore运行后没有初始化,很有可能是网络配置的问题。参见网络配置 - 单机器配置。添加链接描述

如果roscore不能初始化并提示缺少权限,可能是因为~/.ros目录属于root用户(只有root用户才能访问),可以用以下命令递归地更改该目录的所有权:

sudo chown -R <your_username> ~/.ros

5.使用rosnode

rosnode list命令活动的ROS节点

kandi@ubuntu:~$ rosnode list
/rosout

这表示当前只有rosout这个节点在运行。因为这个节点用于收集和记录节点的调试输出,所以它总是在运行的。而rosnode info命令返回的是某个节点的信息

参考架构焦点解决 参考节点什么意思_xml_02


这里可以看到rosout节点它发布了一个/rosout_agg话题。如果要看看其他节点,需要使用rosrun调出其他节点。

6.使用rosrun

rosrun可以让你用报名执行运行软件包内的节点,如:

kandi@ubuntu:~$ rosrun turtlesim turtlesim_node

参考架构焦点解决 参考节点什么意思_人工智能_03

再通过rosnode list查看节点

kandi@ubuntu:~$ rosnode list
/rosout
/turtlesim

ROS有一个强大的功能,就是你可以通过命令行重新分配名称,关闭turtlesim窗口以停止节点(或回到rosrun turtlesim的终端并按Ctrl+C)。现在让我们重新运行它,但是这一次使用重映射参数来改变节点名称:

rosrun turtlesim turtlesim_node __name:=you_turtle

再使用rosnode list查看被修改后的节点名是否能够看到

kandi@ubuntu:~$ rosnode list
/rosout
/you_turtle

我们可以看到新的/you_turtle节点。使用rosnode的另一个指令,ping,来测试它是否正常

kandi@ubuntu:~$ rosnode ping you_turtle
rosnode: node is [/you_turtle]
pinging /you_turtle with a timeout of 3.0s
xmlrpc reply from http://ubuntu:40231/ time=0.559330ms
xmlrpc reply from http://ubuntu:40231/ time=0.422716ms