描述
內容簡介
|
作者簡介
胡春旭
ROS機器人社區「古月居」創始人,D-Robotics開發者生態負責人。專注於機器人操作系統及人工智慧相關技術的推廣與應用,撰寫了《ROS機器人開發實踐》、《移動機器人原理與應用(基於ROS作業系統)》等多本暢銷技術書。主導了基於RDK機器人開發者套件的全新機器人開發範式的研發工作,任教於多所高校及機器人/人工智慧教育平臺。曾獲2019 ROS全球十大影響力人物、ROS佈道師等榮譽稱號。
李喬龍 ROS機器人社區「古月居」負責人,負責古月居社區生態的推廣、建設和產品研發。主導設計了古月居Origin系列機器人套件。曾負責全國大學生智慧汽車競賽地平線賽項策劃與推廣,學生時期獲得多項全國機器人獎項。目前專注於機器人技術和人工智慧技術的推廣與應用。 |
目錄
◆第1部分 ROS 2 基礎原理
▍第1章 ROS:智慧型機器人的靈魂 1.1 智慧型機器人時代 1.2 ROS 發展歷程 1.2.1 ROS 的起源 1.2.2 ROS 的發展 1.2.3 ROS 的特點 1.3 ROS 2 與ROS 1 1.3.1 ROS 1 的局限性 1.3.2 全新的ROS 2 1.3.3 ROS 2 與ROS 1 的對比 1.4 ROS 2 安裝方法 1.4.1 Linux 是什麼 1.4.2 Ubuntu 是什麼 1.4.3 Ubuntu 作業系統安裝 1.4.4 ROS 2 系統安裝 1.5 ROS 2 命令列操作 1.5.1 Linux 中的命令列 1.5.2 海龜模擬實踐 1.5.3 ROS 2 中的命令列 1.6 本章小結
▍第2章 ROS 2 核心原理:建構機器人的基石 2.1 ROS 2 機器人開發流程 2.2 工作空間:機器人開發的大本營 2.2.1 工作空間是什麼 2.2.2 建立工作空間 2.2.3 編譯工作空間 2.2.4 設置環境變數 2.3 功能套件:機器人功能分類 2.3.1 功能套件是什麼 2.3.2 建立功能套件 2.3.3 功能套件的結構 2.3.4 編譯功能套件 2.4 節點:機器人的工作細胞 2.4.1 節點是什麼 2.4.2 節點程式設計方法(Python) 2.4.3 節點程式設計方法(C++) 2.4.4 節點的命令列操作 2.4.5 節點應用範例:物件辨識 2.5 話題:節點間傳遞資料的橋樑 2.5.1 話題是什麼 2.5.2 話題通訊模型 2.5.3 話題通訊程式設計範例 2.5.4 話題發行者程式設計方法(Python) 2.5.5 話題訂閱者程式設計方法(Python) 2.5.6 話題發行者程式設計方法(C++) 2.5.7 話題訂閱者程式設計方法(C++) 2.5.8 話題的命令列操作 2.5.9 話題應用範例:物件辨識(週期式) 2.6 服務:節點間的你問我答 2.6.1 服務是什麼 2.6.2 服務通訊模型 2.6.3 服務通訊程式設計範例 2.6.4 使用者端程式設計方法(Python) 2.6.5 服務端程式設計方法(Python) 2.6.6 使用者端程式設計方法(C++) 2.6.7 服務端程式設計方法(C++) 2.6.8 服務的命令列操作 2.6.9 服務應用範例:物件辨識(請求式) 2.7 通訊介面:資料傳遞的標準結構 2.7.1 通訊介面是什麼 2.7.2 通訊介面的定義方法 2.7.3 通訊介面的命令列操作 2.7.4 服務介面應用範例:請求物件辨識的座標 2.7.5 話題介面應用範例:週期性發佈物件辨識的座標 2.8 動作:完整行為的流程管理 2.8.1 動作是什麼 2.8.2 動作通訊模型 2.8.3 動作通訊程式設計範例 2.8.4 動作介面的定義方法 2.8.5 服務端程式設計方法(Python) 2.8.6 使用者端程式設計方法(Python) 2.8.7 使用者端程式設計方法(C++) 2.8.8 服務端程式設計方法(C++) 2.8.9 動作的命令列操作 2.9 參數:機器人系統的全域字典 2.9.1 參數是什麼 2.9.2 參數通訊模型 2.9.3 參數的命令列操作 2.9.4 參數程式設計方法(Python) 2.9.5 參數程式設計方法(C++) 2.9.6 參數應用範例:設置物件辨識的設定值 2.10 資料分發服務(DDS):機器人的神經網路 2.10.1 DDS 是什麼 2.10.2 DDS 通訊模型 2.10.3 品質服務策略 2.10.4 命令列中配置DDS 的QoS 2.10.5 DDS 程式設計範例 2.11 分散式通訊 2.11.1 分散式通訊是什麼 2.11.2 SSH 遠端網路連接 2.11.3 分散式資料傳輸 2.11.4 分散式網路分組 2.11.5 海龜分散式通訊範例 2.12 本章小結
▍第3章 ROS 2 常用工具:讓機器人開發更便捷 3.1 Launch:多節點啟動與配置指令稿 3.1.1 多節點啟動方法 3.1.2 命令列參數配置 3.1.3 資源重映射 3.1.4 ROS 參數設置 3.1.5 Launch 開機檔案巢狀結構包含 3.2 tf:機器人座標系管理系統 3.2.1 機器人中的座標系 3.2.2 tf 命令列操作 3.2.3 靜態tf 廣播(Python) 3.2.4 靜態tf 廣播(C++) 3.2.5 動態tf 廣播(Python) 3.2.6 動態tf 廣播(C++) 3.2.7 tf 監聽(Python) 3.2.8 tf 監聽(C++) 3.2.9 tf 綜合應用範例:海龜跟隨(Python) 3.2.10 tf 綜合應用範例:海龜跟隨(C++) 3.3 Gazebo:機器人三維物理模擬平臺 3.3.1 Gazebo 介紹 3.3.2 機器人模擬範例 3.3.3 感測器模擬範例 3.4 RViz:資料視覺化平臺 3.4.1 RViz 介紹 3.4.2 資料視覺化操作流程 3.4.3 應用範例一:tf 資料視覺化 3.4.4 應用範例二:圖像資料視覺化 3.4.5 Gazebo 與RViz 的關係 3.5 rosbag:資料記錄與重播 3.5.1 記錄資料 3.5.2 重播資料 3.6 rqt:模組化視覺化工具箱 3.6.1 rqt 介紹 3.6.2 日誌顯示 3.6.3 影像顯示 3.6.4 發佈話題/ 服務資料 3.6.5 繪製資料曲線 3.6.6 資料封包管理 3.6.7 節點視覺化 3.7 ROS 2 開發環境配置 3.7.1 版本管理軟體git 3.7.2 整合式開發環境VSCode 3.8 本章小結
◆第2部分 ROS 2 機器人設計 ▍第4章 ROS 2 機器人模擬:零成本玩轉機器人 4.1 機器人的定義與組成 4.2 URDF 機器人建模 4.2.1 連桿的描述 4.2.2 關節的描述 4.2.3 完整機器人模型 4.3 建立機器人URDF 模型 4.3.1 機器人模型功能套件 4.3.2 機器人模型視覺化 4.3.3 機器人模型解析 4.4 XACRO 機器人模型最佳化 4.4.1 XACRO 檔案常見語法 4.4.2 機器人模型最佳化 4.4.3 機器人模型視覺化 4.5 完善機器人模擬模型 4.5.1 完善物理參數 4.5.2 增加控制器外掛程式 4.6 Gazebo 機器人模擬 4.6.1 在Gazebo 中載入機器人模型 4.6.2 機器人運動控制模擬 4.6.3 RGB 相機模擬與視覺化 4.6.4 RGBD 相機模擬與視覺化 4.6.5 雷射雷達模擬與視覺化 4.7 本章小結
▍第5章 ROS 2 機器人建構:從模擬到實物 5.1 機器人從模擬到實物 5.1.1 案例剖析 5.1.2 機器人設計 5.1.3 軟體架構設計 5.1.4 電腦端開發環境配置 5.1.5 機器人模擬測試 5.2 驅動系統設計:讓機器人動得了 5.2.1 馬達驅動原理:從PWM 到H 橋 5.2.2 馬達正反轉控製程式設計 5.3 底盤運動控制:讓機器人動得穩 5.3.1 馬達編碼器測速原理 5.3.2 編碼器測速程式設計 5.3.3 馬達閉環控制方法 5.3.4 馬達閉環控製程式設計 5.4 運動學正逆解:讓機器人動得準 5.4.1 常見機器人運動學模型 5.4.2 差速運動學原理 5.4.3 差速運動學逆解:計算兩個輪子的轉速 5.4.4 差速運動學正解:計算機器人整體的速度 5.5 運動控制器中還有什麼 5.5.1 電源管理:一個輸入多種輸出 5.5.2 IMU:測量機器人的姿態變化 5.5.3 人機互動:底層狀態清晰明瞭 5.6 機器人控制系統:從「肌肉」到「大腦」 5.6.1 控制系統的計算平臺 5.6.2 控制系統的燒錄與配置 5.7 本章小結
▍第6章 ROS 2 控制與感知:讓機器人動得了、看得見 6.1 機器人通訊協定開發 6.1.1 通訊協定設計 6.1.2 通訊協定範例解析 6.1.3 運動控制器端協定開發(下位機) 6.1.4 應用處理器端協定開發(上位機) 6.2 機器人ROS 2 底盤驅動開發 6.2.1 機器人ROS 2 底盤驅動 6.2.2 速度控制話題的訂閱 6.2.3 里程計話題與tf 的維護 6.2.4 機器人狀態的動態監控 6.3 機器人運動程式設計與視覺化 6.3.1 ROS 2 速度控制訊息定義 6.3.2 運動程式設計與視覺化 6.4 相機驅動與圖像資料 6.4.1 常用相機類型 6.4.2 相機驅動與視覺化 6.4.3 ROS 2 影像訊息定義 6.4.4 三維相機驅動與視覺化 6.4.5 ROS 2 點雲訊息定義 6.5 雷射雷達驅動與視覺化 6.5.1 常見雷射雷達類型 6.5.2 ROS 2 雷達訊息定義 6.5.3 雷射雷達驅動與資料視覺化 6.6 IMU 驅動與資料視覺化 6.6.1 ROS 2 IMU 訊息定義 6.6.2 IMU 驅動與視覺化 6.7 本章小結
◆第3部分 ROS 2 機器人應用 ▍第7章 ROS 2 視覺應用:讓機器人看懂世界 7.1 機器視覺原理簡介 7.2 ROS 2 相機標定 7.2.1 安裝相機標定功能套件 7.2.2 執行相機標定節點 7.2.3 相機標定流程 7.2.4 相機標定檔案的使用 7.2.5 二元相機標定 7.3 OpenCV 影像處理 7.3.1 安裝OpenCV 7.3.2 在ROS 2 中使用OpenCV 7.4 視覺應用一:視覺巡線 7.4.1 基本原理與實現框架 7.4.2 機器人視覺巡線模擬 7.4.3 真實機器人視覺巡線 7.5 視覺應用二:QR Code 辨識 7.5.1 QR Code 掃描函式庫——Zbar 7.5.2 相機辨識QR Code 7.5.3 真實機器人相機辨識QR Code 7.5.4 真實機器人QR Code 跟隨 7.6 機器學習應用一:深度學習視覺巡線 7.6.1 基本原理與實現框架 7.6.2 深度學習視覺巡線應用 7.6.3 資料獲取與模型訓練 7.6.4 模型效果評估測試 7.6.5 在機器人中部署模型 7.7 機器學習應用二:YOLO 物件辨識 7.7.1 基本原理與實現框架 7.7.2 YOLO 物件辨識部署 7.7.3 資料獲取與模型訓練 7.7.4 機器人物件辨識與跟隨 7.8 本章小結
▍第8章 ROS 2 地圖建構:讓機器人理解環境 8.1 SLAM 地圖建構原理 8.1.1 SLAM 是什麼 8.1.2 SLAM 基本原理 8.1.3 SLAM 後端最佳化 8.2 SLAM Toolbox 地圖建構 8.2.1 演算法原理介紹 8.2.2 安裝與配置方法 8.2.3 模擬環境中的SLAM Toolbox 地圖建構 8.2.4 真實機器人SLAM Toolbox 地圖建構 8.3 Cartographer:二維地圖建構 8.3.1 演算法原理介紹 8.3.2 安裝與配置方法 8.3.3 模擬環境中的Cartographer 地圖建構 8.3.4 真實機器人Cartographer 地圖建構 8.4 ORB:視覺地圖建構 8.4.1 演算法原理介紹 8.4.2 安裝與配置方法 8.4.3 真實機器人ORB 地圖建構 8.5 RTAB:三維地圖建構 8.5.1 演算法原理介紹 8.5.2 安裝與配置方法 8.5.3 模擬環境中的RTAB 地圖建構 8.5.4 真實機器人RTAB 地圖建構 8.6 本章小結
▍第9章 ROS 2 自主導航:讓機器人運動自由 9.1 機器人自主導航原理 9.2 Nav2 自主導航框架 9.2.1 系統框架 9.2.2 全域導航 9.2.3 局部導航 9.2.4 定位功能 9.3 Nav2 安裝與體驗 9.3.1 Nav2 安裝方法 9.3.2 Nav2 案例體驗 9.4 機器人自主導航模擬 9.4.1 Nav2 參數配置 9.4.2 Launch 開機檔案配置 9.4.3 機器人自主導航模擬 9.5 機器人自主導航實踐 9.5.1 導航地圖配置 9.5.2 Nav2 參數與Launch 開機檔案配置 9.5.3 機器人自主導航實踐 9.6 機器人自主導航程式設計 9.6.1 功能執行 9.6.2 程式設計方法(C++) 9.6.3 程式設計方法(Python) 9.7 機器人自主探索應用 9.7.1 Nav2+SLAM Toolbox 自主探索應用 9.7.2 Nav2+Cartographer 自主探索應用 9.8 本章小結 |
序
|