ROS機器人開發實踐


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 節點
2.2.2 消息
2.2.3 話題
2.2.4 服務
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開發環境

3.4.1 安裝Eclipse
3.4.2 創建Eclipse工程文件
3.4.3 將工程導入Eclipse
3.4.4 設置頭文件路徑
3.4.5 運行/調試程序

3.5 RoboWare簡介

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 烏龜例程中的服務
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 標簽
6.1.2 標簽
6.1.3 標簽
6.1.4 標簽

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 控制器
6.6.3 硬件接口
6.6.4 傳動系統
6.6.5 關節約束
6.6.6 控制器管理器

6.7 Gazebo仿真

6.7.1 機器人模型添加Gazebo屬性
6.7.2 在Gazebo中顯示機器人模型
6.7.3 控制機器人在Gazebo中運動
6.7.4 攝像頭仿真
6.7.5 Kinect仿真
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 人工智能標記語言

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-slam

9.4.1 hector-slam功能包
9.4.2 hector_mapping節點的配置與運行
9.4.3 在Gazebo中仿真SLAM
9.4.4 真實機器人SLAM

9.5 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 規划場景
10.1.4 運動學求解器
10.1.5 碰撞檢測

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 配置自碰撞矩陣
10.4.3 配置虛擬關節
10.4.4 創建規划組
10.4.5 定義機器人位姿
10.4.6 配置終端夾爪
10.4.7 配置無用關節
10.4.8 設置作者信息
10.4.9 生成配置文件

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 動態配置參數

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 Robots

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

14.1 ROS 1存在的問題

14.2 什么是ROS 2

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

思維導圖

ROS機器人開發實踐

防止博客圖床圖片失效,防止圖片源站外鏈:

http://www.processon.com/chart_image/5e5b2869e4b0d4dc8776bd09.png)

思維導圖在線編輯鏈接:

https://www.processon.com/view/5e5b2868e4b0d4dc8776bd06


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM