目录
第1章 机器人概述 1
1.1 机器人简介 1
1.1.1 机器人的概念 1
1.1.2 机器人的发展历程 2
1.1.3 机器人的分类 6
1.2 移动机器人简介 7
1.2.1 移动机器人整体框架 7
1.2.2 移动机器人的感知 8
1.2.3 移动机器人的控制 8
1.2.4 移动机器人的导航 9
1.2.5 移动机器人的运动规划 10
1.2.6 机器人操作系统 11
1.3 移动机器人发展 11
1.3.1 移动机器人的关键技术 11
1.3.2 移动机器人的发展趋势 13
第2章 ROS简介 15
2.1 ROS 概述 15
2.1.1 ROS 的产生 15
2.1.2 ROS 的发展 16
2.1.3 设计目标 16
2.2 ROS 主要特点 17
2.3 ROS 组织结构 19
2.3.1 计算图级 19
2.3.2 文件系统级 22
2.3.3 社区级 23
2.4 工作环境的搭建 23
2.4.1 ROS 的安装 24
2.4.2 ROS 安装常见问题及解决 30
第3章 ROS基础 33
3.1 基本概念 33
3.1.1 工作空间 33
3.1.2 文件系统 34
3.2 工作空间的搭建 34
3.2.1 创建工作空间 34
3.2.2 创建功能包 36
3.3 ROS 的运行 37
3.3.1 主题通信 37
3.3.2 服务通信 41
3.3.3 动作编程 44
3.4 常用命令与工具 49
3.4.1 基本命令汇总 49
3.4.2 launch 文件 51
3.4.3 TF 工具箱 52
3.4.4 Qt 工具箱 56
3.4.5 RViz 可视化工具 59
3.4.6 Gazebo 可视化工具 60
3.5 操作小海龟 61
3.6 ROS 编程实例 66
第4章 机器人定位技术 69
4.1 定位技术概述 69
4.2 激光雷达定位技术 69
4.2.1 激光雷达的工作原理 70
4.2.2 激光雷达数据 71
4.2.3 激光雷达定位 76
4.3 里程计定位技术 77
4.4 视觉定位技术 80
4.4.1 视觉里程计定位 80
4.4.2 视觉标记码定位 82
4.5 基于天然信源的定位技术 84
4.5.1 惯性导航 84
4.5.2 地磁定位 87
4.6 基于外置信源的定位技术 88
4.6. GPS 定位技术 88
4.6. UWB 定位技术 91
4.6. Wi-Fi 定位技术 94
4.6. 蓝牙定位技术 96
4.6. 蜂窝移动网络定位技术 98
4.6. 超声波定位技术 99
4.7 多传感器融合定位技术 100
4.7.1 位姿描述与坐标变换 101
4.7.2 卡尔曼滤波 106
4.7.3 多传感器融合 107
第5章 机器人SLAM技术 111
5.1 SLAM 概述 111
5.1.1 SLAM 经典框架 111
5.1.2 SLAM 问题引出 112
5.1.3 粒子滤波SLAM 113
5.1.4 FastSLAM 116
5.1.5 ROS 中SLAM 的实现 118
5.2 Gmapping 119
5.2.1 Gmapping 算法原理 119
5.2.2 Gmapping 算法实现 122
5.2.3 Gmapping 的节点配置与运行 125
5.2.4 Gmapping 建图仿真 128
5.3 Cartographer 130
5.3.1 Cartographer 功能包 131
5.3.2 Cartographer 的节点配置与运行 133
5.3.3 Cartographer 建图仿真 136
5.4 Hector-slam 137
5.4.1 Hector-slam 功能包 137
5.4.2 Hector-slam 的节点配置与运行 138
5.4.3 Hector-slam 建图仿真 141
第6章 机器人路径规划 144
6.1 路径规划概述 144
6.2 移动机器人路径规划算法 146
6.2.1 全局路径规划算法 146
6.2.2 局部路径规划算法 151
6.3 路径规划功能包 153
6.3.1 路径规划框架 153
6.3.2 move_base 、amcl 功能包 156
6.4 代价地图的配置 157
6.5 局部规划器的配置 158
6.6 机器人路径规划功能的Gazebo 仿真 160
第7章 Aibot机器人自主导航实例 164
7.1 Aibot 机器人介绍 164
7.1.1 Aibot 机器人硬件平台 164
7.1.2 Aibot 机器人电路设计 166
7.1.3 Aibot 机器人底层运动控制程序 167
7.2 多传感器融合定位 169
7.2.1 融合框架 169
7.2.2 里程计模型 170
7.2.3 IMU 数据解算 171
7.2.4 IMU 数据与里程计数据融合 171
7.3 Aibot 机器人的自主导航 173
7.3.1 Aibot 机器人导航流程 173
7.3.2 自主导航的软件实现方案 174
7.3.3 通信模块的软件实现 176
7.3.4 传感器数据处理模块的软件实现 180
7.3.5 运动控制的软件实现 186
7.3.6 建图与路径规划模块的软件实现 186
7.4 远程控制Aibot 导航 187
7.4.1 远程控制Aibot 建图 189
7.4.2 控制Aibot 小车进行自主路径规划 192
7.5 搭建导航机器人注意事项 193
7.5. 编码器协方差设置 193
7.5. 静态坐标变换的发布 194
7.5. 节点的通信关系 195
7.5. 机器人导航中的TF 树 195
7.5. 导航错误排查 197
参考文献 198