此贴是第一遍过完古月居21讲,没完全明白示例代码,记录一下基础概念,以防自己遗忘,相信在后续自己动手完成项目的时候会二刷三刷,有新的理解,不断充实这个帖子。
工作空间
定义:放置代码、参数、脚本等文件的一个文件夹,叫做工作空间。
经典的工作空间为4个文件夹,包括build、install、log、src。
build,编译空间,保存编译过程中产生的中间文件,
install,安装空间,放置编译得到的可执行文件和脚本,
log,日志空间,编译和运行过程中,保存各种警告、错误、信息等日志,
src,代码空间,未来编写的代码、脚本,都需要人为的放置到这里。
Ps:在工作空间内对其设置环境变量
$ source install/local_setup.sh # 仅在当前终端生效
$ echo " source ~/dev_ws/install/local_setup.sh" >> ~/.bashrc # 所有终端均生效
功能包 pkg
定义:表示同一种功能的代码集合。
Ps:创建功能包示例(在src中)
$ cd ~/dev_ws/src
$ ros2 pkg create --build-type ament_cmake learning_pkg_c # C++
$ ros2 pkg create --build-type ament_python learning_pkg_python # Python
节点 node
定义:执行具体任务的进程。(如摄像头获取信息、轮轴转动等)
- 节点是可独立运行的执行文件,且同一系统中节点的语言、物理分布位置可以不同。
- 每个节点命名唯一。
- 需要配置才能用ros2运行
话题 topic
定义:负责在节点之间传递数据。(适合单向传递)
- 话题是基于DDS的发布/订阅模型。
- 异步通信。
- 可以使用.msg文件定义消息结构。
服务 service
定义:负责在节点之间传递数据。(适合一问一答同步性要求高的数据)
- C/S模型,服务器唯一,客户端不唯一。
- 同步通信。
- .srv文件定义请求和应答数据结构
通信接口 interface
定义:给传递的数据定义的标准结构。
动作 action
定义:负责在节点之间传递完整的行为流程。(基于话题和服务实现的应用层通信机制)
- C/S模型,服务器唯一,客户端不唯一。
- 同步通信。
- .action文件定义通信接口的数据结构。
参数 param
定义:参数是ros系统中的全局字典,可以在多个节点中共享数据。
分布式通信
定义:将不同的功能分布在不同的终端中。
DDS
定义:分布式实时系统,是ros底层通信的神经网络。(所有节点都可以在DataBus上发布和订阅消息)