ROS学习笔记(十一)——ROS试用练习(二)

ROS学习笔记(十一)——ROS试用练习

六、如何使用主题与节点交互
要进行交互并获得主题的信息,可以使用rostopic工具
在terminal里输入

rostopic

你将获得如下输出:

rostopic is a command-line tool for printing information about ROS Topics.

Commands:
    rostopic bw display bandwidth used by topic   
    rostopic delay  display delay of topic from timestamp in header
    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 or field type

Type rostopic  -h for more detailed usage, e.g. 'rostopic echo -h'

现在我们在启动键盘控制“小乌龟”来运动

rosrun turtlesim turtle_teleop_key

这时候你使用rosnode list命令,你将会看到有三个节点在运行:

/rosout
/teleop_turtle
/turtlesim

其中/teleop_turtle节点是键盘控制小乌龟运动的节点
我们来看看/teleop_turtle节点的详细信息

rosnode info /teleop_turtle

你将看到如下输出信息:

Node [/teleop_turtle]
Publications: 
 * /rosout [rosgraph_msgs/Log]
 * /turtle1/cmd_vel [geometry_msgs/Twist]

Subscriptions: None

Services: 
 * /teleop_turtle/get_loggers
 * /teleop_turtle/set_logger_level


contacting node http://your pc name:XXXXX/ ...
Pid: XXXXX
Connections:
 * topic: /rosout
    * to: /rosout
    * direction: outbound
    * transport: TCPROS
 * topic: /turtle1/cmd_vel
    * to: /turtlesim
    * direction: outbound
    * transport: TCPROS

我们可以看到teleop_turtle节点发布一个主题:/turtle1/cmd_vel [geometry_msgs/Twist]
同样,我们再去看看turtlesim节点的详细信息

rosnode info /turtlesim

在输出信息中,你将会看到有这么一行:

Subscriptions: 
 * /turtle1/cmd_vel [geometry_msgs/Twist]

表示teleop_turtle节点把消息发布到/turtle1/cmd_vel [geometry_msgs/Twist]主题,而turtlesim节点订阅了该主题,从而我们可以通过键盘来控制“小乌龟”的运动。

rostopic list
/rosout
/rosout_agg
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

通过echo可以查看节点发出的信息:

rostopic echo /turtle1/cmd_vel

此时切换到键盘控制“小乌龟”移动得terminal下,按下控制键
你将会看到类似如下的输出信息:

linear: 
  x: 2.0
  y: 0.0
  z: 0.0
angular: 
  x: 0.0
  y: 0.0
  z: 0.0

通过rostopic type 可以查看主题发送的消息类型:

rostopic type /turtle1/cmd_vel

你将获得如下输出信息:

geometry_msgs/Twist

如果你想查看消息字段,可以使用如下命令:

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

现在我们已经了解了什么是ROS的消息,接下来我们开始结合消息来使用rostopic。
rostopic pub可以把数据发布到当前某个正在广播的话题上。

用法:rostopic pub [topic] [msg_type] [args]
 rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

至于这句话什么意思,详见http://wiki.ros.org/cn/ROS/Tutorials/UnderstandingTopics

未完待续!
2018年3月16日
于杭州
hangzhou

你可能感兴趣的:(ROS学习笔记)