美文网首页
ROS 基础学习笔记3——话题/消息/服务/参数

ROS 基础学习笔记3——话题/消息/服务/参数

作者: 北方的花姑娘 | 来源:发表于2019-08-10 19:45 被阅读0次
    使用以下命令开启两个节点
    $roscore
    # another terminal
    $ rosrun turtlesim turtlesim_node
    

    话题/Topic

    ros的topic用于在不同节点之间传输数据,一个话题可以有发布者和订阅者,话题发布的内容为消息,消息具有特定的类型(类似c语言结构体)。
    而服务是一个节点对外提供的一些操作/函数接口。
    参数是节点提供的一些参数设置。
    在turtle_sim这个例子中,话题是

    $ rostopic list
    /rosout   # roscore topic
    /rosout_agg
    /turtle1/cmd_vel  # turtle 的速度
    /turtle1/color_sensor  # 背景颜色
    /turtle1/pose # turtle的位置
    

    可以具体查看某个话题的信息:

    $ rostopic info /turtle1/cmd_vel
    Type: geometry_msgs/Twist
    
    Publishers: None
    
    Subscribers:
     * /turtlesim (http://ZenPC:54275/)
    

    消息

    可以看到/turtle1/cmd_vel 这个话题有一个消息,查看一下这个消息的具体信息:

    $ rosmsg show geometry_msgs/Twist
    geometry_msgs/Vector3 linear
      float64 x
      float64 y
      float64 z
    geometry_msgs/Vector3 angular
      float64 x
      float64 y
      float64 z
    

    可以看到这个消息是两个向量,可以发布消息道话题中,是乌龟移动:

    # rostopic pub [topic] [msg_type] [args]
    $ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[1.0, 0, 0]' '[0, 0, 1.0]'
    $ rostopic echo /turtle1/pose  # see turtle position
    

    服务

    获取当前的服务列表

    $ rosservice list
    /clear
    /kill
    ...
    $ rosservice info /clear
    Node: /turtlesim
    URI: rosrpc://ZenPC:55416
    Type: std_srvs/Empty
    Args:
    $ rosservice call /clear "{}"  # no arguments
    

    参数

    类似的

    $ rosparam list
    /background_b
    /background_g
    /background_r
    /rosdistro
    /roslaunch/uris/host_zenpc__54245
    /rosversion
    /run_id
    $ rosparam set /background_b 100
    $ rosservice call /clean "{}"  # update window
    

    可以看出来这四个在操作上十分类似。

    相关文章

      网友评论

          本文标题:ROS 基础学习笔记3——话题/消息/服务/参数

          本文链接:https://www.haomeiwen.com/subject/hlxdjctx.html