機器人 SLAM 導航:核心技術與實戰

張虎

  • 出版商: 機械工業
  • 出版日期: 2022-01-01
  • 定價: $894
  • 售價: 8.5$760
  • 語言: 簡體中文
  • 頁數: 540
  • 裝訂: 平裝
  • ISBN: 7111697421
  • ISBN-13: 9787111697428
  • 相關分類: 機器人製作 Robots
  • 下單後立即進貨 (約4週~6週)

買這商品的人也買了...

商品描述

全書分為4部分。
第1部分對基礎知識展開講解,包括Linux基礎和ROS入門。
第2部分主要關註一個實際的機器人中的硬件和核心傳感器模塊的構造,
重點講解機器人上的傳感器、差分底盤、樹莓派主板開發方面的知識。
第3部分是SLAM地圖構建的核心算法,SLAM中的數學基礎、基於激光的SLAM系統、
基於視覺的SLAM系統、混合SLAM系統、新型SLAM系統。
第4部分是自主導航相關的核心技術與應用,包括自主導航中的數學基礎、
基於地圖的導航、基於環境探索建圖的導航、強化學習在機器人導航中的應用。
 通過閱讀本書,讀者不僅可以自己設計出一套SLAM導航機器人出來,
還可以在軟硬件結合的環境中提高自己的C++/Python/Java方面的編程能力,
同時還可以接觸到流行的SLAM算法的實際應用。

作者簡介

張虎,深圳市睿思智行科技有限公司CEO。曾就職於深圳市智能機器人研究院,主持機器人自航方面的研究項目。工作期間以網名“小虎哥哥愛學習”在知乎、CSDN、bilibili等平台創作了大量機器人SLAM導航相關的優質博客文章及教程,深受廣大網友的喜愛。他對強人工智能的研究很好感興趣,並致力於將具有優選智能的機器人進行產業化落地。

目錄大綱


前言
編程基礎篇
第1章 ROS入門必#備知識  2
1.1 ROS簡介  2
1.1.1 ROS的性能特色  2
1.1.2 ROS的發行版本  3
1.1.3 ROS的學習方法  3
1.2 ROS開發環境的搭建  3
1.2.1 ROS的安裝  4
1.2.2 ROS文件的組織方式  4
1.2.3 ROS網絡通信配置  5
1.2.4 集成開發工具  5
1.3 ROS系統架構  5
1.3.1 從計算圖視角理解ROS架構  6
1.3.2 從文件系統視角理解ROS架構  7
1.3.3 從開源社區視角理解ROS架構  8
1.4 ROS調試工具  8
1.4.1 命令行工具  9
1.4.2 可視化工具  9
1.5 ROS節點通信  10
1.5.1 話題通信方式  12
1.5.2 服務通信方式  15
1.5.3 動作通信方式  19
1.6 ROS的其他重要概念  25
1.7 ROS 2.0展望  28
1.8 本章小結  28

第2章 C++編程範式  29
2.1 C++工程的組織結構  29
2.1.1 C++工程的一般組織結構  29
2.1.2 C++工程在機器人中的組織結構  29
2.2 C++代碼的編譯方法  30
2.2.1 使用g++編譯代碼  31
2.2.2 使用make編譯代碼  32
2.2.3 使用CMake編譯代碼  32
2.3 C++編程風格指南  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.1 SIFT特徵點  44
3.4.2 SURF特徵點  50
3.4.3 ORB特徵點  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.3 RGB-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.1 X86與ARM主機對比  119
5.2 ARM主機樹莓派3B+  120
5.2.1 安裝Ubuntu MATE 18.04  120
5.2.2 安裝ROS melodic  122
5.2.3 裝機軟件與系統設置  122
5.3 ARM主機RK3399  127
5.4 ARM主機Jetson-tx2  128
5.5 分佈式架構主機  129
5.5.1 ROS網絡通信  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.1 SLAM發展簡史  158
7.1.1 數據關聯、收斂和一致性  160
7.1.2 SLAM的基本理論  161
7.2 SLAM中的概率理論  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.1 Gmapping算法  223
8.1.1 原理分析  223
8.1.2 源碼解讀  228
8.1.3 安裝與運行  233
8.2 Cartographer算法  240
8.2.1 原理分析  240
8.2.2 源碼解讀  247
8.2.3 安裝與運行  258
8.3 LOAM算法  266
8.3.1 原理分析  266
8.3.2 源碼解讀  267
8.3.3 安裝與運行  270
8.4 本章小結  270

第9章 視覺SLAM系統  272
9.1 ORB-SLAM2算法  274
9.1.1 原理分析  274
9.1.2 源碼解讀  310
9.1.3 安裝與運行  319
9.1.4 拓展  327
9.2 LSD-SLAM算法  329
9.2.1 原理分析  329
9.2.2 源碼解讀  334
9.2.3 安裝與運行  337
9.3 SVO算法  338
9.3.1 原理分析  338
9.3.2 源碼解讀  341
9.4 本章小結  341

第10章 其他SLAM系統  344
10.1 RTABMAP算法  344
10.1.1 原理分析  344
10.1.2 源碼解讀  351
10.1.3 安裝與運行  357
10.2 VINS算法  362
10.2.1 原理分析  364
10.2.2 源碼解讀  373
10.2.3 安裝與運行  376
10.3 機器學習與SLAM  379
10.3.1 機器學習  379
10.3.2 CNN-SLAM算法  411
10.3.3 DeepVO算法  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.1 ros-navigation導航系統  470
12.1.1 原理分析  470
12.1.2 源碼解讀  475
12.1.3 安裝與運行  479
12.1.4 路徑規劃改進  492
12.1.5 環境探索  496
12.2 riskrrt導航系統  498
12.3 autoware導航系統  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
附錄A Linux與SLAM性能優化的探討  512
附錄B 習題  523