ROS学习笔记四:理解ROS节点
2016-08-24 19:15
399 查看
ROS学习笔记四:理解ROS节点
本节主要介绍ROS图形概念,讨论ROS命令行工具roscore、rosnode和rosrun。要求
要求已经在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软件包中的一个可执行文件,ROS节点使用客户端库函数和其他节点进行通信,节点可以从topic中订阅信息,也可发送消息至topic,同时节点也可以使用或者提供服务。客户端库函数
ROS客户端库函数允许使用不同的编程语言进行编程通信:rospy:Python client library
roscpp:C++ client library
roscore
roscore是你在使用ROS的时候第一件应该做的事:roscore &
然后就会看到输出的如下信息:
[1] 4080 mountzf@ubuntu:~/ros_tutorial$ ... logging to /home/mountzf/.ros/log/0491d61a-69eb-11e6-93e8-000c29521e21/roslaunch-ubuntu-4080.log Checking log directory for disk usage. This may take awhile. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. started roslaunch server http://ubuntu:32777/ ros_comm version 1.11.20 SUMMARY ======== PARAMETERS * /rosdistro: indigo * /rosversion: 1.11.20 NODES auto-starting new master process[master]: started with pid [4092] ROS_MASTER_URI=http://ubuntu:11311/ setting /run_id to 0491d61a-69eb-11e6-93e8-000c29521e21 process[rosout-1]: started with pid [4105] started core service [/rosout]
使用rosnode
打开一个新的终端窗口,看看运行roscore之后会出现些什么。rosnode显示了现在正在运行的ROS节点的信息。其中rosnode list命令列出了正在运行的节点名称。
rosnode list /rosout
这说明现在系统中只有一个节点rosout在运行,它将一直运行并收集和记录节点的调试输出。命令
rosnode info返回一个特定节点的节点信息。
rosnode info /rosout
这将返回节点rosout的一些信息:
Node [/rosout] Publications: * /rosout_agg [rosgraph_msgs/Log] Subscriptions: * /rosout [unknown type] Services: * /rosout/set_logger_level * /rosout/get_loggers contacting node http://ubuntu:35108/ ... Pid: 4105
使用rosrun
rosrun命令允许你直接通过软件包名称运行软件包当中的节点(不需要知道软件包的所在路径,但必须是在ROS的搜索目录范围之内)。使用方法:
rosrun [package_name] [node_name]
所以现在我们可以运行软件包turtlesim中的turtlesim_node节点:
rosrun turtlesim turtlesim_node
在一个新窗口中
rosnode list /rosout
/turtlesim
ROS中很有力的一个特征是你可以在命令行中重新分配名字
rosrun turtlesim turtlesim_node __name:=my_turtlesim rosnode list /my_turtlesim /rosout
如上,我们的节点名称更改为了my_turtlesim,下面我们使用另一个rosnode命令行命令
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节点信息和操作节点的工具;
rosrun=ros+run,用来运行一个给定软件包中的节点。
祝枫
2016年8月24日于哈尔滨
相关文章推荐
- ROS学习笔记三(理解ROS节点)
- ROS学习笔记(三)- 分布式节点与laser数据可视化
- ROS学习笔记(三)- 分布式节点与laser数据可视化
- ROS学习(基于Ubuntu 15.04 和ROS Jade)第三章 ROS核心教程 之 5 理解ROS节点
- ROS的学习(六)理解ROS的节点(NODE)
- ROS学习笔记(三)- 分布式节点与laser数据可视化
- ROS学习笔记(三)- 分布式节点与laser数据可视化
- ROS学习笔记(三)- 分布式节点与laser数据可视化
- ROS学习笔记(三)- 分布式节点与laser数据可视化
- ROS学习--(六)理解ROS节点和话题
- ROS学习笔记五:理解ROS topics
- ROS学习笔记(三)- 分布式节点与laser数据可视化
- ROS学习笔记(三):新建包及节点初探
- ROS学习(六)—— 理解ROS节点
- ros学习笔记--如何看可视化的话题与节点
- ROS学习笔记(三)- 分布式节点与laser数据可视化
- ROS学习历程(6)------理解ROS的节点(NODE)
- ROS学习笔记(三)- 分布式节点与laser数据可视化
- ROS学习笔记(三)- 分布式节点与laser数据可视化
- ROS学习笔记(六):多节点通信