预购商品
书目分类
特别推荐
全書分為4部分。第1部分對基礎知識展開講解,包括Linux基礎和ROS入門。第2部分主要關注一個實際的機器人中的硬體和核心感測器模組的構造,重點講解機器人上的感測器、差分底盤、樹莓派主機板開發方面的知識。第3部分是SLAM地圖構建的核心演算法,SLAM中的數學基礎、基於鐳射的SLAM系統、基於視覺的SLAM系統、混合SLAM系統、新型SLAM系統。第4部分是自主導航相關的核心技術與應用,包括自主導航中的數學基礎、基於地圖的導航、基於環境探索建圖的導航、強化學習在機器人導航中的應用。 通過閱讀本書,讀者不僅可以自己設計出一套SLAM導航機器人出來,還可以在軟硬體結合的環境中提高自己的C++/Python/Java方面的程式設計能力,同時還可以接觸到流行的SLAM演算法的實際應用。
序 前言 程式設計基礎篇 第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
客服公告
热门活动
订阅电子报