[跟我学ROS]5.熟悉ROS系统中的节点

本文介绍了ROS(机器人操作系统)的基础概念,包括节点、消息、话题等,并详细讲解了roscore、rosnode与rosrun等命令的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章转载自: http://www.robotos.net/thread-14-1-1.html


描述:这篇教程主要介绍ROS图的概念及命令行工具roscore,rosnode和rosrun等;


1、必备条件

在这篇教程里,我们会使用一个轻量级的模拟器,可以通过下面的命令安装:

?
$ sudo apt-get install ros-<distro>-ros-tutorials



替换命令中<distro>为你的ROS发布版本,如electric,fuerte,groovy等;

2、浏览图的概念

•        节点:节点是一个可执行文件,可以与其它ROS节点进行通信;
•        消息:ROS中的一种数据类型,用于订阅或者发布一个主题;
•        话题:节点发布的一个话题,同时也可以接收一个话题;
•        Master:ROS系统中的名称管理器,方便节点之间的查找;
•        rosout:在ROS系统中相当于标准的stdout/stderr;
•        roscore:Master+rosout+parameter server(parameter server会稍后介绍)

3、Nodes节点

节点只不过是ROS功能包中的一个可执行文件,ROS节点采用ROS客户端库与其它节点进行通信,节点可以发布或订阅一个话题,也可以提供或使用一个服务。

4、客户端库

ROS客户端库允许节点以不同的编程语言实现,通信方式也可以采用不同的语言实现:
•        rospy 为 python 语言实现的客户端库
•        roscpp 为 c++ 语言实现的客户端库

5、roscore

使用ROS时,roscore 是第一个需要运行的指令;

指令如下:

?
$ roscore

运行后将看到类似如下的相关信息:
•        ... logging to ~/.ros/log/9cf88ce4-b14d-11df-8a75-00251148e8cf/roslaunch-machine_name-13039.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://machine_name:33919/
•        ros_comm version 1.4.7
•        
•        SUMMARY
•        ========
•        
•        PARAMETERS
•         * /rosversion
•         * /rosdistro
•        
•        NODES
•        
•        auto-starting new master
•        process[master]: started with pid [13054]
•        ROS_MASTER_URI=http://machine_name:11311/
•        
•        setting /run_id to 9cf88ce4-b14d-11df-8a75-00251148e8cf
•        process[rosout-1]: started with pid [13067]
•        started core service [/rosout]

如果roscore没有成功初始化,有可能是网络配置的问题;

6、rosnode的使用

打开一个新的命令终端,利用rosnode查看一下正在运行的roscore在做什么

rosnode可以显示正在运行的ROS节点信息;

rosnode list列出了正在活动的节点:
?
$ rosnode list

将会看到如下执行结果
•        /rosout

这表明只有一个节点正在运行,就是rosout,这是一个始终都在运行的节点,它用来收集节点的调试输出信息等;

rosnode info命令显示指定的节点的信息:
?
$ rosnode info /rosout

这将显示出节点rosout更多的信息,比如它将发布/rosout_agg等;
•        ------------------------------------------------------------------------
•        Node [/rosout]
•        Publications:
•         * /rosout_agg [rosgraph_msgs/Log]
•        
•        Subscriptions:
•         * /rosout [unknown type]
•        
•        Services:
•         * /rosout/set_logger_level
•         * /rosout/get_loggers
•        
•        contacting node http://machine_name:54614/ ...
•        Pid: 5092

现在,我们查看其他的节点;这次采用rosrun的方式激活节点;

7、rosrun的使用

采用rosrun指令,可以通过功能包的名字直接运行一个节点,而不必知道这个功能包的具体路径;

用法:
$ rosrun [package_name] [node_name]

让我们来运行一下turtlesim功能包里的节点turtlesim_node;

在一个新的命令终端输入如下指令:
?
$ rosrun turtlesim turtlesim_node

可以看到一个turtlesim窗口:
5.1.png          

注意:turtlesim窗口中的小乌龟可能不一样,不用担心,ROS里有多种类型的小乌龟,你的是一个惊喜哦!

在一个新的命令终端输入:
?
$ rosnode list

可以看到如下信息:
•        /rosout
•        /turtlesim

ROS中一个比较强大的功能是你可以通过命令行重新指定名称;

关闭turtlesim窗口停止这个节点,或者返回rosrun turtlesim命令终端,按下crtl+C键盘。我们重新运行它,不过这次我们通过映射参数(Remapping Argument)来改变节点的名字:
?
$ rosrun turtlesim turtlesim_node __name:=my_turtle

现在我们依然采用rosnode list:
?
$ rosnode list

•        将会得到如下输出信息:
•        /rosout
•        /my_turtle

我们查看这个新的my_turtle节点,这次采用另外一个rosnode参数ping,如下所示:
?
$ rosnode ping my_turtle
•        rosnode: node is [/my_turtle]
•        pinging /my_turtle with a timeout of 3.0s
•        xmlrpc reply from http://aqy:42235/     time=1.152992ms
•        xmlrpc reply from http://aqy:42235/     time=1.120090ms
•        xmlrpc reply from http://aqy:42235/     time=1.700878ms
•        xmlrpc reply from http://aqy:42235/     time=1.127958ms

8、Review回顾

这一节我们讲解了如下一些指令:
roscor = ros+core:master(在ROS中提供名字的服务)+rosout(stdout/stderr)+parameter server(参数服务);
rosnode = ros+node:用于获取节点信息的ROS 工具;
rosrun = ros+run:从指定的功能包中运行一个节点;

英文文档:  http://www.ros.org/wiki/ROS/Tutorials/UnderstandingNodes

注:欢迎你转载本篇文章,时飞提醒你转载时请注明出处!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值