目 录
第1章 开始你的机器人之旅 1
1.1 ROS生态介绍 1
1.1.1 ROS 2与机器人的关系 2
1.1.2 ROS 2系统概述及版本介绍 3
1.1.3 ROS 2开发工具介绍 5
1.2 ROS 2开发环境部署 10
1.2.1 在Ubuntu中安装ROS 2 11
1.2.2 在Ubuntu中安装VSCode 18
1.2.3 VSCode集成插件 21
1.2.4 VSCode运行ROS 2环境步骤 25
1.2.5 安装编译依赖项 26
1.2.6 创建工作空间和源码空间 30
1.2.7 启动VSCode并进行配置 31
1.2.8 测试编译环境 33
1.3 启动第一个机器人 37
1.3.1 启动图形模拟器 38
1.3.2 控制模拟器运行及分析 39
1.4 小结 41
第2章 ROS 2基础(节点) 42
2.1 ROS 2节点介绍及程序编写 42
2.1.1 ROS 2节点介绍 43
2.1.2 ROS 2节点实现(Python) 46
2.1.3 ROS 2节点实现(C++) 51
2.2 ROS 2功能包节点编写 56
2.2.1 Python实现功能包节点编写 56
2.2.2 C++实现功能包节点编写 62
2.3 组织管理ROS 2 Workspace 65
2.4 ROS 2构建工具—colcon 67
2.4.1 安装colcon 68
2.4.2 测试编译 69
2.4.3 colcon其他命令 69
2.5 小结 71
第3章 ROS 2的发布-订阅机制 72
3.1 主题通信的工作原理 72
3.2 Python实现主题交互 75
3.2.1 主题发布操作 75
3.2.2 如何订阅主题 81
3.3 主题通信模型 85
3.3.1 理论模型 85
3.3.2 C++基本操作 86
3.3.3 Python基本操作 88
3.3.4 自定义主题通信接口 89
3.3.5 C++实现接口调用 91
3.3.6 Python实现接口调用 96
3.4 小结 99
第4章 ROS 2交互机制(服务与参数) 100
4.1 服务通信 100
4.1.1 通信模型介绍 101
4.1.2 SRV功能自定义 102
4.1.3 C++调用自定义SRV 106
4.1.4 Python调用自定义.srv 111
4.2 参数服务器 117
4.2.1 参数服务器模型介绍 117
4.2.2 C++实现参数操作 119
4.2.3 Python实现参数操作 125
4.3 Python实现机器视觉识别 128
4.3.1 安装usb_cam包 128
4.3.2 启动USB摄像头 130
4.3.3 相机标定及使用 133
4.3.4 集成OpenCV功能 135
4.3.5 订阅相机发布节点信息 138
4.3.6 服务器端分析及实现 142
4.3.7 客户端分析及实现 147
4.4 Launch启动脚本 150
4.4.1 编写Launch脚本文件 150
4.4.2 ROS 2运行脚本 155
4.4.3 Launch脚本进阶 156
4.5 小结 159
第5章 ROS 2常用开发组件 160
5.1 TF坐标变换 160
5.1.1 坐标消息msg 161
5.1.2 静态坐标变换 162
5.1.3 动态坐标变换 166
5.1.4 多种坐标间的变换 170
5.1.5 坐标系关联关系 175
5.1.6 坐标变换示例 178
5.2 rqt可视化工具组件 188
5.3 RViz可视化工具 190
5.3.1 安装可视化工具 190
5.3.2 启动可视化工具 191
5.3.3 界面及预定义插件介绍 192
5.4 小结 196
第6章 ROS 2机器人建模与仿真 197
6.1 机器人系统建模与仿真介绍 197
6.1.1 常见机器人结构 198
6.1.2 机器人系统仿真 200
6.1.3 机器人系统仿真相关组件 201
6.2 RViz集成URDF组件 202
6.2.1 集成流程与操作 203
6.2.2 创建功能包和导入依赖包 203
6.2.3 使用URDF建模 205
6.2.4 Launch脚本编写 209
6.2.5 在RViz中显示创建的模型 211
6.2.6 RViz启动优化 215
6.3 URDF组件 216
6.3.1 URDF语法详解 217
6.3.2 URDF常用工具 228
6.3.3 练习 230
6.4 Xacro优化URDF 238
6.4.1 Xacro及使用详解 238
6.4.2 Xacro使用流程示例 240
6.4.3 Xacro优化实操 248
6.5 在URDF中使用Gazebo 259
6.5.1 安装并使用Gazebo 259
6.5.2 URDF集成Gazebo基本设置 261
6.5.3 Gazebo仿真环境搭建 263
6.5.4 在Gazebo中加载机器人 267
6.5.5 利用Gazebo扩展URDF 268
6.6 ros2_control使用介绍 274
6.6.1 ros2_control安装 274
6.6.2 使用Gazebo集成ros2_control 276
6.6.3 控制机器人 276
6.7 小结 279
第7章 智能导航系统开发案例 280
7.1 NAV2的导航功能结构及介绍 281
7.1.1 路径规划器 281
7.1.2 地图服务器 285
7.1.3 NAV2导航定位 287
7.1.4 运动控制器 289
7.1.5 导航行为树管理器 292
7.2 使用SLAM创建地图 295
7.2.1 SLAM创建地图的原理 295
7.2.2 SLAM Toolbox介绍 297
7.2.3 SLAM Toolbox启动 298
7.2.4 创建地图 302
7.2.5 地图保存 306
7.3 NAV2导航全流程实现 308
7.3.1 安装NAV2 308
7.3.2 NAV2参数设置 310
7.3.3 实现自主导航 316
7.3.4 运行自主导航 317
7.4 小结 321
第8章 视觉目标检测与追踪开发案例 322
8.1 视觉图像数据获取 322
8.1.1 ROS 2获取图像数据程序 322
8.1.2 仿真运行 328
8.2 OpenCV提取图像特征及目标定位 330
8.2.1 ROS 2提取颜色特征 330
8.2.2 目标定位程序实现 338
8.2.3 Gazebo仿真相机测试 343
8.3 基于ROS 2的视觉目标追踪 345
8.3.1 ROS 2视觉目标追踪配置 345
8.3.2 节点代码实现 349
8.3.3 运行测试 354
8.4 小结 358
