ROS 機器人開發:實用案例分析 (ROS Robotics By Example : Learning to control wheeled, limbed, and flying robots using ROS Kinetic Kame, 2/e)

Carol Fairchild ,Thomas L. Harman 吳中紅石章松潘麗譯譯

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

商品描述

本書由長期從事ROS機器人研究與教學的專家撰寫,深入淺出地對基於ROS的機器人開發技術進行了全面介紹,
並通過豐富的實例,詳細講解移動機器人、飛行機器人與機器人手臂等各類機器人的ROS實現。
本書不僅涵蓋ROS的基礎知識,還循序漸進地講解了ROS機器人的高級應用特性。
書中首先對ROS的基本配置進行介紹,內容包括ROS的安裝、基本概念、主要的功能包與工具等。
然後對相應的故障排查方法進行了論述。
之後通過模擬的方式,先對Turtlesim的ROS組成模塊進行描述,
再對其他幾類典型機器人的ROS組成模塊進行相應的介紹。
對ROS組成模塊的介紹,一般遵循的流程是首先介紹基本的ROS命令,然後對ROS的功能包、
節點、主題以及消息進行論述,以此來對ROS機器人操作系統的整體內容進行詳細的闡述。
為了對書中選用的機器人的整體性能進行描述,書中還給出了相關機器人的技術資料。

作者簡介

Carol Fairchild

費爾柴爾德機器人公司的所有人、首席工程師,該公司致力於機器人技術的開發與集成。
她是休斯頓大學明湖分校巴克斯特機器人實驗室的一名研究人員和兼職教授。
她的研究領域主要是基於Baxter機器人的擴展應用開發。
她在得州農工大學獲得工程技術學士學位,在休斯頓大學明湖分校獲得計算機工程碩士學位。


Thomas L. Harman

休斯頓大學明湖分校工程系的主任。
他的研究領域主要是控制系統、機器人技術與微處理器技術的應用等。
他和同事關於機器人和激光的論文已經應用在了醫學領域。
2005年,他當選為休斯頓大學明湖分校的特聘教授。
他曾擔任FIRST機器人大賽的裁判與安全顧問。
他已經出版的專著、合著書籍有18本,主題包括微處理器技術、MATLAB與仿真以及美國國家電氣規程等。

目錄大綱

譯者序
前言
作者簡介
審校者簡介
第1章ROS初體驗1
1.1 ROS的用途以及學習ROS的好處1
1.2哪些機器人採用了ROS 2
1.3安裝並啟動ROS 4
1.3.1配置Ubuntu系統的軟件源4
1.3.2設置Ubuntu系統軟件源列表5
1.3.3設置Ubuntu系統密鑰5
1.3.4安裝ROS Kinetic 5
1.3.5初始化rosdep 6
1.3.6環境設置6
1.3.7安裝rosinstall 6
1.3.8故障排除— ROS環境測試7
1.4創建catkin工作空間7
1.5 ROS的功能包與清單8
1.5.1 ROS清單8
1.5.2探索ROS功能包8
1.6 ROS節點、話題與消息10
1.6.1 ROS節點11
1.6.2 ROS話題11
1.6.3 ROS消息11
1.6.4 ROS節點管理器12
1.6.5確定節點和話題的ROS命令13
1.7第一個ROS機器人模擬程序turtlesim 15
1.7.1啟動turtlesim節點15
1.7.2 turtlesim節點16
1.7.3 turtlesim話題與消息18
1.7.4通過發布/turtle1/cmd_vel話題控制烏龜運動20
1.7.5通過鍵盤或遊戲手柄控制烏龜移動22
1.7.6 turtlesim的參數服務器22
1.7. 7控制烏龜移動的ROS服務24
1.8 ROS命令小結25
1.9本章小結26

第2章構建一個模擬的兩輪ROS機器人27
2.1 Rviz簡介27
2.1.1安裝和啟動Rviz 28
2.1.2熟悉Rviz界面29
2.2生成並構建ROS功能包32
2.3構建差分驅動的機器人URDF 33
2.3.1創建機器人底座33
2.3.2使用roslaunch 34
2.3.3添加輪子37
2.3.4添加小腳輪39
2.3.5添加顏色41
2.3.6添加碰撞屬性42
2.3.7移動輪子43
2.3.8 tf和robot_state_publisher簡介44
2.3.9添加物理學屬性45
2.3.10試用URDF工具46
2.4 Gazebo 47
2.4.1安裝並啟動Gazebo 48
2.4.2使用roslaunch啟動Gazebo 49
2.4.3熟悉Gazebo界面50
2.4.4機器人URDF的修改54
2.4.5 Gazebo模型驗證55
2.4.6在Gazebo中查看URDF 56
2.4.7機器人模型調整57
2.4.8移動機器人模型58
2.4.9其他的機器人模擬環境59
2.5本章小結60

第3章TurtleBot機器人操控61
3.1 TurtleBot 2機器人簡介61
3.2下載TurtleBot 2模擬器軟件63
3.3在Gazebo中啟動TurtleBot 2模擬器63
3.3.1常見問題與故障排除65
3.3.2 ROS命令與Gazebo 66
3.3.3模擬環境下使用鍵盤遠程控制TurtleBot 2 68
3.4控制真正的TurtleBot 2機器人的設置69
3.5連接上網本與遠程計算機71
3.5.1網絡類型71
3.5.2網絡地址72
3.5.3遠程計算機網絡設置73
3.5.4上網本網絡設置73
3.5.5 SSH連接74
3.5.6網絡設置小結74
3.5.7排查網絡連接中的故障75
3.5.8 TurtleBot 2機器人系統測試75
3.6 TurtleBot 2機器人的硬件規格參數76
3.7移動真實的TurtleBot 2機器人78
3.7.1採用鍵盤遠程控制TurtleBot 2機器人移動78
3.7.2採用ROS命令控制TurtleBot 2機器人移動79
3.7.3編寫第一個Python腳本程序控制TurtleBot 2機器人移動80
3.8 rqt工具簡介83
3.8.1 rqt_graph 83
3.8.2 rqt的消息發布與話題監控86
3.9 TurtleBot機器人的測程87
3.9.1模擬的TurtleBot 2機器人的測程91
3.9.2 Rviz下真實的TurtleBot 2機器人的測程顯示93
3.10 TurtleBot機器人的自動充電95
3.11 TurtleBot 3介紹96
3.12下載TurtleBot 3模擬軟件98
3.13在Rviz中啟動TurtleBot 3模擬軟件99
3.14在Gazebo中啟動TurtleBot 3模擬軟件100
3.15硬件裝配與測試103
3.16下載TurtleBot 3機器人軟件包103
3.16.1在遠程計算機上安裝軟件103
3.16.2在SBC上安裝軟件104
3.17 TurtleBot 3與遠程計算機的網絡連接107
3.17.1遠程計算機網絡設置108
3.17.2 TurtleBot 3網絡設置108
3.17.3 SSH通信測試110
3.17.4網絡連接的故障處理110
3.18控制真實的TurtleBot 3移動111
3.19本章小結113

第4章TurtleBot機器人導航114
4.1 TurtleBot機器人的3D視覺系統115
4.1.1 3D視覺傳感器原理115
4.1.2 3D傳感器對比116
4.2配置TurtleBot機器人並安裝3D傳感器軟件123
4.2.1 Kinect 123
4.2 .2 ASUS與PrimeSense 123
4.2.3 Intel RealSense 124
4.2.4攝像頭軟件結構124
4.2.5術語定義125
4.3獨立模式下測試3D傳感器125
4.4運行ROS節點進行可視化126
4.4.1使用Image Viewer可視化數據126
4.4 .2使用Rviz可視化數據128
4.5 TurtleBot機器人導航131
4.5.1採用TurtleBot 2機器人構建房間地圖132
4.5.2採用TurtleBot 2機器人實現自主導航136
4.5.3導航至指定目標點142
4.5.4基於Python腳本與地圖實現航路點導航144
4.5.5 TurtleBot 3機器人的SLAM 151
4.5.6使用TurtleBot 3進行自主導航152
4.5.7 rqt_reconfigure 153
4.5.8進一步探索ROS導航155
4.6本章小結155

第5章構建模擬的機器人手臂156
5.1 Xacro的特點156
5.2採用Xacro建立一個關節式機器人手臂URDF 157
5.2.1指定名空間158
5.2.2使用Xacro屬性標籤158
5.2.3擴展Xacro 161
5.2.4使用Xacro的包含與宏標籤163
5.2.5給機器人手臂添加網格166
5.3在Gazebo中控制關節式機器人手臂171
5.3.1添加Gazebo特性元素171
5.3.2將機器人手臂固定在世界坐標系下173
5.3.3在Gazebo中查看機器人手臂173
5.3.4給Xacro添加控制組件174
5.3.5採用ROS命令行控制機器人手臂178
5.3.6採用rqt控制機器人手臂179
5.4本章小結182

第6章機器人手臂搖擺的關節控制183
6.1 Baxter簡介184
6.1.1研究型機器人Baxter 185
6.1.2 Baxter模擬器186
6.2 Baxter的手臂186
6.2.1 Baxter的俯仰關節187
6.2.2 Baxter的滾轉關節188
6.2.3 Baxter的坐標系188
6.2.4 Baxter手臂的控制模式189
6.2.5 Baxter手臂的抓手189
6.2.6 Baxter手臂的傳感器190
6.3下載Baxter軟件190
6.3.1安裝Baxter SDK軟件190
6.3.2安裝Baxter模擬器192
6.3.3配置Baxter shell 193
6.3.4安裝MoveIt!194
6.4在Gazebo中啟動Baxter模擬器195
6.4.1啟動Baxter模擬器196
6.4.2 “熱身”練習199
6.4.3彎曲Baxter手臂200
6.5 Baxter手臂與正向運動209
6.5.1關節與關節狀態發佈器209
6.5.2理解tf 212
6.5.3直接指定關節組件角度215
6.5.4 Rviz下的tf坐標系216
6.5.5查看機器人元素的tf樹217
6.6 MoveIt!簡介217
6.6.1使用MoveIt!對Baxter手臂進行運動規劃219
6.6.2在場景中添加物體220
6.6.3採用MoveIt!進行避障運動規劃222
6.7配置真實的Baxter機器人223
6.8控制真實的Baxter機器人225
6.8.1控制關節到達航路點225
6.8.2控制關節的力矩彈簧226
6.8.3關節速度控制演示227
6.8 .4其他示例227
6.8.5視覺伺服和抓取227
6.9反向運動228
6.10使用狀態機實現YMCA 231
6.11本章小結236

第7章空中機器人基本操控237
7.1四旋翼飛行器簡介238
7.1.1風靡的四旋翼飛行器238
7.1.2滾轉角、俯仰角與偏航角238
7.1.3四旋翼飛行器原理239
7.1.4四旋翼飛行器的組成241
7.1.5添加傳感器241
7.1.6四旋翼飛行器的通信242
7.2四旋翼飛行器的傳感器243
7.2.1慣性測量單元243
7.2.2四旋翼飛行器狀態傳感器243
7.3飛行前的準備工作244
7.3.1四旋翼飛行器檢測244
7.3.2飛行前檢測列表245
7.3.3飛行中的注意事項245
7.3.4需要遵循的規則和條例245
7.4在無人機中使用ROS 246
7.5 Hector四旋翼飛行器246
7.5.1下載Hector四旋翼飛行器248
7.5.2在Gazebo中啟動Hector四旋翼飛行器249
7.6 Crazyflie 2.0簡介256
7.6.1無ROS情況下的Crazyflie控制257
7.6.2使用Crazyradio PA進行通信258
7.6.3加載Crazyflie ROS軟件259
7.6.4飛行前的檢查261
7.6.5使用teleop操控Crazyflie飛行262
7.6.6在運動捕獲系統下飛行265
7.6.7控制多個Crazyflie飛行266
7.7 Bebop簡介266
7.7.1加載bebop_autonomy軟件268
7.7.2使用命令控制Bebop飛行270
7.8本章小結271

第8章使用外部設備控制機器人272
8.1創建自定義ROS遊戲控制器接口272
8.1.1測試遊戲控制器273
8.1.2使用joy ROS功能包275
8.1.3使用自定義遊戲控制器接口控制turtlesim 275
8.2創建自定義ROS Android設備接口280
8.2.1安裝Android Studio和工具280
8.2. 2安裝ROS-Android開發環境281
8.2.3術語定義282
8.2.4 ROS-Android開發環境介紹283
8.3在Arduino或樹莓派上創建ROS節點284
8.3.1使用Arduino 284
8.3.2使用樹莓派294
8.4本章小結295

第9章操控Crazyflie執行飛行任務296
9.1執行任務所需的組件297
9.1.1 Kinect Windows v2 297
9.1.2 Crazyflie操作298
9.1.3任務軟件結構298
9.1.4 OpenCV與ROS 300
9.2安裝任務所需的軟件301
9.2.1安裝libfreenect2 301
9.2.2安裝iai_kinect2 304
9.2.3使用iai_kinect2元包305
9.3任務設置311
9.3.1探測Crazyflie與目標311
9.3.2使用Kinect與OpenCV 314
9.3.3對Crazyflie進行跟踪317
9.4 Crazyflie控制319
9.5試飛Crazyflie 324
9.5.1懸停324
9.5.2飛往靜止目標326
9.5.3學到的經驗327
9.6本章小結328

第10章基於MATLAB的Baxter控制329
10.1安裝MATLAB機器人系統工具箱329
10.1.1 MATLAB與機器人系統工具箱版本檢查330
10.1.2機器人系統工具箱下的ROS命令330
10.2機器人系統工具箱與Baxter模擬器的使用330
10.2.1在MATLAB中安裝Baxter消息330
10.2.2運行Baxter模擬器和MATLAB 332
10.2.3控制Baxter運動334
10.3本章小結337