概览:ROS中有两大组件。
1.节点 ——节点是基本的处理单元(节点实际上只不过是ROS软件包中的一个可执行文件)。
2.话题——话题是基本的通信单元,实现节点之间的通信。
正文(注意,介绍一个-h 参数(如:roscode -h、rostopic -h、rosparam -h等)可以查看这个命令有什么功能,有什么命令。详细的功能可以通过这个形式来查看,蛮有用的):
1.节点部分(rosnode):
运行节点之前,必须先运行roscore,运行roscore之后,其实是运行了三个进程(可以通过ps -ef|grep ros命令查看)。这三个进程分别是:roscore,rosmaster,rosout。
rosmaster——此即启动了一个节点管理器,顾名思义,其作用就是用于节点管理,在一个ros系统中,有且只有一个,它是ros中所有节点运行的前提,所以在执行启动ros节点前,第一步都需要执行roscore。
rosout——是log输出管理。
- roscore = ros+core:主节点(为ROS提供命名服务) + rosout (stdout/stderr) + 参数服务器(会在以后介绍)
- rosnode = ros+node:获取节点信息的ROS工具
- rosrun = ros+run:运行给定的软件包中的节点
详情看官 的教程节点部分。
常用命令(虽然可以通过-h查看所有命令,但常用的希望还是能记住。当然,记不住这个命令,但是起码得知道有这个东西,然后可以去哪里找这个命令):
可以通过rosnode list查看当前运行的节点。
2.话题部分(rostopic):
此时就需要创建一个小乌龟实例了。需要三个步骤:1.roscore 2.rosrun turtlesim turtlesim_node(运行turtlesim包内的turtlesim_node节点) 3.rosrun turtlesim turtle_teleop_key(运行turtlesim包内的turtlesim_teleop_key节点,实现可以键盘操作turtle(turtle即乌龟,turtlesim即乌龟模拟器)),注意:这三个命令都需要打开新的终端分别输入。
话题一般需要结合消息来使用。
2.1ROS话题:turtlesim_node节点和turtle_teleop_key节点之间是通过一个ROS话题来相互通信的。turtle_teleop_key在话题上发布键盘按下的消息,turtlesim则订阅该话题以接收消息。
常用命令(虽然可以通过-h查看所有命令,但常用的希望还是能记住。当然,记不住这个命令,但是起码得知道有这个东西,然后可以去哪里找这个命令):
rosrun rqt_graph rqt_graph:用动态的图显示了系统中正在发生的事情。
rostopic list:能够列出当前已被订阅和发布的所有话题。
rstopic echo:可以显示在某个话题上发布的数据。
用法:
例子:
2.2ROS消息:话题的通信是通过节点间发送ROS消息实现的。为了使发布者(turtle_teleop_key)和订阅者(turtulesim_node)进行通信,发布者和订阅者必须发送和接收相同类型的消息。这意味着话题的类型是由发布在它上面消息的类型决定的。使用rostopic type命令可以查看发布在话题上的消息的类型。
详情操作关注官 教程话题部分。
常用命令(虽然可以通过-h查看所有命令,但常用的希望还是能记住。当然,记不住这个命令,但是起码得知道有这个东西,然后可以去哪里找这个命令):
rostopic type:命令用来查看所发布话题的消息类型。
如:
rostopic pub:可以把数据发布到当前某个正在广播的话题上。
如:
用法:
例子:
rostopic hz: 告数据发布的速率。
用法:
例子:
rqt_plot:命令可以在滚动时间图上显示发布到某个话题上的数据。
如:
由上自己总结了一个操作小乌龟的四部曲:
1.rostopic list——先查看有什么话题
2.rosrun rqt_graph rqt_graph——可以查看节点与节点以及话题之间的关系。
3.rostopic type [topic]——查看消息类型,等会还可以方便直接拷贝相应消息类型到rostopic pub作为参数,省得手打了。
4.rostopic pub [topic] [msg_type] [args]——操作小乌龟的命令
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34647 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!