考试首页 | 考试用书 | 培训课程 | 模拟考场 | 考试论坛  
  当前位置:Linux认证 > 综合辅导 > 文章内容
  

Linux教程:机器人操作系统ROS学习教程

来源:robotos.net [ 2016年2月14日 ] 【

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

1、必备条件

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

$ sudo apt-get install ros--ros-tutorials

替换命令中为你的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 //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=//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 //machine_name:54614/ ...
•        Pid: 5092

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

7、rosrun的使用

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

用法:
$ rosrun [package_name] [node_name]

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

在一个新的命令终端输入如下指令:

$ rosrun turtlesim turtlesim_node

可以看到一个turtlesim窗口:

机器人操作系统ROS学习教程

注意: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 //aqy:42235/    time=1.152992ms
•        xmlrpc reply from //aqy:42235/    time=1.120090ms
•        xmlrpc reply from //aqy:42235/    time=1.700878ms
•        xmlrpc reply from //aqy:42235/    time=1.127958ms

8、Review回顾

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

本文纠错】【告诉好友】【打印此文】【返回顶部
将考试网添加到收藏夹 | 每次上网自动访问考试网 | 复制本页地址,传给QQ/MSN上的好友 | 申请链接 | 意见留言 TOP
关于本站  网站声明  广告服务  联系方式  站内导航  考试论坛
Copyright © 2007-2013 中华考试网(Examw.com) All Rights Reserved