目錄
前言
二維碼清單
第1章 學習ROS必備的Linux知識
1.1 Linux操作系統介紹
1.1.1 Linux的誕生
1.1.2 Linux、UNIX、系統、內核和發行版
1.2 Ubuntu環境搭建
1.2.1 VMWare的安裝使用
1.2.2 安裝Ubuntu系統
1.3 Ubuntu桌面使用
1.3.1 Ubuntu的桌面布局
1.3.2 安裝VMware Tools工具
1.4 shell和常用命令
1.4.1 shell、終端和命令
1.4.2 常用shell命令
1.5 Ubuntu安裝和卸載軟體
1.5.1 使用國內軟體源提升下載速度
1.5.2 通過apt管理軟體
1.5.3 通過應用商店安裝卸載軟體
1.6 vim編輯器使用
1.7 Linux文件系統
1.7.1 Linux文件系統結構
1.7.2 目錄內容存放規則
1.8 root用戶和許可權管理
1.8.1 Linux中的許可權概念
1.8.2 文件/目錄許可權查看和修改
1.8.3 啟用root用戶
1.9 嵌入式單板電腦和Linux
第2章 認識ROS
2.1 ROS是什麼
2.1.1 ROS從何而來
2.1.2 為什麼要使用ROS
2.2 如何安裝ROS
2.3 ROS通信結構
2.3.1 節點和主節點
2.3.2 話題(Topic)
2.3.3 服務(Service)
2.3.4 動作(Action)
2.3.5 參數伺服器
2.4 ROS常用shell命令
2.5 ROS常用圖形工具
2.5.1 rqt工具箱
2.5.2 rviz
2.6 ROS坐標系和tf變換
2.6.1 ROS中的坐標定義
2.6.2 ROS中的tf變換
2.7 ROS工作空間
2.7.1 ROS工作空間是什麼
2.7.2 創建並使用一個工作空間
第3章 ROS編程基礎
3.1 ROS開發環境搭建
3.1.1 Ubuntu下安裝VSCode
3.1.2 VSCode常用插件安裝
3.2 新建一個ROS功能包
3.3 編寫一對發布訂閱節點(C++)
3.3.1 編寫發布節點(C++)
3.3.2 編寫訂閱節點(C++)
3.4 編寫一對發布訂閱節點(Python)
3.4.1 編寫發布節點(Python)
3.4.2 編寫訂閱節點(Python)
3.5 編寫launch文件用於啟動節點
3.5.1 通過launch文件啟動C++編譯的節點
3.5.2 通過launch文件啟動Python節點
3.5.3 在launch文件中調用launch文件
3.6 創建新消息類型並編寫節點發布消息
3.6.1 編寫自定義消息
3.6.2 驗證消息正常產生
3.6.3 編寫節點發布自定義消息類型(C++)
3.6.4 編寫節點訂閱自定義消息類型(Python)
3.7 創建一個服務類型並編寫服務端/客戶端節點
3.7.1 定義並編寫一個自定義服務
3.7.2 通過rossrv驗證服務產生
3.7.3 編寫自定義服務的服務端(C++)
3.7.4 編寫自定義服務的服務端(Python)
3.7.5 編寫自定義服務的客戶端(C++)
3.7.6 編寫自定義服務的客戶端(Python)
3.8 tf變換編程入門
3.8.1 通過static_transform_publisher發布靜態坐標變換
3.8.2 編寫節點實現動態tf變換(Python)
3.8.3 編寫節點實現動態tf變換(C++)
第4章 ROS機器人平台搭建
4.1 機器人系統的典型構成
4.2 幾種常見的機器人底盤運動學模型
4.2.1 差速轉向結構
4.2.2 阿克曼轉向結構
4.2.3 全向運動結構
4.3 驅動和電池系統
4.3.1 驅動系統—電動機
4.3.2 電池系統
4.4 控制系統—底盤控制器
4.5 控制系統—車載電腦
4.5.1 車載電腦需要實現的功能
4.5.2 車載電腦的選擇
4.5.3 將車載電腦和底盤控制器連接起來
4.6 機器人上常用的感測器
4.6.1 獲取機器人運動狀態—編碼器和IMU
4.6.2 讓機器人看見世界—攝像頭
4.6.3 讓機器人感知世界的「深淺」—立體相機
4.6.4 讓機器人具備全向感知能力—激光雷達
4.7 遠程連接車載電腦
4.7.1 路由模式和WiFi模式
4.7.2 SSH遠程登錄
4.7.3 使用遠程桌面連接機器人
4.8 底盤啟動和控制
4.8.1 啟動底盤驅動節點
4.8.2 控制機器人運動
4.8.3 向launch文件中傳入變數
4.9 機器人底盤ROS節點源碼解析
4.9.1 base_control功能包文件結構
4.9.2 base_control.launch文件解讀
4.9.3 base_control.py源碼解讀
4.9.4 bash腳本與udev規則
4.10 ROS分散式通信配置
4.10.1 分散式通信配置條件檢查
4.10.2 分散式通信配置和測試驗證
第5章 機器人模擬環境搭建
5.1 為什麼要有機器人模擬環境
5.1.1 機器人模擬主要解決的問題
5.1.2 模擬環境中的機器人和真實機器人的聯繫
5.2 在Stage模擬器中創建機器人
5.2.1 Stage模擬器簡介
5.2.2 創建Stage模擬器地圖和機器人模型
5.2.3 控制Stage模擬器中的機器人
5.3 在Gazebo模擬器中創建機器人
5.3.1 Gazebo模擬器簡介
5.3.2 Gazebo模擬器中的環境模型
5.4 機器人模型和URDF文件
5.4.1 URDF文件
5.4.2 xacro文件和Gazebo插件
5.4.3 通過Solidworks 創建機器人模型
第6章 ROS中的OpenCV和機器視覺
6.1 攝像頭的驅動和圖像話題訂閱
6.1.1 啟動攝像頭
6.1.2 訂閱攝像頭圖像並顯示
6.1.3 攝像頭參數標定
6.2 連接ROS和OpenCV
6.2.1 ROS圖像話題和OpenCV圖像格式差異
6.2.2 運行OpenCV官方ROS常式
6.2.3 opencv_apps的二進位包和源碼包
6.3 實例—基於OpenCV的機器人巡線
6.3.1 機器人巡線環境搭建和應用啟動
6.3.2 機器人巡線代碼分析
6.3.3 調整機器人的巡線顏色
第7章 激光雷達SLAM建圖和自主導航
7.1 啟動激光雷達和數據查看
7.1.1 啟動機器人上的激光雷達
7.1.2 rviz中查看激光雷達數據
7.1.3 激光雷達使用注意事項
7.2 機器人運行激光SLAM
7.2.1 啟動機器人激光SLAM應用
7.2.2 控制機器人進行建圖
7.2.3 切換其他SLAM演算法
7.3 機器人運行激光雷達導航和避障
7.3.1 啟動激光雷達導航應用
7.3.2 環境中新增障礙物條件下的導航
7.3.3 路徑規劃演算法的切換
7.4 機器人導航的應用
7.4.1 工廠AGV—多目標點導航
7.4.2 巡邏機器人—多點全自動巡航
7.4.3 無地圖條件下導航
第8章 ROS多機器人系統
8.1 ROS多機器人系統概述
8.1.1 多機器人系統概述
8.1.2 ROS和多機器人系統
8.2 ROS多機器人系統搭建
8.2.1 ROS多機器人系統通信和時間配置
8.2.2 實體機器人多機器人系統測試
8.2.3 Gazebo模擬環境中的多機器人
8.3 多機器人系統的控制
8.3.1 獨立控制系統內的任一機器人
8.3.2 同步控制系統內的所有機器人
8.4