首页 > 代码库 > ROS学习笔记三(理解ROS节点)

ROS学习笔记三(理解ROS节点)

要求已经在Linux系统中安装一个学习用的ros软件包例子:

sudo apt-get install ros-indigo-ros-tutorials

ROS图形概念概述

  • nodes:节点,一个节点即为一个可执行文件,可以通过ROS和其他节点进行通信;
  • messages:消息,当订阅或者发布一个topic时使用的数据类型
  • topics:话题,节点可以发布信息到topics或者从topics那里订阅信息;
  • master:节点管理器,ROS的name service,提供服务,例如让不同的节点可以找到彼此;
  • rosout:等价于ROS中的stdout/stderr;
  • roscore:master+rosout+parameter service(参数服务器)。

ROS客户端库函数允许使用不同的编程语言进行编程通信:

  • rospy:Python client library
  • roscpp:C++ client library

[1]roscore  在运行所有ROS程序前首先要运行的命令

//打开一个新终端
roscore &

[2]rosnode 显示当前运行的ROS节点信息,其中rosnode list命令列出了正在运行的节点名称。

//打开一个人新终端
$ rosnode list
/rosout

系统中只有一个节点rosout在运行,它将一直运行并收集和记录节点的调试输出。

[3]rosnode info返回一个特定节点的节点信息,事实上由它发布 /rosout_agg。

rosnode info /rosout

[4]rosrun命令允许你直接通过软件包名称运行软件包当中的节点(不需要知道软件包的所在路径,但必须是在ROS的搜索目录范围之内)。

使用方法:

rosrun [package_name] [node_name]

我们现在运行软件包turtlesim中的turtlesim_node节点:

rosrun turtlesim turtlesim_node

检验:在一个新窗口中:

$ rosnode list
/rosout
/turtlesim

[5]在命令行中重新分配名字

$ rosrun turtlesim turtlesim_node __name:=my_turtlesim
$ rosnode list
/my_turtlesim
/rosout

[6]命令rosnode ping:

$ rosnode ping /my_turtlesim
rosnode: node is [/my_turtlesim]
pinging /my_turtlesim with a timeout of 3.0s
xmlrpc reply from http://ubuntu:33201/  time=0.409842ms
xmlrpc reply from http://ubuntu:33201/  time=1.335144ms
xmlrpc reply from http://ubuntu:33201/  time=1.242876ms
xmlrpc reply from http://ubuntu:33201/  time=1.311064ms
xmlrpc reply from http://ubuntu:33201/  time=1.254082ms

总结

  • roscore=ros+core,master(为ROS提供名称服务)+rosout(stdout/stderr)+parameter server。所以在使用ROS的时候的第一件事就是运行roscore来启动这些服务
  • rosnode=ros+node,ROS tool to get information about a node;
  • rosrun=ros+run,runs a node from a given package。

 

ROS学习笔记三(理解ROS节点)