机器人操作系统(ROS)浅析-学习笔记

本文介绍了ROS中的节点操作,包括启动、终止节点以及查看节点信息。重点讲解了ROS中的消息通信机制,话题作为节点间通信的桥梁,允许发布和订阅。还探讨了rostopic工具的使用,如`rostopic pub`来发布消息到特定话题。文章强调了ROS节点的松耦合特性,以及节点如何通过消息类型进行通信。
摘要由CSDN通过智能技术生成

机器人操作系统(ROS)浅析

学习笔记

2018-2-8  已将此教程过了一遍  此文档中为摘抄的笔记,若有不明白的地方,请查看原文档

                                                            

2018-2-2

关于节点nodes 的操作

 1、启动节点master  $ roscore

 

这个定义中的运行实例runninginstance)很重要。如果我们同时执行相同程序的多个副本——注意确保每个副本使用不同的节点名——则每个副本都被当做一个单独的节点。

 

2、启动节点$ rosrun

 

rosrun命令有两个参数,其中第一个参数是功能包的名称;第二个参数是该软件包中的可执行文件的名称。

ROS中要求每个节点有不同的名称

 

可以使用rosrun命令显式设置节点的名称,语法如下:

rosrun package-name executable-name__name:=node-name

 

rosrun一个shell脚本,能够理解ROS的文件组织结构,知道到哪里能找到与给定包名称对应的可执行文件。

一旦它找到你要的程序,rosrun就会正常启动节点。

 

例如,如果你真的想要,你可以像执行任何其他程序一样直接执行turtlesim_node

/opt/ros/indigo/lib/turtlesim/turtlesim_node

 

这里还要强调一点,通过节点管理器注册成为ROS节点发生在程序的内部,而不是通过rosrun命令。

 

3、查看节点要获得特定节点的信息,使用如下命令:

rosnode info node-name

 

4、终止节点要终止节点,使用如下命令:

rosnode kill node-name

 

topic

 

ROS节点之间进行通信所利用的最重要的机制就是消息传递。在ROS中,消息有组织地存放在话题topic19

消息传递的理念是:

当一个节点node想要分享信息时,它就会发布(publish)消息到对应的一个或者多个话题;

当一个节点想要接收信息时,它就会订阅(subscribe)它所需要的一个或者多个话题。

ROS节点管理器负责确保发布节点和订阅节点能找到对方;而且消息是直接地从发布节点传递到订阅节点,中间并不经过节点管理器转交

 

 

 

 

查看节点构成的计算图

 

要查看节点之间的连接关系,恐怕将其表示为图形是最便于查看的。

 

ROS系统中查看节点之间的发布-订阅关系的最简单方式就是在终端输入如下命令:

rqt_graph

 

在这个命令中,r代表ROSqt指的是用来实现这个可视化程序的Qt图形界面(GUI)工具包。输入该命令之后,你将会看到一个图形界面,其中大部分区域用于展示当前系统中的节点。通常情况下,你将会看到如图2.2类似的图形界面。在该图中,

 

椭圆形表示节点node ,有向边表示其两端节点间的发布-订阅关系。该计算图告诉我们,

 

/teleop_turtle节点向话题/turtle1/cmd_vel发布消息,而/turtlesim节点订阅了这些消息(“cmd_vel”“commandvelocity”的缩写。)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

rostopic pub

rostopic pub可以把数据发布到当前某个正在广播的话题上。

http://wiki.ros.org/cn/ROS/Tutorials/UnderstandingTopics

 

节点node 可以发布话题topic其他的节点node 可以订阅某个topic当节点订阅某个topic 的时候,可以不用关心整个topic 是由谁发出

 

turtlesim遥控系统的工作原理有了一定的理解。当你按下一个键时,/teleop_turtle节点会以消息的形式将这些运动控制命令发布到话题/turtle1/cmd_vel;与此同时,因为turtlesim_node订阅了该话题,因此它会接收到这个些消息,控制海龟按照该预定的速度移动。其中的关键点在于:

 

仿真海龟不关心(或者甚至不知道)哪个程序发布了这些cmd_vel消息。任何向这个话题发布了消息的程序都能控制这个海龟。

 

远程操作程序不关心(或者甚至不知道)哪个程序订阅了它发布的cmd_vel消息。任何订阅了相关话题的程序都能自主选择是否响应这些命令。

 

 

 

测量发布频率有两个命令可以用来测量消息发布的频率以及这些消息所占用的带宽:

rostopic hz topic-name

rostopic bw topic-name

 

查看消息类型

 

要想查看某种消息类型的详情,使用类似下面的命令21,22

rosmsg show message-type-name

 

 

用命令行发布消息

 

大多数时候,发布消息的工作是由特定的程序完成的*。但是,你会发现有时候手动发布消息是很实用的。要实现该功能,利用rostopic命令行工具23

 

rostopicpub –r rate-in-hz topic-name message-type message-content

 

这条命令重复地按照指定的频率给指定的话题发布指定的消息。

该命令最后的参数message-content应该按顺序提供消息类型中所有域的参数值。

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值