描述:这篇教程主要介绍ROS图的概念及命令行工具roscore,rosnode和rosrun等;
1、必备条件
在这篇教程里,我们会使用一个轻量级的模拟器,可以通过下面的命令安装:
$ sudo apt-get install ros-
替换命令中
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窗口:
注意: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:从指定的功能包中运行一个节点;
2015职称计算机考试书PowerPoint2007中 .. 定价:¥45 优惠价:¥42 更多书籍 | |
2015年全国职称计算机考试教材(2007模 .. 定价:¥225 优惠价:¥213 更多书籍 |