特價 -20%

了解物理世界的AI – 搶先了解ROS2智慧機器人OS開發 DM2573

原始價格:NT$1,080。目前價格:NT$864。

出版商 深智數位股份有限公司
出版日期 2025年09月19日
語言 繁體中文
頁數 632
ISBN 9786267757307

已售完

貨號: DM2573 Categories: ,

描述

內容簡介

☆ROS 2 核心架構與通訊機制深度解析

☆ROS 2 節點、話題、服務、動作完整實作

☆DDS 通訊模型與QoS參數實務設定

☆tf 座標系統操作與動態轉換程式開發

☆Gazebo 模擬環境與 URDF/XACRO 模型建構

☆ROS 2 驅動層設計:從PWM到閉環控制實作

☆差速運動學正逆解與底盤驅動開發

☆相機標定、影像處理與 OpenCV 整合應用

☆深度學習視覺巡線與 YOLO 物件辨識部署

☆SLAM Toolbox、Cartographer、ORB 與 RTAB地圖建構實戰

☆Nav2 導航框架全域規劃、局部避障與定位技術實務

☆rqt、rosbag 與 RViz 資料視覺化工具詳解

☆ROS 2 分散式通訊與 SSH 網路整合部署

☆C++ 與 Python 雙語言範例完整提供

 

【內容簡介】

本書共分三部分、九章,完整涵蓋ROS 2在實際機器人開發中的應用。

第一部分為基礎原理篇(第1至第3章),說明ROS 2的核心概念與技術基礎,包括節點、話題、服務、動作、參數機制,並深入解析ROS 2所採用的DDS通訊架構與QoS設定方式,此外也介紹實務開發常用的工具,如ros2 launch、tf變換、RViz可視化、rosbag記錄與Gazebo模擬環境的整合方法。

第二部分為機構與驅動篇(第4至第6章),從機器人建模的URDF與XACRO語法開始,延伸到機構模擬與差速底盤的運動學正逆解與實作,並包含感測器資料處理、馬達PWM控制、編碼器讀值、PID閉環控制與ROS 2硬體驅動的整合流程。

第三部分為應用實作篇(第7至第9章),涵蓋影像處理與機器視覺模組建置,包含OpenCV影像分析、YOLO物件偵測與視覺巡線應用,並介紹常見SLAM建圖方案如SLAM Toolbox、Cartographer與RTAB-Map的使用流程與設定方式,最後完整說明導航框架Nav2的架構設計、路徑規劃、障礙物避讓與自主探索參數調校方法,協助開發者快速建立具備自我定位與導航能力的智慧型移動機器人。

 

作者簡介

胡春旭

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 本章小結

 

【前言】

這本書,講機器人作業系統(ROS),更講機器人。

►ROS 緣起

2007 年,一群懷揣夢想的年輕人,正在史丹佛大學的機器人實驗室裡進行一場腦力激盪:如果可以開發一款硬體足夠強大的機器人,再搭配足夠好用的軟體系統,那麼在此之上開發的應用功能就可以被快速分享了。舉例來說,我做的自主導航功能你可以用,你做的物體抓取功能我也可以用,只需開發一個標準化的軟硬體平臺,在此之上的應用就會逐漸流行,將會打造機器人領域的全新「爆品」。類似的原理造就了以電腦為平臺的電腦時代,和以手機為平臺的行動網際網路時代,下一個以機器人為核心的智慧型機器人時代,是否也會遵循這樣的邏輯?

將近20 年過去了,以「事後諸葛亮」的角度來看,當時那群年輕人花重金打造的服務機器人並沒有走進各家各戶。機器人不像電腦或手機,它需要和外界環境產生多種多樣的互動,硬體形態非常難以統一,小到奈米醫療機器人、家用娛樂機器人,大到智慧駕駛汽車、人形機器人,都是未來會並存的機器人形態。不過,當年遵循「提高機器人軟體重複使用率」思想開發的機器人作業系統——ROS,在2010 年開放原始碼之後快速發展,助推過去十幾年機器人行業的繁榮,逐漸成為智慧型機器人開發的主流標準。

當然,ROS 的快速發展也遠超那群年輕人的預期,本來只是為一款家用服務機器人設計的系統,被逐漸用於巡檢、運輸、農業等許多領域。需求越來越多,問題也越來越多,為了打造一款能夠成為通用機器人標準化軟體平臺的「作業系統」,ROS 2 在2014 年問世,之後推出多個測試版本,並於2017 年年底發佈第一個正式版本。截至本書定稿時,ROS 2 全新的穩定版本Jazzy Jalisco 發佈,這也代表著ROS 2 走向成熟。

智慧型機器人時代

在ROS 2 快速迭代的同時,人工智慧和機器人行業也發生了天翻地覆的變化。ChatGPT 如一聲驚雷,掀開了人工智慧的大模型時代。相比過去的深度學習,大模型有更大的模型規模,就像一個有更多神經元的大腦一樣,更加聰明、穩定。在ChatGPT 之後,全球湧現了數百種大模型,這些大模型快速與各行各業結合。在機器人領域,原本遭受諸多詬病的智慧化問題,也因為大模型的出現,而擁有了新的可能。

同時,機器人正在從工廠走向生活,餐廳裡有送餐機器人,酒店裡有送物機器人,家裡有掃地機器人,路面上有自動駕駛汽車,再加上已然成為熱點的人形機器人,機器人行業從底層硬體,到軟體系統,再到智慧化應用,正在逐漸成熟,智慧型機器人時代的序幕已經緩緩拉開。

我從2008 年開始開發機器人,2011 年接觸ROS,2012 年創辦了「古月居」機器人社區,2022 年開始打造RDK 機器人開發者套件,親眼見證了ROS 與機器人行業的相伴快速成長,也有幸和許多夥伴一起助推ROS 在國內的普及應用。如今,「古月居」已經成為匯聚了200 多萬名開發者的機器人社區,RDK 也正成為智慧型機器人開發套件的首選,一個全新的智慧型機器人時代正在向大家招手。

本書特色和內容

本書匯聚了我過去十幾年的機器人開發經驗,雖然將ROS 作為貫穿全書的主線,但更重要的是告訴所有讀者:ROS 既是開發機器人的軟體平臺,也是軟體工具,在開發機器人時,不僅要會用這個工具,還要懂機器人開發的諸多原理。所以,本書不僅會詳細講解ROS 2 的基本概念,更會介紹如何將這些概念應用在機器人開發中,同時指導讀者從零建構一個完整的機器人系統。

本書共有9 章,分為三部分。

第一部分(第1~3 章)介紹ROS 2 基礎原理:主要講解ROS 2 的發展歷程、核心原理和元件工具,提供大量的程式設計和使用範例,為讀者全面展示ROS2 的基礎原理和功能。

第二部分(第4~6 章)介紹ROS 2 機器人設計:主要講解如何使用ROS 2設計一個模擬機器人和實物機器人,有條件的讀者甚至可以根據書中內容自己做一個機器人。

第三部分(第7~9 章)介紹ROS 2 機器人應用:主要講解使用ROS 2 開發機器人視覺辨識、地圖建構和自主導航等許多應用的方法,讓機器人不僅動得了,還能看懂和理解周圍的環境,並且產生進一步的互動運動。

本書採用最新穩定版本ROS 2 系統和全新一代的Gazebo 機器人模擬平臺,絕大部分功能和原始程式可以在單獨的電腦和Gazebo 模擬平臺上運行。同時,本書介紹實物機器人的架設方法,並且在實物機器人上實現相應的功能。配套原始程式都加入了中文註釋,同時針對核心內容提供C++ 和Python 兩個版本,方便讀者理解。

所以,本書不僅適合希望了解、學習、應用ROS 2 的機器人初學者,也適合有一定經驗的機器人開發工程師,同時可以作為資深機器人開發者的參考手冊。

致謝

本書的出版離不開許多「貴人」的幫助。感謝我的妻子薛先茹,謝謝你陪我輾轉多地並一直無條件支持我;感謝兩個對世界充滿好奇的小朋友胡敬然、胡澤然,是你們給了我前進的動力和思考的源泉;感謝電子工業出版社的支持,鄭柳潔編輯為本書提供了很多寶貴建議,並組織推動本書順利出版,張晶老師為本書的編排付出了大量心血;感謝本書的另一位作者李喬龍,配合我完成了全書的寫作和修正工作;感謝當年史丹佛那群打造ROS 的年輕人:Morgan Quigley、Brian Gerkey、Tully Foote 等,是你們大膽的想法和嘗試,帶來了機器人開發標準化的可能;感謝ROS 機器人開發之路上一路同行的夥伴,我們都是智慧型機器人時代的創造者。要感謝的人太多,無法一一列舉,但是我都銘記在心。

機器人系統錯綜複雜,ROS 版本變化繁多,書中難免有不足和錯誤之處,歡迎讀者朋友批評指正,相關問題都可以在「古月居」機器人社區交流。

最後分享胡適先生的一句名言,願你我共勉:怕什麼真理無窮,進一寸有一寸的歡喜。

胡春旭

 

額外資訊

出版商

深智數位股份有限公司

出版日期

2025年09月19日

語言

繁體中文

頁數

632

ISBN

9786267757307