舉報

會員
ROS 2機器人開發:從入門到實踐
桑欣 著
更新時間:2024-10-14 16:13:19
開會員,本書免費讀 >
最新章節:
封底
機器人開發是一項復雜的系統工程,ROS2為智能機器人開發提供了強有力的支持,極大地提高了機器人軟件開發效率。本書首先對ROS2的基礎概念、通信機制、常用庫和工具進行介紹,帶領讀者入門ROS2機器人開發;接著引導讀者完成移動機器人的建模和仿真、建圖和導航、自定義控制器和規劃器等一系列實踐;然后在真機實戰環節,通過制作一個基于ROS2的真實機器人,幫助讀者打通仿真與真機之間的壁壘;最后,本書深入講解了ROS2進階使用的相關知識,為讀者進一步在實戰中使用ROS2進行機器人開發打下夯實基礎??紤]讀者基礎,書中示例均以C++和Python兩種語言實現,同時加入了關于C++新特性、Git工具、多線程和回調函數等基礎知識的講解。
- 封底 更新時間:2024-10-14 16:13:19
- 作者簡介
- 10.7 小結與點評
- 10.6.4 使用DDS共享內存
- 10.6.3 調整DDS配置
- 10.6.2 配置局域網通信
- 10.6.1 使用不同的DDS進行通信
- 10.6 DDS中間件進階
- 10.5.3 在C++中同步傳感器數據
- 10.5.2 在Python中同步傳感器數據
- 10.5.1 消息過濾器介紹
- 10.5 使用消息過濾器同步數據
- 10.4.3 編寫自己的組件
- 10.4.2 使用組件運行組合節點
- 10.4.1 使用執行器組織多個節點
- 10.4 同一進程組織多個節點
- 10.3.3 在C++中編寫生命周期節點
- 10.3.2 在Python中編寫生命周期節點
- 10.3.1 生命周期節點介紹
- 10.3 生命周期節點
- 10.2.3 在C++中使用回調組
- 10.2.2 在Python中使用回調組
- 10.2.1 執行器與回調組介紹
- 10.2 執行器與回調組
- 10.1.4 C++QoS兼容性測試
- 10.1.3 Python QoS兼容性測試
- 10.1.2 QoS的兼容性
- 10.1.1 QoS策略介紹
- 10.1 消息服務質量之QoS
- 第10章 ROS 2使用進階
- 9.6 小結與點評
- 9.5.6 完成機器人導航
- 9.5.5 完成機器人建圖并保存地圖
- 9.5.4 發布里程計TF
- 9.5.3 準備機器人URDF
- 9.5.2 移動機器人的坐標系框架介紹
- 9.5.1 驅動并顯示雷達點云
- 9.5 移動機器人建圖與導航實現
- 9.4.3 發布機器人里程計話題
- 9.4.2 訂閱話題控制機器人
- 9.4.1 第一個節點
- 9.4 使用micro-ROS接入ROS 2
- 9.3.5 機器人里程計計算
- 9.3.4 運動學正逆解的實現
- 9.3.3 使用PID控制輪子轉速
- 9.3.2 電動機速度測量與轉換
- 9.3.1 使用開源庫驅動多路電動機
- 9.3 機器人控制系統的實現
- 9.2.5 使用開源庫驅動IMU
- 9.2.4 使用超聲波測量距離
- 9.2.3 使用代碼點亮LED燈
- 9.2.2 第一個HelloWorld工程
- 9.2.1 開發平臺介紹與安裝
- 9.2 單片機開發基礎
- 9.1.3 機器人決策系統
- 9.1.2 機器人執行器
- 9.1.1 機器人傳感器
- 9.1 移動機器人系統設計
- 第9章 搭建一個實體移動機器人
- 8.4 小結與點評
- 8.3.4 配置導航參數并測試
- 8.3.3 實現自定義控制算法
- 8.3.2 搭建控制器插件框架
- 8.3.1 自定義控制器介紹
- 8.3 自定義導航控制器
- 8.2.4 配置導航參數并測試
- 8.2.3 實現自定義規劃算法
- 8.2.2 搭建規劃器插件框架
- 8.2.1 自定義規劃器介紹
- 8.2 自定義導航規劃器
- 8.1.4 編寫插件測試程序
- 8.1.3 編寫并生成第一個插件
- 8.1.2 定義插件抽象類
- 8.1.1 pluginlib介紹與安裝
- 8.1 掌握ROS 2插件機制
- 第8章 使用自己的規劃器和控制器導航
- 7.7 小結與點評
- 7.6.3 將代碼托管在GitHub
- 7.6.2 將代碼托管在Gitee
- 7.6.1 添加自描述文件
- 7.6 ROS 2基礎之Git倉庫托管
- 7.5.4 訂閱圖像并記錄
- 7.5.3 添加語音播報功能
- 7.5.2 編寫巡檢控制節點
- 7.5.1 完成機器人系統架構設計
- 7.5 導航最佳實踐之做一個自動巡檢機器人
- 7.4.4 使用接口完成路點導航
- 7.4.3 調用接口進行單點導航
- 7.4.2 使用TF獲取機器人實時位置
- 7.4.1 使用話題初始化機器人位姿
- 7.4 導航應用開發指南
- 7.3.7 優化機器人到點精度
- 7.3.6 優化導航速度和膨脹半徑
- 7.3.5 導航過程中進行動態避障
- 7.3.4 進行單點與路點導航
- 7.3.3 編寫launch并啟動導航
- 7.3.2 配置Navigation 2參數
- 7.3.1 Navigation 2介紹與安裝
- 7.3 機器人導航框架Navigation 2
- 7.2.2 將地圖保存為文件
- 7.2.1 構建第一張導航地圖
- 7.2 使用slam_toolbox完成建圖
- 7.1.2 機器人導航
- 7.1.1 同步定位與地圖構建
- 7.1 機器人導航介紹
- 第7章 自主導航——讓機器人自己動起來
- 6.6 小結與點評
- 6.5.5 使用兩輪差速控制器控制機器人
- 6.5.4 使用力控制器控制輪子
- 6.5.3 使用關節狀態發布控制器
- 6.5.2 使用Gazebo接入ros2_control
- 6.5.1 ros2_control介紹與安裝
- 6.5 使用ros2_control驅動機器人
- 6.4.7 深度相機傳感器仿真
- 6.4.6 慣性測量傳感器仿真
- 6.4.5 激光雷達傳感器仿真
- 6.4.4 使用兩輪差速插件控制機器人
- 6.4.3 使用Gazebo標簽擴展URDF
- 6.4.2 在Gazebo中加載機器人模型
- 6.4.1 安裝與使用Gazebo構建世界
- 6.4 在Gazebo中完成機器人仿真
- 6.3.2 為機器人部件添加質量與慣性
- 6.3.1 為機器人部件添加碰撞屬性
- 6.3 添加物理屬性讓機器人更真實
- 6.2.6 貼合地面,添加虛擬部件
- 6.2.5 完善機器人執行器部件
- 6.2.4 創建機器人及傳感器部件
- 6.2.3 使用Xacro簡化URDF
- 6.2.2 在RViz中顯示機器人
- 6.2.1 幫機器人創建一個身體
- 6.2 使用URDF創建機器人
- 6.1.2 常用機器人仿真平臺
- 6.1.1 移動機器人的結構介紹
- 6.1 機器人建模與仿真概述
- 第6章 建模與仿真——創建自己的機器人
- 5.7 小結與點評
- 5.6.3 進階掌握Git分支
- 5.6.2 學會撤銷代碼
- 5.6.1 查看修改內容
- 5.6 ROS 2基礎之Git進階
- 5.5 數據記錄工具ros2 bag
- 5.4.2 數據可視化工具RViz
- 5.4.1 GUI框架rqt
- 5.4 常用可視化工具rqt與RViz
- 5.3.3 通過C++查詢TF關系
- 5.3.2 通過C++發布動態TF
- 5.3.1 通過C++發布靜態TF
- 5.3 C++中的地圖坐標系變換
- 5.2.3 通過Python查詢TF關系
- 5.2.2 通過Python發布動態TF
- 5.2.1 通過Python發布靜態TF
- 5.2 Python中的手眼坐標變換
- 5.1.2 對TF原理的簡單探究
- 5.1.1 通過命令行使用TF
- 5.1 坐標變換工具介紹
- 第5章 ROS 2常用開發工具
- 4.7 小結與點評
- 4.6.3 launch使用進階
- 4.6.2 使用launch傳遞參數
- 4.6.1 使用launch啟動多個節點
- 4.6 使用launch啟動腳本
- 4.5.3 修改其他節點的參數
- 4.5.2 接收參數事件
- 4.5.1 參數聲明與設置
- 4.5 在C++節點中使用參數
- 4.4.3 修改其他節點的參數
- 4.4.2 訂閱參數更新
- 4.4.1 參數聲明與設置
- 4.4 在Python節點中使用參數
- 4.3.3 客戶端代碼實現
- 4.3.2 服務端代碼實現
- 4.3.1 自定義服務接口
- 4.3 用C++服務通信做一個巡邏海龜
- 4.2.4 人臉檢測客戶端的實現
- 4.2.3 人臉檢測服務實現
- 4.2.2 人臉檢測
- 4.2.1 自定義服務接口
- 4.2 用Python服務通信實現人臉檢測
- 4.1.2 基于服務的參數通信
- 4.1.1 服務通信介紹
- 4.1 服務與參數通信介紹
- 第4章 服務和參數——深入ROS 2通信
- 3.6 小結與點評
- 3.5.3 學會使用Git忽略文件
- 3.5.2 學會提交代碼
- 3.5.1 新建代碼倉庫
- 3.5 ROS 2基礎之Git入門
- 3.4.5 訂閱數據并用Qt顯示
- 3.4.4 在功能包中使用Qt
- 3.4.3 系統信息獲取與發布
- 3.4.2 自定義通信接口
- 3.4.1 完成工程架構設計
- 3.4 話題通信最佳實踐
- 3.3.2 訂閱Pose實現閉環控制
- 3.3.1 發布速度控制海龜畫圓
- 3.3 C++話題訂閱與發布
- 3.2.2 訂閱小說并合成語音
- 3.2.1 通過話題發布小說
- 3.2 Python話題訂閱與發布
- 3.1 話題通信介紹
- 第3章 訂閱和發布——話題通信探索
- 2.6 小結與點評
- 2.5.3 多線程與回調函數
- 2.5.2 用得到的C++新特性
- 2.5.1 面向對象編程
- 2.5 ROS 2基礎之編程
- 2.4 多功能包的最佳實踐Workspace
- 2.3.2 功能包結構分析
- 2.3.1 在功能包中編寫C++節點
- 2.3 使用功能包組織C++節點
- 2.2.2 功能包結構分析
- 2.2.1 在功能包中編寫Python節點
- 2.2 使用功能包組織Python節點
- 2.1.2 C++示例
- 2.1.1 Python示例
- 2.1 編寫你的第一個節點
- 第2章 ROS 2基礎入門——從第一個節點開始
- 1.5 小結與點評
- 1.4.5 Linux基礎之環境變量
- 1.4.4 在Linux中編寫C++程序
- 1.4.3 在Linux中編寫Python程序
- 1.4.2 在Linux中安裝軟件
- 1.4.1 Linux終端基礎操作
- 1.4 ROS 2基礎之Linux
- 1.3.3 海龜例子的簡單分析
- 1.3.2 使用鍵盤控制海龜
- 1.3.1 啟動海龜模擬器
- 1.3 運行你的第一個機器人
- 1.2.4 安裝ROS 2
- 1.2.3 在虛擬機中安裝Ubuntu 22.04
- 1.2.2 安裝虛擬機VirtualBox
- 1.2.1 準備所需軟件
- 1.2 開發環境搭建
- 1.1.4 ROS 2機器人開發特色
- 1.1.3 ROS 2的已發布版本
- 1.1.2 ROS 2系統架構
- 1.1.1 機器人與ROS
- 1.1 ROS部落的自我介紹
- 第1章 啟程——讓你的第一個機器人動起來
- 前言
- 推薦序二
- 推薦序一
- 內容簡介
- 版權頁
- 封面
- 封面
- 版權頁
- 內容簡介
- 推薦序一
- 推薦序二
- 前言
- 第1章 啟程——讓你的第一個機器人動起來
- 1.1 ROS部落的自我介紹
- 1.1.1 機器人與ROS
- 1.1.2 ROS 2系統架構
- 1.1.3 ROS 2的已發布版本
- 1.1.4 ROS 2機器人開發特色
- 1.2 開發環境搭建
- 1.2.1 準備所需軟件
- 1.2.2 安裝虛擬機VirtualBox
- 1.2.3 在虛擬機中安裝Ubuntu 22.04
- 1.2.4 安裝ROS 2
- 1.3 運行你的第一個機器人
- 1.3.1 啟動海龜模擬器
- 1.3.2 使用鍵盤控制海龜
- 1.3.3 海龜例子的簡單分析
- 1.4 ROS 2基礎之Linux
- 1.4.1 Linux終端基礎操作
- 1.4.2 在Linux中安裝軟件
- 1.4.3 在Linux中編寫Python程序
- 1.4.4 在Linux中編寫C++程序
- 1.4.5 Linux基礎之環境變量
- 1.5 小結與點評
- 第2章 ROS 2基礎入門——從第一個節點開始
- 2.1 編寫你的第一個節點
- 2.1.1 Python示例
- 2.1.2 C++示例
- 2.2 使用功能包組織Python節點
- 2.2.1 在功能包中編寫Python節點
- 2.2.2 功能包結構分析
- 2.3 使用功能包組織C++節點
- 2.3.1 在功能包中編寫C++節點
- 2.3.2 功能包結構分析
- 2.4 多功能包的最佳實踐Workspace
- 2.5 ROS 2基礎之編程
- 2.5.1 面向對象編程
- 2.5.2 用得到的C++新特性
- 2.5.3 多線程與回調函數
- 2.6 小結與點評
- 第3章 訂閱和發布——話題通信探索
- 3.1 話題通信介紹
- 3.2 Python話題訂閱與發布
- 3.2.1 通過話題發布小說
- 3.2.2 訂閱小說并合成語音
- 3.3 C++話題訂閱與發布
- 3.3.1 發布速度控制海龜畫圓
- 3.3.2 訂閱Pose實現閉環控制
- 3.4 話題通信最佳實踐
- 3.4.1 完成工程架構設計
- 3.4.2 自定義通信接口
- 3.4.3 系統信息獲取與發布
- 3.4.4 在功能包中使用Qt
- 3.4.5 訂閱數據并用Qt顯示
- 3.5 ROS 2基礎之Git入門
- 3.5.1 新建代碼倉庫
- 3.5.2 學會提交代碼
- 3.5.3 學會使用Git忽略文件
- 3.6 小結與點評
- 第4章 服務和參數——深入ROS 2通信
- 4.1 服務與參數通信介紹
- 4.1.1 服務通信介紹
- 4.1.2 基于服務的參數通信
- 4.2 用Python服務通信實現人臉檢測
- 4.2.1 自定義服務接口
- 4.2.2 人臉檢測
- 4.2.3 人臉檢測服務實現
- 4.2.4 人臉檢測客戶端的實現
- 4.3 用C++服務通信做一個巡邏海龜
- 4.3.1 自定義服務接口
- 4.3.2 服務端代碼實現
- 4.3.3 客戶端代碼實現
- 4.4 在Python節點中使用參數
- 4.4.1 參數聲明與設置
- 4.4.2 訂閱參數更新
- 4.4.3 修改其他節點的參數
- 4.5 在C++節點中使用參數
- 4.5.1 參數聲明與設置
- 4.5.2 接收參數事件
- 4.5.3 修改其他節點的參數
- 4.6 使用launch啟動腳本
- 4.6.1 使用launch啟動多個節點
- 4.6.2 使用launch傳遞參數
- 4.6.3 launch使用進階
- 4.7 小結與點評
- 第5章 ROS 2常用開發工具
- 5.1 坐標變換工具介紹
- 5.1.1 通過命令行使用TF
- 5.1.2 對TF原理的簡單探究
- 5.2 Python中的手眼坐標變換
- 5.2.1 通過Python發布靜態TF
- 5.2.2 通過Python發布動態TF
- 5.2.3 通過Python查詢TF關系
- 5.3 C++中的地圖坐標系變換
- 5.3.1 通過C++發布靜態TF
- 5.3.2 通過C++發布動態TF
- 5.3.3 通過C++查詢TF關系
- 5.4 常用可視化工具rqt與RViz
- 5.4.1 GUI框架rqt
- 5.4.2 數據可視化工具RViz
- 5.5 數據記錄工具ros2 bag
- 5.6 ROS 2基礎之Git進階
- 5.6.1 查看修改內容
- 5.6.2 學會撤銷代碼
- 5.6.3 進階掌握Git分支
- 5.7 小結與點評
- 第6章 建模與仿真——創建自己的機器人
- 6.1 機器人建模與仿真概述
- 6.1.1 移動機器人的結構介紹
- 6.1.2 常用機器人仿真平臺
- 6.2 使用URDF創建機器人
- 6.2.1 幫機器人創建一個身體
- 6.2.2 在RViz中顯示機器人
- 6.2.3 使用Xacro簡化URDF
- 6.2.4 創建機器人及傳感器部件
- 6.2.5 完善機器人執行器部件
- 6.2.6 貼合地面,添加虛擬部件
- 6.3 添加物理屬性讓機器人更真實
- 6.3.1 為機器人部件添加碰撞屬性
- 6.3.2 為機器人部件添加質量與慣性
- 6.4 在Gazebo中完成機器人仿真
- 6.4.1 安裝與使用Gazebo構建世界
- 6.4.2 在Gazebo中加載機器人模型
- 6.4.3 使用Gazebo標簽擴展URDF
- 6.4.4 使用兩輪差速插件控制機器人
- 6.4.5 激光雷達傳感器仿真
- 6.4.6 慣性測量傳感器仿真
- 6.4.7 深度相機傳感器仿真
- 6.5 使用ros2_control驅動機器人
- 6.5.1 ros2_control介紹與安裝
- 6.5.2 使用Gazebo接入ros2_control
- 6.5.3 使用關節狀態發布控制器
- 6.5.4 使用力控制器控制輪子
- 6.5.5 使用兩輪差速控制器控制機器人
- 6.6 小結與點評
- 第7章 自主導航——讓機器人自己動起來
- 7.1 機器人導航介紹
- 7.1.1 同步定位與地圖構建
- 7.1.2 機器人導航
- 7.2 使用slam_toolbox完成建圖
- 7.2.1 構建第一張導航地圖
- 7.2.2 將地圖保存為文件
- 7.3 機器人導航框架Navigation 2
- 7.3.1 Navigation 2介紹與安裝
- 7.3.2 配置Navigation 2參數
- 7.3.3 編寫launch并啟動導航
- 7.3.4 進行單點與路點導航
- 7.3.5 導航過程中進行動態避障
- 7.3.6 優化導航速度和膨脹半徑
- 7.3.7 優化機器人到點精度
- 7.4 導航應用開發指南
- 7.4.1 使用話題初始化機器人位姿
- 7.4.2 使用TF獲取機器人實時位置
- 7.4.3 調用接口進行單點導航
- 7.4.4 使用接口完成路點導航
- 7.5 導航最佳實踐之做一個自動巡檢機器人
- 7.5.1 完成機器人系統架構設計
- 7.5.2 編寫巡檢控制節點
- 7.5.3 添加語音播報功能
- 7.5.4 訂閱圖像并記錄
- 7.6 ROS 2基礎之Git倉庫托管
- 7.6.1 添加自描述文件
- 7.6.2 將代碼托管在Gitee
- 7.6.3 將代碼托管在GitHub
- 7.7 小結與點評
- 第8章 使用自己的規劃器和控制器導航
- 8.1 掌握ROS 2插件機制
- 8.1.1 pluginlib介紹與安裝
- 8.1.2 定義插件抽象類
- 8.1.3 編寫并生成第一個插件
- 8.1.4 編寫插件測試程序
- 8.2 自定義導航規劃器
- 8.2.1 自定義規劃器介紹
- 8.2.2 搭建規劃器插件框架
- 8.2.3 實現自定義規劃算法
- 8.2.4 配置導航參數并測試
- 8.3 自定義導航控制器
- 8.3.1 自定義控制器介紹
- 8.3.2 搭建控制器插件框架
- 8.3.3 實現自定義控制算法
- 8.3.4 配置導航參數并測試
- 8.4 小結與點評
- 第9章 搭建一個實體移動機器人
- 9.1 移動機器人系統設計
- 9.1.1 機器人傳感器
- 9.1.2 機器人執行器
- 9.1.3 機器人決策系統
- 9.2 單片機開發基礎
- 9.2.1 開發平臺介紹與安裝
- 9.2.2 第一個HelloWorld工程
- 9.2.3 使用代碼點亮LED燈
- 9.2.4 使用超聲波測量距離
- 9.2.5 使用開源庫驅動IMU
- 9.3 機器人控制系統的實現
- 9.3.1 使用開源庫驅動多路電動機
- 9.3.2 電動機速度測量與轉換
- 9.3.3 使用PID控制輪子轉速
- 9.3.4 運動學正逆解的實現
- 9.3.5 機器人里程計計算
- 9.4 使用micro-ROS接入ROS 2
- 9.4.1 第一個節點
- 9.4.2 訂閱話題控制機器人
- 9.4.3 發布機器人里程計話題
- 9.5 移動機器人建圖與導航實現
- 9.5.1 驅動并顯示雷達點云
- 9.5.2 移動機器人的坐標系框架介紹
- 9.5.3 準備機器人URDF
- 9.5.4 發布里程計TF
- 9.5.5 完成機器人建圖并保存地圖
- 9.5.6 完成機器人導航
- 9.6 小結與點評
- 第10章 ROS 2使用進階
- 10.1 消息服務質量之QoS
- 10.1.1 QoS策略介紹
- 10.1.2 QoS的兼容性
- 10.1.3 Python QoS兼容性測試
- 10.1.4 C++QoS兼容性測試
- 10.2 執行器與回調組
- 10.2.1 執行器與回調組介紹
- 10.2.2 在Python中使用回調組
- 10.2.3 在C++中使用回調組
- 10.3 生命周期節點
- 10.3.1 生命周期節點介紹
- 10.3.2 在Python中編寫生命周期節點
- 10.3.3 在C++中編寫生命周期節點
- 10.4 同一進程組織多個節點
- 10.4.1 使用執行器組織多個節點
- 10.4.2 使用組件運行組合節點
- 10.4.3 編寫自己的組件
- 10.5 使用消息過濾器同步數據
- 10.5.1 消息過濾器介紹
- 10.5.2 在Python中同步傳感器數據
- 10.5.3 在C++中同步傳感器數據
- 10.6 DDS中間件進階
- 10.6.1 使用不同的DDS進行通信
- 10.6.2 配置局域網通信
- 10.6.3 調整DDS配置
- 10.6.4 使用DDS共享內存
- 10.7 小結與點評
- 作者簡介
- 封底 更新時間:2024-10-14 16:13:19