ROS系统总结
1.了解ROS操作系统
ROS是一个适用于机器人编程的框架,这个框架把原本松散的零部件耦合在了一起,为他们提供了通信架构。
2.安装ROS系统
3.ROS文件系统
(1)catkin编译系统
对于ROS这样大体量的平台来说,采用的是CMake,且ROS对CMake进行了扩展,于是便有了Catkin编译系统。
(2)package软件包
ROS中的package不仅是Linux上的软件包,更是catkin编译的基本单元,调用 catkin_make 编译的对象就是一个个ROS的package,也就是说任何ROS程序只有组织成package才能编译。 一个package可以编译出来多个目标文件(ROS可执行程序、动态静态库、头文件等等)。
4.ROS通信架构
ROS中的通信方式有四种,主题、服务、参数服务器、动作库。
(1)node
在ROS的世界里,最小的进程单元就是节点(node)。一个软件包里可以有多个可执行文件,可执行文件在运行之后就成了一个进程(process),这个进程在ROS中就叫做节点。
启动node:$ rosrun pkg_name node_name
(2)launch文件
用一个命令能一次性启动master和多个node。
该命令是: $ roslaunch pkg_name file_name.launch
(3)topic
topic是一种点对点的单向通信方式,这里的“点”指的是node,也就是说node之间可以通过topic方式来传递信息。topic要经历下面几步的初始化过程:首先,publisher节点 和subscriber节点都要到节点管理器进行册,然后publisher会发布topic,subscriber在 master的指挥下会订阅该topic,从而建立起sub-pub之间的通信。注意整个过程是单向的。其结构示意图如下:
(4)msg
Message按照定义解释就是topic内容的数据类型,也称之为topic的格式标准。
msg文件示例:
(5)service
service方式在通信模型上与topic做了区别。Service通信是双向的,它不仅可以发送消息,同时还会有反馈。service包括两部分,一部分是请求方(Clinet),另一部分是应答方/服务提供方(Server)。请求方(Client)会发送一个request,等待server处理,反馈回一个reply,这样通过类似“请求-应答”的机制完成整个服务通信。
(6)参数服务器(parameter server)
与前两种通信方式不同,参数服务器也可以说是特殊的“通信方式”。特殊点在于参数服务器是节点存储参数的地方、用于配置参数,全局共享参数。参数服务器使用互联网传输,在节点管理器中运行,实现整个通信过程。
(7)action
Actionlib是ROS中一个很重要的库,类似service通信机制,actionlib也是一种请求响应机制的通信方式,actionlib主要弥补了service通信的一个不足,就是当机器人执行一个长时间的任务时,假如利用service通信方式,那么publisher会很长时间接受不到反馈的reply,致使通信受阻。当service通信不能很好的完成任务时候,actionlib则可以比较适合实现长时间的通信过程,actionlib通信过程可以随时被查看过程进度,也可以终止请求,这样的一个特性,使得它在一些特别的机制中拥有很高的效率。
Action规范文件的后缀名是.action,它的内容格式如下: