3、理解ros节点

Posted by pzque on 2016-04-14     

一、总体框架

参见[ros总体框架]

二、roscore

启动ros服务:

1
roscore

roscore = ros+core : master (provides name service for ROS) + rosout (stdout/stderr) + parameter server (parameter server will be introduced later)

三、rosnode

1
rosnode list

预期输出为:

1
/rosout

查看节点信息:

1
rosnode info /rosout

输出为:

1
2
3
4
5
6
7
8
9
10
Node [/rosout]
Publications:
* /rosout_agg [rosgraph_msgs/Log]

Subscriptions:
* /rosout [rosgraph_msgs/Log]

Services:
* /rosout/get_loggers
* /rosout/set_logger_level

可以清晰地看到此节点发布、订阅的信息以及其创建的服务。

接下来我们看一下更多节点的状况。

四、rosrun

可以使用rosrun启动包内的某节点,用法:

1
rosrun [package_name] [node_name]

比如我们启动一个小海龟节点:

1
rosrun turtlesim turtlesim_node

可以看到一个GUI窗口。

然后:

1
rosnode list

得到:

1
2
/rosout
/turtlesim

你还可以自定义节点名字:

1
rosrun turtlesim turtlesim_node __name:=my_turtle

进一步地,ping一下:

1
rosnode ping my_turtle

得到:

1
2
3
4
5
6
rosnode: node is [/my_turtle]
pinging /my_turtle with a timeout of 3.0s
xmlrpc reply from http://192.168.31.101:57003/ time=0.612974ms
xmlrpc reply from http://192.168.31.101:57003/ time=1.462936ms
xmlrpc reply from http://192.168.31.101:57003/ time=1.447916ms
xmlrpc reply from http://192.168.31.101:57003/ time=1.414061ms

五、总结

  1. roscore = ros+core : master (provides name service for ROS) + rosout (stdout/stderr) + parameter server (parameter server will be introduced later)
  2. rosnode = ros+node : ROS tool to get information about a node.
  3. rosrun = ros+run : runs a node from a given package.