理解ROS节点---ROS学习第4篇
Posted loongembedded
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解ROS节点---ROS学习第4篇相关的知识,希望对你有一定的参考价值。
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命令返回的是某个节点的信息
这里可以看到rosout节点它发布了一个/rosout_agg话题。如果要看看其他节点,需要使用rosrun调出其他节点。
6.使用rosrun
rosrun可以让你用报名执行运行软件包内的节点,如:
kandi@ubuntu:~$ rosrun turtlesim turtlesim_node
再通过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
…
以上是关于理解ROS节点---ROS学习第4篇的主要内容,如果未能解决你的问题,请参考以下文章