先上个目录,书不在手头时,方便自己能快速查询。
序
前言
编程基础篇
第1章ROS入门必备知识 2
1.1ROS简介 2
1.1.1ROS的性能特色 2
1.1.2ROS的发行版本 3
1.1.3ROS的学习方法 3
1.2ROS开发环境的搭建 3
1.2.1ROS的安装 4
1.2.2ROS文件的组织方式 4
1.2.3ROS网络通信配置 5
1.2.4集成开发工具 5
1.3ROS系统架构 5
1.3.1从计算图视角理解ROS架构 6
1.3.2从文件系统视角理解ROS架构 7
1.3.3从开源社区视角理解ROS架构 8
1.4ROS调试工具 8
1.4.1命令行工具 9
1.4.2可视化工具 9
1.5ROS节点通信 10
1.5.1话题通信方式 12
1.5.2服务通信方式 15
1.5.3动作通信方式 19
1.6ROS的其他重要概念 25
1.7ROS 2.0展望 28
1.8本章小结 28
第2章C++编程范式 29
2.1C++工程的组织结构 29
2.1.1C++工程的一般组织结构 29
2.1.2C++工程在机器人中的组织结构 29
2.2C++代码的编译方法 30
2.2.1使用g++编译代码 31
2.2.2使用make编译代码 32
2.2.3使用CMake编译代码 32
2.3C++编程风格指南 33
2.4本章小结 34
第3章OpenCV图像处理 35
3.1认识图像数据 35
3.1.1获取图像数据 35
3.1.2访问图像数据 36
3.2图像滤波 37
3.2.1线性滤波 37
3.2.2非线性滤波 38
3.2.3形态学滤波 39
3.3图像变换 40
3.3.1射影变换 40
3.3.2霍夫变换 42
3.3.3边缘检测 42
3.3.4直方图均衡 43
3.4图像特征点提取 44
3.4.1SIFT特征点 44
3.4.2SURF特征点 50
3.4.3ORB特征点 52
3.5本章小结 54
硬件基础篇
第4章机器人传感器 56
4.1惯性测量单元 56
4.1.1工作原理 56
4.1.2原始数据采集 60
4.1.3参数标定 65
4.1.4数据滤波 73
4.1.5姿态融合 75
4.2激光雷达 91
4.2.1工作原理 92
4.2.2性能参数 94
4.2.3数据处理 96
4.3相机 100
4.3.1单目相机 101
4.3.2双目相机 107
4.3.3RGB-D相机 109
4.4带编码器的减速电机 111
4.4.1电机 111
4.4.2电机驱动电路 112
4.4.3电机控制主板 113
4.4.4轮式里程计 117
4.5本章小结 118
第5章机器人主机 119
5.1X86与ARM主机对比 119
5.2ARM主机树莓派3B+ 120
5.2.1安装Ubuntu MATE 18.04 120
5.2.2安装ROS melodic 122
5.2.3装机软件与系统设置 122
5.3ARM主机RK3399 127
5.4ARM主机Jetson-tx2 128
5.5分布式架构主机 129
5.5.1ROS网络通信 130
5.5.2机器人程序的远程开发 130
5.6本章小结 131
第6章机器人底盘 132
6.1底盘运动学模型 132
6.1.1两轮差速模型 132
6.1.2四轮差速模型 136
6.1.3阿克曼模型 140
6.1.4全向模型 144
6.1.5其他模型 148
6.2底盘性能指标 148
6.2.1载重能力 148
6.2.2动力性能 148
6.2.3控制精度 150
6.2.4里程计精度 150
6.3典型机器人底盘搭建 151
6.3.1底盘运动学模型选择 152
6.3.2传感器选择 152
6.3.3主机选择 153
6.4本章小结 155
SLAM篇
第7章SLAM中的数学基础 158
7.1SLAM发展简史 158
7.1.1数据关联、收敛和一致性 160
7.1.2SLAM的基本理论 161
7.2SLAM中的概率理论 163
7.2.1状态估计问题 164
7.2.2概率运动模型 166
7.2.3概率观测模型 171
7.2.4概率图模型 173
7.3估计理论 182
7.3.1估计量的性质 182
7.3.2估计量的构建 183
7.3.3各估计量对比 190
7.4基于贝叶斯网络的状态估计 193
7.4.1贝叶斯估计 194
7.4.2参数化实现 196
7.4.3非参数化实现 202
7.5基于因子图的状态估计 206
7.5.1非线性最小二乘估计 206
7.5.2直接求解方法 206
7.5.3优化方法 208
7.5.4各优化方法对比 218
7.5.5常用优化工具 219
7.6典型SLAM算法 221
7.7本章小结 221
第8章激光SLAM系统 223
8.1Gmapping算法 223
8.1.1原理分析 223
8.1.2源码解读 228
8.1.3安装与运行 233
8.2Cartographer算法 240
8.2.1原理分析 240
8.2.2源码解读 247
8.2.3安装与运行 258
8.3LOAM算法 266
8.3.1原理分析 266
8.3.2源码解读 267
8.3.3安装与运行 270
8.4本章小结 270
第9章视觉SLAM系统 272
9.1ORB-SLAM2算法 274
9.1.1原理分析 274
9.1.2源码解读 310
9.1.3安装与运行 319
9.1.4拓展 327
9.2LSD-SLAM算法 329
9.2.1原理分析 329
9.2.2源码解读 334
9.2.3安装与运行 337
9.3SVO算法 338
9.3.1原理分析 338
9.3.2源码解读 341
9.4本章小结 341
第10章其他SLAM系统 344
10.1RTABMAP算法 344
10.1.1原理分析 344
10.1.2源码解读 351
10.1.3安装与运行 357
10.2VINS算法 362
10.2.1原理分析 364
10.2.2源码解读 373
10.2.3安装与运行 376
10.3机器学习与SLAM 379
10.3.1机器学习 379
10.3.2CNN-SLAM算法 411
10.3.3DeepVO算法 413
10.4本章小结 414
自主导航篇
第11章自主导航中的数学基础 418
11.1自主导航 418
11.2环境感知 420
11.2.1实时定位 420
11.2.2环境建模 421
11.2.3语义理解 422
11.3路径规划 422
11.3.1常见的路径规划算法 423
11.3.2带约束的路径规划算法 430
11.3.3覆盖的路径规划算法 434
11.4运动控制 435
11.4.1基于PID的运动控制 437
11.4.2基于MPC的运动控制 438
11.4.3基于强化学习的运动控制 441
11.5强化学习与自主导航 442
11.5.1强化学习 443
11.5.2基于强化学习的自主导航 465
11.6本章小结 467
第12章典型自主导航系统 470
12.1ros-navigation导航系统 470
12.1.1原理分析 470
12.1.2源码解读 475
12.1.3安装与运行 479
12.1.4路径规划改进 492
12.1.5环境探索 496
12.2riskrrt导航系统 498
12.3autoware导航系统 499
12.4导航系统面临的一些挑战 500
12.5本章小结 500
第13章机器人SLAM导航综合实战 502
13.1运行机器人上的传感器 502
13.1.1运行底盘的ROS驱动 503
13.1.2运行激光雷达的ROS驱动 503
13.1.3运行IMU的ROS驱动 504
13.1.4运行相机的ROS驱动 504
13.1.5运行底盘的urdf模型 505
13.1.6传感器一键启动 506
13.2运行SLAM建图功能 506
13.2.1运行激光SLAM建图功能 507
13.2.2运行视觉SLAM建图功能 508
13.2.3运行激光与视觉联合建图功能 508
13.3运行自主导航 509
13.4基于自主导航的应用 510
13.5本章小结 511
附录ALinux与SLAM性能优化的探讨 512
附录B习题 523
参考:
/xiihoo/Books_Robot_SLAM_Navigation
/xiihoo-robot/Books_Robot_SLAM_Navigation