目录
前言
第1章 ROS简介 1
1.1 ROS的历史 1
1.2 ROS安装 4
1.2.1 ROS Melodic安装 4
1.2.2 ROS Noetic安装 5
第2章 ROS框架 8
2.1 ROS总体框架 8
2.1.1 文件系统级 8
2.1.2 计算图级 9
2.1.3 社区级 11
2.2 ROS功能包 11
2.2.1 下载已有功能包并编译运行 14
2.2.2 创建功能包并编译运行 15
2.3 ROS基本命令 18
2.3.1 ROS文件系统命令 18
2.3.2 ROS核心命令 22
2.4 坐标变换工具TF 31
2.5 数据记录和回放工具rosbag 34
第3章 可视化工具RViz与仿真工具Gazebo 38
3.1 RViz 38
3.1.1 RViz安装 38
3.1.2 RViz使用 38
3.2 Gazebo 41
3.2.1 运行Gazebo 41
3.2.2 Gazebo的组成 43
3.2.3 URDF模型 45
3.2.4 Solidworks导出URDF模型 61
3.2.5 SDF模型 68
3.3 Gazebo示例:创建并使用Velodyne激光传感器 69
3.3.1 创建Velodyne模型 69
3.3.2 添加Velodyne模型外观信息 79
3.3.3 添加Velodyne模型控制插件 87
3.3.4 安装Velodyne至机器人并测试 91
3.4 Gazebo示例:搭建移动机器人 92
3.4.1 搭建Robot模型 92
3.4.2 添加mesh效果 99
3.4.3 添加sensor传感器 102
第4章 语音识别及语音合成 104
4.1 语音识别原理简介 104
4.2 语音合成原理简介 105
4.3 应用实例 106
4.3.1 CMU Sphinx英文语音识别 106
4.3.2 CMU Festival英文语音合成 116
4.3.3 家度机器人中文语音交互 120
第5章 视觉系统 132
5.1 OpenCV库 132
5.1.1 OpenCV库简介 132
5.1.2 OpenCV库与ROS的接口 133
5.2 Point Cloud点云及处理流程 136
5.3 PCL库 139
5.3.1 PCL库简介 139
5.3.2 PCD文件 142
5.3.3 PCL库与ROS的接口 144
5.4 体感相机在TurtleBot2上的应用 145
5.4.1 体感相机简介 145
5.4.2 OpenCV人脸检测 148
5.4.3 PCL点云滤波 154
第6章 导航定位 158
6.1 SLAM 158
6.1.1 SLAM问题的概率模型 158
6.1.2 EKF SLAM方法 161
6.1.3 Particle Filters SLAM方法 163
6.1.4 基于图论的SLAM方法 165
6.1.5 地图表示方法 167
6.1.6 基于TurtleBot3平台的仿真SLAM实验 171
6.1.7 基于TurtleBot2平台的真实SLAM实验 175
6.2 导航 182
6.2.1 简介 182
6.2.2 已知地图的导航实验 183
第7章 运动规划 188
7.1 背景与动机 188
7.2 MoveIt!介绍 188
7.2.1 MoveIt!结构 188
7.2.2 MoveIt!安装 190
7.2.3 MoveIt!运动规划 190
7.2.4 MoveIt!场景规划 191
7.2.5 MoveIt!运动学求解器 191
7.2.6 MoveIt!碰撞检测 191
7.3 创建MoveIt!功能包 191
7.3.1 使用安装向导工具生成ROS Noetic Panda单臂MoveIt!配置文件包 192
7.3.2 使用安装向导工具生成ROSIndigoPR2双臂MoveIt!配置文件包 205
7.4 使用RViz插件测试MoveIt!功能包 214
7.4.1 MoveIt!的RViz插件 214
7.4.2 路径规划 216
7.5 使用命令行测试MoveIt!功能包 . 218
7.6 使用MoveIt!API接口实现路径规划 220
参考文献 231