(1)ROS学习——节点、主题、服务的了解与体验

一、ROS

1、启动ROS

roscore

2、启动小海龟节点

重新打开一个终端,输入

rosrun turtlesim turtlesim_node 

rosrun:启动一个新节点;
turtlesim:功能包
turtlesim_node:功能包下的一个节点

3、启动键盘控制节点

重新打开一个终端,输入

rosrun turtlesim turtle_teleop_key

4、可视化工具rqt

(1) rqt_graph:可以看到当前正在运行的节点关系图

 rqt_graph

(2)rqt_plot:可以用来查看数据输出波形,在 topic 栏目中输入 / ,系统会自动弹出各种信息我们选择小海的 /turtle1/pose/x, 点击+, /turtle1/pose/y,点击+

rqt_plot

二、节点

1、什么是节点

节点就相当于一个独立的模块,模块(节点)之间可以相互联系。

2、使用ROS节点(rosnode <…>)

  • rosnode分别有以下几个用法:
    rosnode list:获取正在运行的节点
    rosnode info /turtlesim 输出此节点信息
    rosnode kill /turtlesim 杀死/结束此节点(可在其终端按Ctrl+C代替)

  • (1)rosnode list:获取正在运行的节点
    如下图所示,和上面一样,一共3个节点:
    在这里插入图片描述
    /rosout:这个节点始终是有的,随着roscore的运行而运行
    /teleop_turtle:键盘控制节点
    /turtlesim:小海龟节点

  • (2)rosnode info node1:查看节点“node1”的信息
    如输入:

    扫描二维码关注公众号,回复: 12852966 查看本文章
      rosnode info /turtlesim 
    

如下图所示,可以看到这个节点的订阅、话题、服务等各种信息。
在这里插入图片描述

三、主题

1、什么是主题

  • 主题相当于中介,比如你要找工作去中介,你把你要找的工作的类型告诉中介,中介另一边的工厂也必须有你要的类型的工作岗位,你们才能通过中介进行交流
  • 这里的人和工厂都是节点
  • 节点间的消息类型必须一样才能进行交流

2、使用主题(rostopic)

  • 常用rostopic有以下几个用法 (TOPIC代表要操作的主题)
    rostopic list 查看主题清单
    rostopic echo TOPIC 将主题发布的消息输出到屏幕
    rostopic type TOPIC 输出主题类型
    rostopic pub TOPIC 将数据发布到主题

  • (1)查看主题清单,终端输入:

      rostopic list
    

    可以看到正在运行的 /turtlesim所有的主题如下图:
    在这里插入图片描述

  • (2)查看输出主题类型,终端输入:

      rostopic type /turtle1/cmd_vel 
    

会显示消息类型为:geometry_msgs/Twist
在这里插入图片描述

  • (3)使用pub发布主题,输入如下命令:

      rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 "linear:
        x: 2.0
        y: 0.0
        z: 0.0
      angular:
        x: 0.0
        y: 0.0
        z: 1.0" 
    

#加上-r 1:使终端一直运行,小乌龟画圆圈
在这里插入图片描述

  • (4)现在我们用 echo 来查看节点通过话题发出的消息,终端输入:

      rostopic echo /turtle1/cmd_vel
    

就可以看到如下输出,包含线速度linear和角速度anular:
在这里插入图片描述

四、服务

1、什么是服务

服务就相当于10086,当你打电话时,电话中就会播放10086的几个服务,然后你按1、2、3…来选择不同服务,然后你就可以体验你所选择的服务

2、如何使用服务(rosservice)

rosservice

  • (1)查看正在运行的 /turtlesim 节点服务清单,终端输入:

      rosservice list 
    

显示如下各种服务:
在这里插入图片描述

  • (2)查看服务

    如要查看/ clear 服务,终端输入:

       rosservice info /clear
    

在这里插入图片描述

  • (3)调用服务
    如要调用/clear服务,终端输入:

      rosservice call /clear
    

可发现小乌龟的轨迹已经清除

猜你喜欢

转载自blog.csdn.net/m0_46278925/article/details/113743437