《ROS機器人開發實踐》| 目錄
來自專欄 古月居
前言
1 初識ROS
1.1 ROS是什麼
1.1.1 ROS的起源
1.1.2 ROS的設計目標
1.1.3 ROS的特點
1.2 如何安裝ROS
1.2.1 操作系統與ROS版本的選擇
1.2.2 配置系統軟體源
1.2.3 添加ROS軟體源
1.2.4 添加密鑰
1.2.5 安裝ROS
1.2.6 初始化rosdep
1.2.7 設置環境變數
1.2.8 完成安裝
1.3 本書源碼下載
1.4 本章小結
2. ROS系統架構
2.1 ROS架構設計
2.2 計算圖
2.2.1 節點(Node)
2.2.2 消息(Message)
2.2.3 話題(Topic)
2.2.4 服務(Service)
2.2.5 節點管理器
2.3 文件系統
2.3.1 功能包
2.3.2 元功能包
2.4 開源社區
2.5 ROS的通信機制
2.5.1 話題
2.5.2 服務
2.5.3 參數
2.6 話題與服務的區別
2.7 本章小結
3 ROS基礎
3.1 第一個ROS常式——小烏龜模擬
3.1.1 turtlesim功能包
3.1.2 控制烏龜運動
3.2 創建工作空間
3.2.1 什麼是工作空間
3.2.2 創建工作空間
3.2.3 創建功能包
3.3 工作空間的覆蓋
3.3.1 ROS中的空間覆蓋
3.3.2 工作空間之間的覆蓋
3.4 搭建Eclipse IDE開發環境
3.4.1 安裝Eclipse
3.4.2 創建Eclipse工程文件
3.4.3 將工程導入Eclipse
3.4.4 設置頭文件路徑
3.4.5 運行/調試程序
3.5 RoboWare IDE
3.5.1 RoboWare的特點
3.5.2 RoboWare的安裝與使用
3.6 話題中的Publisher與Subscriber
3.6.1 烏龜常式中的Publisher與Subscriber
3.6.2 如何創建Publisher
3.6.3 如何創建Subscriber
3.6.4 編譯功能包
3.6.5 運行Publisher與Subscriber
3.6.6 自定義話題消息
3.7 服務中的Server和Client
3.7.1 烏龜常式中的Service
3.7.2 如何自定義服務數據
3.7.3 如何創建Server
3.7.4 如何創建Client
3.7.5 編譯功能包
3.7.6 運行Server和Client
3.8 ROS中的命名空間
3.8.1 有效的命名
3.8.2 命名解析
3.8.3 命名重映射
3.9 分散式多機通信
3.9.1 設置IP地址
3.9.2 設置ROS_MASTER_URI
3.9.3 多機通信測試
3.10 本章小結
4 ROS中的常用組件
4.1 launch啟動文件
4.1.1 基本元素
4.1.2 參數設置
4.1.3 重映射機制
4.1.4 嵌套復用
4.2 TF坐標變換
4.2.1 TF功能包
4.2.2 TF工具
4.2.3 烏龜常式中的TF
4.2.4 創建TF廣播器
4.2.5 創建TF監聽器
4.2.6 實現烏龜跟隨運動
4.3 Qt工具箱
4.3.1 日誌輸出工具——rqt_console
4.3.2 計算圖可視化工具——rqt_graph
4.3.3 數據繪圖工具——rqt_plot
4.3.4 參數動態配置工具——rqt_reconfigure
4.4 rviz三維可視化平台
4.4.1 安裝並運行rviz
4.4.2 數據可視化
4.4.3 插件擴展機制
4.5 gazebo模擬環境
4.5.1 gazebo的特點
4.5.2 安裝並運行gazebo
4.5.3 構建模擬環境
4.6 rosbag數據記錄與回放
4.6.1 如何記錄數據
4.6.2 如何回放數據
4.7 本章小結
5 機器人平台搭建
5.1 機器人的定義
5.2 機器人的組成
5.2.1 執行機構
5.2.2 驅動系統
5.2.3 感測系統
5.2.4 控制系統
5.3 機器人系統搭建
5.3.1 MRobot
5.3.2 執行機構的實現
5.3.3 驅動系統的實現
5.3.4 內部感測系統的實現
5.4 基於Raspberry Pi的控制系統實現
5.4.1 硬體平台Raspberry Pi
5.4.2 安裝Ubuntu 16.04
5.4.3 安裝ROS
5.4.4 控制系統與MRobot通信
5.4.5 PC端控制MRobot
5.5 為機器人裝配攝像頭
5.5.1 usb_cam功能包
5.5.2 PC端驅動攝像頭
5.5.3 Raspberry Pi驅動攝像頭
5.6 為機器人裝配Kinect
5.6.1 freenect_camera功能包
5.6.2 PC端驅動Kinect
5.6.3 Raspberry Pi驅動Kinect
5.6.4 Kinect電源改造
5.7 為機器人裝配激光雷達
5.7.1 rplidar功能包
5.7.2 PC端驅動rplidar
5.7.3 Raspberry Pi驅動rplidar
5.8 本章小結
6 機器人建模與模擬
6.1 統一機器人描述格式——URDF
6.1.1 <link>標籤
6.1.2 <joint>標籤
6.1.3 <robot>標籤
6.1.4 <gazebo>標籤
6.2 創建機器人URDF模型
6.2.1 創建機器人描述功能包
6.2.2 創建URDF模型
6.2.3 URDF模型解析
6.2.4 在rviz中顯示模型
6.3 改進URDF模型
6.3.1 添加物理和碰撞屬性
6.3.2 使用xacro優化URDF
6.3.3 xacro文件引用
6.3.4 顯示優化後的模型
6.4 添加感測器模型
6.4.1 添加攝像頭
6.4.2 添加Kinect
6.4.3 添加激光雷達
6.5 基於ArbotiX和rviz的模擬器
6.5.1 安裝ArbotiX
6.5.2 配置ArbotiX控制器
6.5.3 運行模擬環境
6.6 ros_control
6.6.1 ros_control框架
6.6.2 控制器(Controllers)
6.6.3 硬體介面(Hardware Interface)
6.6.4 傳動系統(Transmissions)
6.6.5 關節約束(Joint Limits)
6.6.6 控制器管理器(controller manager)
6.7 gazebo模擬
6.7.1 機器人模型添加gazebo屬性
6.7.2 在gazebo中顯示機器人模型
6.7.3 控制機器人在gazebo中運動
6.7.4 攝像頭模擬
6.7.5 RGB-D攝像頭模擬
6.7.6 激光雷達模擬
6.8 本章小結
7 機器視覺
7.1 ROS中的圖像數據
7.1.1 二維圖像數據
7.1.2 三維點雲數據
7.2 攝像頭標定
7.2.1 camera_calibration功能包
7.2.2 啟動標定程序
7.2.3 標定攝像頭
7.2.4 標定Kinect
7.2.5 載入標定參數的配置文件
7.3 OpenCV庫
7.3.1 安裝openCV
7.3.2 在ROS中使用OpenCV
7.4 人臉識別
7.4.1 應用效果
7.4.2 源碼實現
7.5 物體跟蹤
7.5.1 應用效果
7.5.2 源碼實現
7.6 二維碼識別
7.6.1 ar_track_alvar功能包
7.6.2 創建二維碼
7.6.3 攝像頭識別二維碼
7.6.4 Kinect識別二維碼
7.7 物體識別
7.7.1 ORK功能包
7.7.2 建立物體模型庫
7.7.3 模型訓練
7.7.4 三維物體識別
7.8 本站小結
8 機器語音
8.1 讓機器人聽懂你說的話
8.1.1 pocketsphinx功能包
8.1.2 語音識別測試
8.1.3 創建語音庫
8.1.4 創建launch文件
8.1.5 語音指令識別
8.1.6 中文語音識別
8.2 通過語音控制機器人
8.2.1 編寫語音控制節點
8.2.2 語音控制小烏龜運動
8.3 讓機器人說話
8.3.1 sound_play功能包
8.3.2 語音播放測試
8.4 人工智慧標記語言——AIML
8.4.1 AIML中的標籤
8.4.2 Python中的AIML解析器
8.5 來和機器人對話吧
8.5.1 語音識別
8.5.2 智能匹配應答
8.5.3 文本轉語音
8.5.4 智能對話
8.6 讓機器人聽懂中文
8.6.1 下載科大訊飛SDK
8.6.2 測試SDK
8.6.3 語音聽寫
8.6.4 語音合成
8.6.5 智能語音助手
8.7 本章小結
9 機器人SLAM與自主導航
9.1 理論基礎
9.2 準備工作
9.2.1 感測器信息
9.2.2 模擬平台
9.2.3 真實機器人
9.3 gmapping
9.3.1 gmapping功能包
9.3.2 gmapping節點的配置與運行
9.3.3 在gazebo中模擬SLAM
9.3.4 真實機器人SLAM
9.4 hector
9.4.1 hector功能包
9.4.2 hector節點的配置與運行
9.4.3 在gazebo中模擬SLAM
9.4.4 真實機器人SLAM
9.5 google cartographer
9.5.1 cartographer功能包
9.5.2 官方demo測試
9.5.3 cartographer節點的配置與運行
9.5.4 在gazebo中模擬SLAM
9.5.5 真實機器人SLAM
9.6 rgbdslam
9.6.1 rgbdslam功能包
9.6.2 使用數據包實現SLAM
9.6.3 使用Kinect實現SLAM
9.7 ORB_SLAM
9.7.1 ORB_SLAM功能包
9.7.2 使用數據包實現單目SLAM
9.7.3 使用攝像頭實現單目SLAM
9.8 導航功能包
9.8.1 導航框架
9.8.2 move_base功能包
9.8.3 amcl功能包
9.8.4 代價地圖的配置
9.8.5 本地規劃器配置
9.9 在rviz中模擬機器人導航
9.9.1 創建launch文件
9.9.2 開始導航
9.9.3 自動導航
9.10 在gazebo中模擬機器人導航
9.10.1 創建launch文件
9.10.2 運行效果
9.10.3 實時避障
9.11 真實機器人導航
9.11.1 創建launch文件
9.11.2 開始導航
9.12 自主探索SLAM
9.12.1 創建launch文件
9.12.2 通過rviz設置探索目標
9.12.3 自主探索SLAM
9.13 本章小結
10 MoveIt!機械臂控制
10.1 MoveIt!系統架構
10.1.1 運動組(move_group)
10.1.2 運動規劃器(motion_planner)
10.1.3 規劃場景(Planning Scene)
10.1.4 運動學求解器(Kinematics)
10.1.5 碰撞檢測(Collision Checking)
10.2 如何使用MoveIt!
10.3 創建機械臂模型
10.3.1 聲明模型中的宏
10.3.2 創建六軸機械臂模型
10.3.3 加入gazebo屬性
10.3.4 顯示機器人模型
10.4 使用Setup Assistant配置機械臂
10.4.1 載入機器人URDF模型
10.4.2 配置自碰撞矩陣(Self-Collisions)
10.4.3 配置虛擬關節(Virtual Joints)
10.4.4 創建規劃組(Planning Groups)
10.4.5 定義機器人位姿(Robot Poses)
10.4.6 配置終端夾爪(End effectors)
10.4.7 配置無用關節(Passive Joints)
10.4.8 設置作者信息(Author Information)
10.4.9 生成配置文件(Configuration Files)
10.5 啟動MoveIt!
10.5.1 拖動規劃
10.5.2 隨機規劃
10.5.3 初始位姿更新
10.5.4 碰撞檢測
10.6 配置文件
10.6.1 SRDF文件
10.6.2 fake_controllers.yaml
10.6.3 joint_limits.yaml
10.6.4 kinematics.yaml
10.6.5 ompl_planning.yaml
10.7 添加ArbotiX關節控制器
10.7.1 添加配置文件
10.7.2 運行ArbotiX節點
10.7.3 測試常式
10.7.4 運行效果
10.8 配置MoveIt!關節控制器
10.8.1 添加配置文件
10.8.2 啟動插件
10.9 MoveIt!編程學習
10.9.1 關節空間規劃
10.9.2 工作空間規劃
10.9.3 笛卡爾運動規劃
10.9.4 避障規劃
10.10 Pick and Place
10.10.1 應用效果
10.10.2 創建抓取的目標物體
10.10.3 設置目標物體的放置位置
10.10.4 生成抓取姿態
10.10.5 pick
10.10.6 place
10.11 Gazebo中的機械臂模擬
10.11.1 創建配置文件
10.11.2 創建launch文件
10.11.3 開始模擬
10.12 使用MoveIt!控制Gazebo中的機械臂
10.12.1 關節軌跡控制器
10.12.2 MoveIt!控制器
10.12.3 關節狀態控制器
10.12.4 運行效果
10.13 ROS-I
10.13.1 ROS-I的目標
10.13.2 ROS-I的安裝
10.13.3 ROS-I的架構
10.14 本章小結
11 ROS與機器學習
11.1 AlphaGo的大腦——TensorFlow
11.2 TensorFlow基礎
11.2.1 安裝TensorFlow
11.2.2 核心概念
11.2.3 第一個TensorFlow程序
11.3 線性回歸
11.3.1 理論基礎
11.3.2 創建數據集
11.3.3 TensorFlow解決線性回歸問題
11.4 手寫數字識別
11.4.1 理論基礎
11.4.2 TensorFlow中的MNIST常式
11.4.3 基於ROS實現MNIST
11.5 物體識別
11.5.1 安裝TensorFlow Object Detection API
11.5.2 基於ROS實現動態物體識別
11.6 本章小結
12 ROS進階功能
12.1 action
12.1.1 什麼是action
12.1.2 action的工作機制
12.1.3 action的定義
12.1.4 實現action通信
12.2 plugin
12.2.1 工作原理
12.2.2 如何實現一個插件
12.2.3 創建基類
12.2.4 創建plugin類
12.2.5 註冊插件
12.2.6 編譯插件的動態鏈接庫
12.2.7 將插件加入ROS系統
12.2.8 調用插件
12.3 rviz plugin
12.3.1 速度控制插件
12.3.2 創建功能包
12.3.3 代碼實現
12.3.4 編譯插件
12.3.5 運行插件
12.4 dynamic reconfigure
12.4.1 創建配置文件
12.4.2 創建服務端節點
12.4.3 參數動態配置
12.5 SMACH
12.5.1 什麼是SMACH
12.5.2 狀態機跑起來
12.5.3 狀態機實現剖析
12.5.4 狀態間的數據傳遞
12.5.5 狀態機嵌套
12.5.6 多狀態並行
12.6 ROS-MATLAB
12.6.1 ROS-MATLAB是什麼
12.6.2 ROS-MATLAB可以做什麼
12.6.3 連接Matlab和ROS
12.6.4 Matlab可視化編程
12.6.5 創建可視化界面
12.6.6 編輯控制項的回調函數
12.6.7 運行效果
12.7 Web GUI
12.7.1 ROS中的Web功能包
12.7.2 創建Web應用
12.7.3 使用Web瀏覽器控制機器人
12.8 本章小結
13 ROS機器人實例
13.1 PR2
13.1.1 PR2功能包
13.1.2 gazebo中的PR2
13.1.3 使用PR2實現SLAM
13.1.4 PR2機械臂的使用
13.2 TurtleBot
13.2.1 TurtleBot功能包
13.2.2 gazebo中的TurtleBot
13.2.3 使用TurtleBot實現導航
13.2.4 嘗鮮TurtleBot 3
13.3 Universal Robot
13.3.1 Universal Robots功能包
13.3.2 gazebo中的UR機器人
13.3.3 使用MoveIt!控制UR機器人
13.4 catvehicle
13.4.1 構建無人駕駛模擬系統
13.4.2 運行無人駕駛模擬器
13.4.3 控制無人駕駛汽車
13.4.4 實現無人駕駛汽車的SLAM功能
13.5 HRMRP
13.5.1 總體架構設計
13.5.2 SLAM與導航
13.5.3 多機器人擴展
13.6 Kungfu Arm
13.6.1 總體架構設計
13.6.2 具體層次功能
13.6.3 功夫茶應用展示
13.7 本章小結
14 ROS 2.0
14.1 ROS 1存在的問題
14.2 什麼是ROS 2.0
14.2.1 ROS 2的設計目標
14.2.2 ROS 2的系統架構
14.2.3 ROS 2的關鍵中間件——DDS
14.2.4 ROS 2的通信模型
14.2.5 ROS 2的編譯系統
14.3 Ubuntu安裝ROS 2
14.3.1 安裝步驟
14.3.2 運行talker和listener常式
14.4 Windows安裝ROS 2
14.4.1 安裝Chocolatey
14.4.2 安裝Python
14.4.3 安裝OpenSSL
14.4.4 安裝Visual Studio Community 2015
14.4.5 配置DDS
14.4.6 安裝OpenCV
14.4.7 安裝依賴包
14.4.8 下載並配置ROS 2
14.4.9 運行talker和listener常式
14.5 ROS 2中的話題通信
14.5.1 創建工作目錄和功能包
14.5.2 創建talker
14.5.3 創建listener
14.5.4 修改CMakeLists.txt
14.5.5 編譯並運行節點
14.6 自定義話題和服務
14.6.1 自定義話題
14.6.2 自定義服務
14.6.3 修改CMakeLists.txt和package.xml
14.6.4 編譯生成頭文件
14.7 ROS 2中的服務通信
14.7.1 創建Server
14.7.2 創建Client
14.7.3 修改CMakeLists.txt
14.7.4 編譯並運行節點
14.8 ROS 2與ROS 1的集成
14.8.1 ros1_bridge功能包
14.8.2 話題通信
14.8.3 服務通信
14.9 本章小結
P.S.
古月:《ROS機器人開發實踐》| 新書預告古月:《ROS機器人開發實踐》| 前言更多內容可關注微信公眾號:古月居 (guyue_home)
或訪問古月居網站:古月居 - 怕什麼真理無窮,進一寸有一寸的歡喜推薦閱讀:
※業界 | 風寧:我是誰?讓這個小視頻告訴你
※AI行業動態|2018第十八周(04.29-05.04)|中美AI之爭、AI新基準、ECCV圖像賽、JP摩根AI金融…
※2017關於營銷雲的9大問題和解答
※方舟子打假林志穎,大家怎麼看?
※量子衛星入十大創新技術,青蒿素或可治糖尿病,《甘肅省促進民族團結進步條例(送審稿)》遭批評|風雲時評
TAG:科技 | 機器人 | 機器人操作平台ROS |