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。
