一:ros的系统架构
ros系统架构主要分为三个部分:
文件系统级
计算图级
开源社区级
1. 文件系统级
功能包(package):是ROS中软件组织的基本形式,一个功能包具有最小的结构和最少的内容,用于创建ROS程序;--指的是一种特定的文件结构和文件夹组合
功能包清单:manifests.xml 通过这个文件实现对功能包的管理;
功能包集(stack):将几个具有某些功能的功能包组织在一起,如导航功能包集;
功能包集清单:stack.xml
消息类型:消息类型的说明存储在 my_package/msg/MyMessageType.msg 中
服务类型:对服务类型的描述说明文件在ROS中定义了服务的请求和响应的数据结构,存储在 mypackage/MyserviceType.srv 中;
1.1 功能包
如果你在一个文件夹下看到 manifest.xml ,那么这个文件夹很可能是一个功能包;其中<depend> 标记显示当前功能包安装之前必须先安装哪些功能包;<export> 标记告诉系统编译该功能需要使用什么编译标志,引用哪些头文件等;
1.2 文件系统工具
ROS中大量代码分散在众多的packages和stacks之中. 使用Linux命令工具ls 和 cd已不能满足检索要求。因此ROS提供了一套自己的命令工具来完成与这些命令相似的工作. (要善于使用ros的命令工具,否则使用Linux命令将会很麻烦)
如果不知如何使用,可用 rosxxx help 查看此命令的用法:
1.2.1 rospack
USAGE: rospack <command> [options] [package]
(1) find的参数,作用是返回相应package或者stack的目录路径
robot@robot:~$ rospack find rosaria_client
/home/robot/catkin_ws/src/rosaria_client
1.2.2 roscd
用于快速进入相关功能包的目录(若使用cd 则需输入完整目录)
robot@robot:~$ roscd rosaria_client
robot@robot:~/catkin_ws/src/rosaria_client$
1.2.3 rosed
可以使你通过package的名字直接编辑一个package中的文件而不用输入package的整个路径.
$ rosed [package_name] [filename]
robot@robot:~$ rosed rosaria_client teleop.cpp
1.2.4 roscp 从功能包复制文件
usage: roscp package filename target
roscp rosaria_client teleop.cpp ~/catkin_ws/src/1.cpp
1.2.5
roscd log用于切换到ROS存储知识文件的目录
1.2.6 使用rosls 用于列出指定的package和stack中的文件和目录
详见相关此链接:http://wiki.ros.org/rosbash 点击打开链接
2. 计算图级
ROS会创建一个连接到所有进程的网络,在系统中的任何节点都可以访问此网络,并通过该网络与其他节点交互,获取其他节点发布的信息,并将自身数据发布到网络上。
node : 就是一个可执行程序 topic :topic 是一个话题,节点发布消息到话题上面 message:在一个消息,消息是ROS的一个数据类型。用于订阅和发布一个话题 rosout :相当于 stdout master:节点服务器,用于帮助找到彼此的节点 |
rosnode list 能够列出所有活跃的节点 rostpolic list 所有节点运行的话题 roservice list 所有节点的运行服务 |