ROS
ROS 各个层级
文件系统级主要解释了 ROS 文件具体是如何在硬盘上进行组织的。
计算图级表明了对数据的共同处理过程,其概念包括节点、主题、消息等。
社区级包括了 ROS 软件和知识等共享资源。
ROS 核心概念
节点
节点是单一用途的可执行程序,例如传感器驱动、地图驱动等。节点采取单独编译、执行和管理等策略,相对保持独立。一般使用 ROS 客户端库来编写节点。
**节点管理器 Master **是 ROS 中特有的组件。它为各个节点提供连接信息,以便于各个节点之间互通消息。但是,这一管理器中心化程度过强,在 ROS2 中已经被移除。
主题 topic
主题是已经定义类型的命名消息流。节点之间通过向主题发送消息来传递数据和通信。主要采用发布者/订阅者模式,异步通信。
消息 message
消息是用于节点间通信的严格类型的数据结构。一般是以 .msg
为扩展名的简单文本文件。ROS 的消息支持标准的数据类型,同时也适用于数组、结构体等自定义的数据类型。
服务/动作 service
服务主要用来同步节点间事务。主要采用客户端服务器的模式,使用编程语言无关的 .srv
文件定义请求。与之相似的是动作,它和服务的区别在于执行动作时会不断给客户端服务器反馈。
参数服务器
参数服务器是可以通过网络访问的共享多变量字典。适合存储静态的文本数据。
ROS Bags
ROS Bags 主要进行数据记录,可以存储来自 topics
和 services
的 message
数据。它可以回放到他们被记录的相应主题,甚至映射到新的主题。
包 Package
包是 ROS 中软件的主要组织形式。包的目标是创建易于重用的最小代码集合,包含一个或多个节点、文档和 ROS 接口,大多都在 Github 上托管。
一个包应当只有一个目的,应当遵循包的一般原则。
元功能包 meta package
可以包含多个包。
ROS 命令
ROS 的常用命令分为多个类别,包括 shell
命令、执行命令、信息命令、catkin
命令和功能包命令。
shell
命令
shell
命令和 Linux 中常用的 bash
命令相近,允许我们快速对设备上的资源进行操作。
执行命令
用于操纵各个节点、服务等启停等。
ros+run
:运行单个节点。ros+launch
:运行多个节点或设置运行选项。ros+clean
:检查或删除ROS
日志文件。
信息命令
信息命令用于快速了解当前的系统信息,如主题信息、服务信息、节点信息等。是较为常用的命令。
catkin
命令
协助快速进行系统构建的命令。比如,可以自动生成功能包,构建系统的工作目录等。
ROS 编程入门
坐标变换
由于各个实体组件的相对位置不同,它们本身的坐标系也不相同。在信息传递中,需要在各个坐标系之间进行转化,这就是坐标变换。
预备知识:四元数和欧拉角
开发工具
可以使用 VSCode
并安装 ROS
扩展即可。也可使用 Vim
。