ROS 2 機器人編程實戰:基於現代 C++ 和 Python 3

徐海望//高佳麗

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

商品描述

本書介紹了基於ROS 2編程所需的各方面知識,並通過結合基本概念、
設計思想、工程實踐、編程調試和應用技巧等多面一體進行闡述,
使讀者可以更加快速地掌握ROS 2機器人編程的核心思想。
中包含大量的代碼和實戰案例,同時還會講述開源項目及其相關規範和注意事項,結合作者實際的工程經驗、
與時俱進的 ROS 2設計思想和源碼案例,讀者可以學習到不拘泥於軟件版本與軟件環境的編程知識。
此外,本書的*後一章還給出了ROS 2在實際項目中落地的應用策略和實用建議。
書中所有源碼都已按照ROS 2的相關規范進行開源,並與讀者共同維護。
本書為讀者提供了全部案例源代碼下載和高清學習視頻,讀者可以直接掃描二維碼觀看。
本書適合機械、自動化、機器人、計算機、
自動駕駛和人工智能等行業的從業者、學生和研究人員,以及 DIY 愛好者和極客等閱讀學習。

作者簡介

徐海望
機器人軟硬件研發工程師、社區貢獻者、機器人愛好者。
曾就職於小米機器人實驗室,鐵蛋創始團隊成員之一,
曾參與若干機器人的設計、研發,並負責鐵蛋的開源社區運營。
擅長移動機器人的軟硬件架構設計與實現。

高佳麗
機器人軟硬件研發工程師,機器人愛好者。
曾就職於小米,鐵蛋創始團隊成員之一,並參與多項小米自研穿戴類產品開發。
擅長嵌入式軟件驅動的開發,多傳感器系統中間件的開發與調試;擅長機器人上層應用的設計與實現。

目錄大綱

第1章構建與部署ROS 2
1.1 ROS 2的開發環境配置
1.1.1 ROS 2的發行方式
1.1.2 解決依賴問題
1.1.3 從源碼安裝ROS 2的技巧
1.1.4 便於開發的環境配置
1.2 ROS 2的架構體系
1.2.1 核心組件
1.2.2 機器人基礎應用組件
1.2.3 可視化組件、示例組件和擴展組件
1.3 ROS 2的構建體系
1.3.1 vcstool的使用
1.3.2 colcon工具鏈的簡介
1.3.3 colcon的構建、測試和查閱
1.4 實戰:定制特定功能的ROS 2軟件堆棧
第2章模塊化的功能包和節點
2.1 軟件功能包的構建
2.1.1 功能包的配置方法
2.1.2 功能包的構建與測試流程
2.1.3 運行指定功能包中的程序
2.2 節點的構建方法與基本操作
2.2.1 節點與節點執行器
2.2.2 建立節點的方法
2.2.3 調試節點的方法
2.2.4 進程、線程與節點的關係
2.3 節點的常見擴展功能
2.3.1 DDS的作用域
2.3.2 ROS的命名空間
2.3.3 生命週期節點
2.4 實戰:功能包的打包與發行
第3章節點的體系化與擴展
3.1 節點的日誌系統
3.1.1 日誌的基本分類
3.1.2 收集和查閱歷史日誌
3.1.3 日誌的應用技巧
3.2 使用啟動腳本
3.2.1 構建啟動系統
3.2.2 同時運行多個進程
3.2.3 配置啟動腳本
3.3 節點的參數係統
3.3.1 為節點加入參數
3.3.2 YAML的基本語法
3.3.3 在launch文件中引入參數
3.4 通用的插件系統
3.4.1 創建插件
3.4.2 動態加載插件
3.4.3 插件的使用案例
3.5 ROS 2的組件系統
3.5.1 單組件的實現流程
3.5.2 實現自定義的組件
3.5.3 使用組件容器加載多個組件
3.6 實戰:RealSense與ROS的橋接
第4章ROS 2的基礎通信
4.1 基於發布訂閱模式的topic通信
4.1.1 嘗試發布和訂閱
4.1.2 調試topic的方法
4.1.3 消息的服務質量
4.1.4 進程內高效通信
4.1.5 嘗試共享內存
4.1.6 統計Topic狀態
4.2 基於主從式架構的service通信
4.2.1 實現service服務端和客戶端
4.2.2 在客戶端處理應答
4.2.3 service的局限性
4.3 實戰:級聯生命週期節點
第5章ROS 2的擴展通信
5.1 基於主從式架構的action通信
5.1.1 實現action服務端和客戶端
5.1.2 在客戶端獲取反饋、狀態和結果
5.1.3 action的搶占和隊列
5.2 接口的使用及其自定義
5.2.1 自定義接口
5.2.2 使用自定義接口
5.2.3 消息編寫的基本規範
5.2.4 接口的使用技巧
5.3 基於topic實現的坐標系統
5.3.1 廣播靜態坐標變換
5.3.2 廣播動態坐標變換
5.3.3 監聽坐標變換
5.4 實戰:模塊化的導航功能框架
第6章面向ROS 2的調試與測試
6.1 調試ROS 2的代碼
6.1.1 使用GDB調試
6.1.2 使用ros2_tracing
6.2 使用rosbag2實現持久記錄
6.2.1 使用ros2bag錄製消息
6.2.2 播放和處理bag文件
6.2.3 在程序中調用rosbag2的API
6.3 實現單元測試
6.3.1 編寫簡單的單元測試
6.3.2 斷言的種類
6.3.3 統計測試覆蓋率
第7章探索ROS 2的擴展功能
7.1 了解開源協議與版權
7.1.1 開源協議介紹
7.1.2 版權信息的重要性
7.1.3 項目中的Notice文件
7.2 構建ROS 2的vendor功能包
7.2.1 辨識項目的構建方式
7.2.2 CMake項目的引入
7.2.3 Autoconf項目的引入
7.3 使用ROS 2規範傳感器接口
7.3.1 傳感器數據的分類
7.3.2 同步多源數據
7.4 實現軟硬件診斷系統
7.4.1 更新診斷數據
7.4.2 分析診斷數據
第8章ROS 2的產品落地指導
8.1 架構設計與硬件選型
8.1.1 硬件平台與外設的選型
8.1.2 軟件架構的層次化
8.2 軟件實現的注意事項
8.2.1 支持ROS 2的軟件平台
8.2.2 原型環境與交付環境
8.2.3 自啟動與下電保護
8.3 集成與交付
8.3.1 構建環境的可重複部署
8.3.2 持續集成與持續交付
8.3.3 開放平台中的CI/CD