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

2019-08-10  本文已影响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

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

上一篇下一篇

猜你喜欢

热点阅读