ros架构 ros不是传统意义上的操作系统,ros提供一种进程内的通信方法 应用层 ros需要一个管理者–master 计算图 节点 节点是执行运算任务的进程,一个系统有多个节点 节点之间的通信方式: 消息 每一个消息都是严格的数据结构,支持标准数据类型也支持嵌套结构和数组。 话题 是以一种发布和订阅的方式传递,一个节点可以针对一个给定的topic发布消息(称为talker) 也可以关注某类话题并订阅特定类型的数据(Listener) 发布者和订阅者并不知道彼此,系统可能有多个节点发布或者订阅同一个话题的消息 服务 基于话题的发布/订阅模型是一种很灵活的通信模式,但是对于双向同步传输模式不适合,我们称这种同步传输方式为服务。其基于客服端和服务器模型,包含两个部分的通信数据类型,一个用于请求一个用于应答,ros只允许一个节点提供指定的命名的服务 节点管理器 管理节点,统筹管理 文件系统 功能包(package)功能包是ros软件中的基本单元,包含ros节点、库、配置文件 功能包清单:每个功能包包含一个package.xml的功能清单用于记录功能包的基本清单 元功能包清单 在新版ros里面把原有功能包集升级为元功能包,主要作用是组织多个用于同一目的的功能包 消息类型 ros系统节点之间发布/订阅消息,可以使用ros提供的消息类型,也可以使用.msg文件在功能包msg文件夹下定义所需要的消息 服务类型 ros客户端/服务器端通信模型下的请求与应答数据类型,也可以使用ros系统提供的服务类型 ros常用命令 catkin_create_pkg 创建功能包 rospack 获取功能包的信息 catkin_make 编译工作空间的功能包 rosdep 自动安装功能包依赖的其他包 roscd 功能包目录跳转 roscp 拷贝功能包中的文件 rosrun 运行可执行文件 roslaunch 运行启动文件 ros为用户提供多节点之间的通信服务 话题通信机制 1Talker注册 2Listener注册 3ROS Master信息匹配 4Listener发送连接请求 5Talker确认连接请求 6Listener尝试与Talker建立网络连接 7Talker向Listener发布数据 服务通信机制 1Talker注册 2Listener注册 3 ROS Master进行信息匹配 4Listener与Talker建立网络连接 5Talker向Listener发布服务应答数据 参数管理机制 1Talker设置变量 2Listener通过RPC向Master发送参数设置数据查找 3ROS Master向Listener发送参数值 话题是多对多异步传输,多用于数据传输,通信模式为发布/订阅,实时性较弱,有缓冲区无反馈机制,服务有反馈机制,通信为客户端/服务端,同步传输,实时性强,无缓冲区,一对多。常用于逻辑处理。
|