【古月 21 讲】ROS 入门系列(1)——ROS 命令工具的使用及创建工作空间和功能包
1、运行海龟仿真器证明 ROS 安装成功
运行海龟仿真器共分为三步,如下:
启动 ROS Master
启动小海龟仿真器
启动海龟控制节点
注:这三行代码需要在三个终端中分别输入,若 ROS 安装成功,则可以通过键盘的方向键控制小海龟的运动。另外需要注意的是,在控制海龟运动时要保证自己在启动海龟控制节点(即第三步)这个终端,否则是无法控制的(自己吃过这个亏)。现把控制海龟运动的结果展示,如下图所示:
2、ROS 命令行工具的使用
看到这里,那么你的 ROS 肯定是安装成功了。我们可以通过键盘控制小海龟上下左右的移动了!!!感觉有点神奇,但是不是也存在一些疑惑呢,这几行命令怎么就能控制海龟了呢,ROS 系统到底是怎么实现这一个效果的呢?下面就利用一些 ROS 的命令解释海龟仿真器的具体实现。
首先还是先来介绍一些 ROS 中相关的一些概念:
[x] 节点(Node)——执行单元
执行具体任务的进程、独立运行的可执行文件
不同节点可使用不同的编程语言、可分布式运行在不同的主机上
节点在系统中的名称必须是唯一的
[x] 节点管理器(ROS Master)——控制中心
为节点提供命名和注册服务
跟踪和记录话题/服务通信,辅助节点互相查找、建立连接
提供参数服务器,节点使用此服务器存储和检索运行时的参数
[x] 话题(Topic)——异步通信机制
节点间用来传输数据的重要总线
使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的订阅者或发布者可以不唯一
[x] 消息(Message)——话题数据
具有一定的类型和数据结构,包括 ROS 提供的标准类型和用户自定义类型
使用编程语言无关的.msg 文件定义,编译过程生成对应的代码文件
[x] 服务(Service)——同步通信机制
使用客户端/服务器(C/S)模型,客户端发送请求数据,服务器完成处理后返回应答数据
使用编程语言无关的.srv 文件定义请求和应答数据结构,编译过程中生成对应的代码文件
第一次看这些概念肯定不能完全看懂,后面通过一步步的实践慢慢理解!!!下面正式通过一些命令来解释海龟仿真器的实现过程。
rqt_graph
可以看出现在系统中有两个运行的节点(/teleop_turtle【键盘控制节点】和/turtlesim【仿真器节点】)和一个话题(/turtle1/cmd_vel)。
rosnode list
查看节点列表这行代码可以查看系统中的节点,运行上述代码结果如下:
可以看出,运行上述代码后会显示两个和运行 rqt_graph 一样的节点,但是还多出一个节点,这个节点是默认启动 roscore 就会存在的,这里可以不予理会。
rostopic list
查看话题列表这行代码可以查看系统中的话题,运行上述代码结果如下:
可以看出系统订阅了上图中话题,其中/turtle1/cmd_vel 话题就是控制小海龟运动的。之前我们是通过键盘控制海龟运动,现在可以通过发布话题实现小海龟的运动,命令如下:
上述命令中-r 10 表示以每秒 10 次的频率发布话题,(若无-r 10,则小海龟运动一段距离后就会停下)geometry_msgs/Twist 表示消息结构,其后面的内容是具体数据(包括角速度、线速度)。运行上述代码的结果如下:小海龟做圆周运动。
rosservice list
查看服务列表
编译功能包
咻咻咻咻~~duang~~点个赞呗
版权声明: 本文为 InfoQ 作者【秃头小苏】的原创文章。
原文链接:【http://xie.infoq.cn/article/dc47321a751fbc90d7ed36d15】。文章转载请联系作者。
评论