第七节--ROS操作系统---理解ROS话题topics


(一)理解ROS话题
1–本节教程介绍ROS话题topics以及如何使用:
1–topics—命令行工具
2–rxplot命令行工具
2–理解ROS服务参数


(二)ROS话题topic详解
1)roscore—-首先确保roscore已经运行,打开一个新的终端:roscore
注意:
如果你的roscore,即ROS必要的服务已经启动,那么这一步可以省略,否则将会出现错误
2)turtlesim—-小海龟程序包
1–本教程中,我们也会使用到turtlesim,请在一个新的终端中运行:
rosrun turtlesim turtlesim_node
我们将会看到一个小海龟的画面
2—输出的结果如下所示:
[ INFO] [1461115871.415625988]: Starting turtlesim with node name /turtlesim
[ INFO] [1461115871.419411830]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]
3)通过键盘远程控制turtle
1–我们也需要通过键盘来控制turtle的运动,请在一个新的终端中运行:
rosrun turtlesim turtle_teleop_key
2–输出的结果如下:
Reading from keyboard
—————————
Use arrow keys to move the turtle.
3–然后,用鼠标点击你输入按键命令的终端窗口,让终端获取鼠标的焦点,这样你就可以用上下左右按键控制
小海龟turtle了
现在,你可以控制turtle运动了,下面我们一起来看一下这背后发生的事:


(三)ROS topics
1—turtlesim_node节点和turtlesim_teleop_key节点之间通过一个—-ROS话题–来互相通信的
2—turtle_teleop_key—-在一个topics话题上—发布—按键输入—消息(数据)
3—turtlesim—则订阅话题topics以接受—–该消息
下面,我们使用rqt_graph来显示当前运行的节点和话题
1)使用rqt_graph
1–rqt_graph能够创建一个显示当前系统运行情况的动态图,
2–rqt_graph是rqt程序包的一部分.
3–如果你没有安装,请通过以下命令来安装:
sudo apt-get install ros-indigo-rqt
sudo apt-get install ros-indigo-rqt-common-plugins
4–在一个新的终端中运行:
rosrun rqt_graph rqt_graph
你将会看见一个显示当前运行情况的状态图
5–如果你将鼠标放在/turtle1/command/velocity上,相应的ROS节点node(蓝色和绿色)和话题topics就会
高亮显示
6–正如你所看到的那样,turtlsim_node这个节点—–和—–turtle_teleop_key这个节点—-正在通过
一个名为turtle1/commond_velocity的话题—在相互通信


(四)rostopic介绍:
1–rostopic命令工具能让你获取有关ROS话题的信息
2–你可以使用帮助想查看rostopic的子命令
示例:
rostopic -h
结果:
ostopic is a command-line tool for printing information about ROS Topics.

    Commands:
        rostopic bw display bandwidth used by topic
        rostopic echo   print messages to screen
        rostopic find   find topics by type
        rostopic hz display publishing rate of topic    
        rostopic info   print information about active topic
        rostopic list   list active topics
        rostopic pub    publish data to topic
        rostopic type   print topic type

1)使用rostopic echo可以显示在某个话题上发布的数据
1–用法—rostopic echo [topic]
2–让我们在一个新终端中看一下turtle_teleop_key节点在turtle1/command_velocity话题行发布的数据
如果你使用的是ROS Hydro之前的ROS版本系统,请使用下面的命令:
rostopic echo /turtle1/command_velocity
如果你使用的是ROS Hydro及其之后的版本,请运行:
rostopic echo /turtle1/cmd_vel
由于我使用的是ROS2014年7月22发布的indigo靛蓝版本,因此我使用:
rostopic echo /turtle1/cmd_vel
2)使用rostopic list
1–rostopic list—能够列出当前订阅和发布的话题
2–让我们查看一下list子命令需要的参数,在一个终端中运行:
示例:
rostopic list -h
Usage: rostopic list [/namespace]

    Options:
      -h, --help            show this help message and exit
      -b BAGFILE, --bag=BAGFILE
                    list topics in .bag file
      -v, --verbose         list full details about each topic
      -p                    list only publishers
      -s                    list only subscribers
      --host                group by host name
3--在rostopic list中使用verbose选项----这会显示出有关发布和订阅的话题及其类型的详细信息:
        示例:
            rostopic list -v
         结果:
    Published topics:
     * /turtle1/color_sensor [turtlesim/Color] 1 publisher
     * /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher
     * /rosout [rosgraph_msgs/Log] 4 publishers
     * /rosout_agg [rosgraph_msgs/Log] 1 publisher
     * /turtle1/pose [turtlesim/Pose] 1 publisher

    Subscribed topics:
     * /turtle1/cmd_vel [geometry_msgs/Twist] 2 subscribers
     * /rosout [rosgraph_msgs/Log] 1 subscriber
     * /statistics [rosgraph_msgs/TopicStatistics] 1 subscriber

(五)ROS Messages—-消息
1–话题之间的通信是通过—-节点之间发送—ROS消息实现
2–对于发布器(turtle_teleop_key)和订阅器(turtlesim_node)之间的通信,发布器和订阅器之间必需发送
和接收相同类型的消息
3–这意味者话题topics的类型是由发布在它上面的消息类型决定的
4–使用rostopic type命令可以查看发布在某个话题上的消息类型
1)使用rostopic type—命令用来查看所发布话题消息的类型
1–用法–rostopic type [topic]
2–indigo版:运行—rostopic type /turtle1/cmd_vel
可以看到的结果为:
geometry_msgs/Twist

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值