|
-- 會員 / 註冊 --
|
|
|
|
ROS機器人開發實踐 ( 簡體 字) |
作者:胡春旭 | 類別:1. -> 電子工程 -> 機器人 |
譯者: |
出版社:機械工業出版社 | 3dWoo書號: 49248 詢問書籍請說出此書號!【缺書】 NT售價: 495 元 |
出版日:6/16/2018 |
頁數:506 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787111598237 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:本書在介紹ROS總體框架和理論要點的基礎上,講解ROS的通信機制、常用組件和進階功能;同時以實踐為主,講解機器視覺、機器聽覺、SLAM與導航、機械臂控制、機器學習等多種ROS應用的主要原理和實現方法;并分析基于ROS的機器人系統設計方法和典型實例;后論述ROS2的框架特點和使用方法,剖析ROS的發展方向。 |
目錄:推薦序一 推薦序二 推薦序三 前言 第1章 初識ROS 1 1.1 ROS是什么 1 1.1.1 ROS的起源 1 1.1.2 ROS的設計目標 2 1.1.3 ROS的特點 3 1.2 如何安裝ROS 4 1.2.1 操作系統與ROS版本的選擇 4 1.2.2 配置系統軟件源 6 1.2.3 添加ROS軟件源 6 1.2.4 添加密鑰 7 1.2.5 安裝ROS 7 1.2.6 初始化rosdep 8 1.2.7 設置環境變量 8 1.2.8 完成安裝 9 1.3 本書源碼下載 9 1.4 本章小結 10 第2章 ROS架構 11 2.1 ROS架構設計 11 2.2 計算圖 12 2.2.1 節點 12 2.2.2 消息 13 2.2.3 話題 13 2.2.4 服務 13 2.2.5 節點管理器 14 2.3 文件系統 14 2.3.1 功能包 14 2.3.2 元功能包 16 2.4 開源社區 17 2.5 ROS的通信機制 17 2.5.1 話題通信機制 18 2.5.2 服務通信機制 19 2.5.3 參數管理機制 20 2.6 話題與服務的區別 20 2.7 本章小結 21 第3章 ROS基礎 22 3.1 第一個ROS例程——小烏龜仿真 23 3.1.1 turtlesim功能包 23 3.1.2 控制烏龜運動 24 3.2 創建工作空間和功能包 25 3.2.1 什么是工作空間 25 3.2.2 創建工作空間 26 3.2.3 創建功能包 27 3.3 工作空間的覆蓋 28 3.3.1 ROS中工作空間的覆蓋 28 3.3.2 工作空間覆蓋示例 28 3.4 搭建Eclipse開發環境 30 3.4.1 安裝Eclipse 30 3.4.2 創建Eclipse工程文件 30 3.4.3 將工程導入Eclipse 31 3.4.4 設置頭文件路徑 31 3.4.5 運行/調試程序 32 3.5 RoboWare簡介 35 3.5.1 RoboWare的特點 35 3.5.2 RoboWare的安裝與使用 36 3.6 話題中的Publisher與Subscriber 37 3.6.1 烏龜例程中的Publisher與Subscriber 37 3.6.2 如何創建Publisher 37 3.6.3 如何創建Subscriber 40 3.6.4 編譯功能包 41 3.6.5 運行Publisher與Subscriber 42 3.6.6 自定義話題消息 44 3.7 服務中的Server和Client 46 3.7.1 烏龜例程中的服務 46 3.7.2 如何自定義服務數據 47 3.7.3 如何創建Server 48 3.7.4 如何創建Client 49 3.7.5 編譯功能包 51 3.7.6 運行Server和Client 51 3.8 ROS中的命名空間 52 3.8.1 有效的命名 52 3.8.2 命名解析 53 3.8.3 命名重映射 54 3.9 分布式多機通信 54 3.9.1 設置IP地址 55 3.9.2 設置ROS_MASTER_URI 56 3.9.3 多機通信測試 56 3.10 本章小結 57 第4章 ROS中的常用組件 58 4.1 launch啟動文件 58 4.1.1 基本元素 58 4.1.2 參數設置 60 4.1.3 重映射機制 61 4.1.4 嵌套復用 61 4.2 TF坐標變換 62 4.2.1 TF功能包 62 4.2.2 TF工具 63 4.2.3 烏龜例程中的TF 65 4.2.4 創建TF廣播器 67 4.2.5 創建TF監聽器 68 4.2.6 實現烏龜跟隨運動 70 4.3 Qt工具箱 70 4.3.1 日志輸出工具(rqt_console) 71 4.3.2 計算圖可視化工具(rqt_graph) 71 4.3.3 數據繪圖工具(rqt_plot) 72 4.3.4 參數動態配置工具(rqt_reconfigure) 73 4.4 rviz三維可視化平臺 73 4.4.1 安裝并運行rviz 74 4.4.2 數據可視化 75 4.4.3 插件擴展機制 76 4.5 Gazebo仿真環境 78 4.5.1 Gazebo的特點 78 4.5.2 安裝并運行Gazebo 78 4.5.3 構建仿真環境 81 4.6 rosbag數據記錄與回放 82 4.6.1 記錄數據 82 4.6.2 回放數據 83 4.7 本章小結 84 第5章 機器人平臺搭建 85 5.1 機器人的定義 85 5.2 機器人的組成 86 5.2.1 執行機構 87 5.2.2 驅動系統 87 5.2.3 傳感系統 87 5.2.4 控制系統 87 5.3 機器人系統搭建 88 5.3.1 MRobot 88 5.3.2 執行機構的實現 88 5.3.3 驅動系統的實現 89 5.3.4 內部傳感系統的實現 90 5.4 基于Raspberry Pi的控制系統實現 90 5.4.1 硬件平臺Raspberry Pi 91 5.4.2 安裝Ubuntu 16.04 91 5.4.3 安裝ROS 93 5.4.4 控制系統與MRobot通信 94 5.4.5 PC端控制MRobot 97 5.5 為機器人裝配攝像頭 99 5.5.1 usb_cam功能包 99 5.5.2 PC端驅動攝像頭 100 5.5.3 Raspberry Pi驅動攝像頭 102 5.6 為機器人裝配Kinect 104 5.6.1 freenect_camera功能包 104 5.6.2 PC端驅動Kinect 106 5.6.3 Raspberry Pi驅動Kinect 109 5.6.4 Kinect電源改造 109 5.7 為機器人裝配激光雷達 110 5.7.1 rplidar功能包 110 5.7.2 PC端驅動rplidar 111 5.7.3 Raspberry Pi驅動rplidar 113 5.8 本章小結 113 第6章 機器人建模與仿真 114 6.1 統一機器人描述格式——URDF 114 6.1.1 標簽 114 6.1.2 標簽 115 6.1.3 標簽 116 6.1.4 標簽 116 6.2 創建機器人URDF模型 116 6.2.1 創建機器人描述功能包 116 6.2.2 創建URDF模型 117 6.2.3 URDF模型解析 120 6.2.4 在rviz中顯示模型 122 6.3 改進URDF模型 124 6.3.1 添加物理和碰撞屬性 124 6.3.2 使用xacro優化URDF 125 6.3.3 xacro文件引用 127 6.3.4 顯示優化后的模型 127 6.4 添加傳感器模型 128 6.4.1 添加攝像頭 128 6.4.2 添加Kinect 130 6.4.3 添加激光雷達 132 6.5 基于ArbotiX和rviz的仿真器 133 6.5.1 安裝ArbotiX 133 6.5.2 配置ArbotiX控制器 133 6.5.3 運行仿真環境 135 6.6 ros_control 136 6.6.1 ros_control框架 137 6.6.2 控制器 139 6.6.3 硬件接口 139 6.6.4 傳動系統 140 6.6.5 關節約束 140 6.6.6 控制器管理器 141 6.7 Gazebo仿真 142 6.7.1 機器人模型添加Gazebo屬性 142 6.7.2 在Gazebo中顯示機器人模型 145 6.7.3 控制機器人在Gazebo中運動 147 6.7.4 攝像頭仿真 147 6.7.5 Kinect仿真 150 6.7.6 激光雷達仿真 153 6.8 本章小結 155 第7章 機器視覺 156 7.1 ROS中的圖像數據 156 7.1.1 二維圖像數據 156 7.1.2 三維點云數據 158 7.2 攝像頭標定 159 7.2.1 camera_calibration功能包 159 7.2.2 啟動標定程序 159 7.2.3 標定攝像頭 160 7.2.4 標定Kinect 162 7.2.5 加載標定參數的配置文件 162 7.3 OpenCV庫 164 7.3.1 安裝OpenCV 164 7.3.2 在ROS中使用OpenCV 164 7.4 人臉識別 166 7.4.1 應用效果 167 7.4.2 源碼實現 168 7.5 物體跟蹤 170 7.5.1 應用效果 170 7.5.2 源碼實現 171 7.6 二維碼識別 173 7.6.1 ar_track_alvar功能包 173 7.6.2 創建二維碼 174 7.6.3 攝像頭識別二維碼 175 7.6.4 Kinect識別二維碼 178 7.7 物體識別 179 7.7.1 ORK功能包 179 7.7.2 建立物體模型庫 181 7.7.3 模型訓練 183 7.7.4 三維物體識別 184 7.8 本章小結 185 第8章 機器語音 186 8.1 讓機器人聽懂你說的話 187 8.1.1 pocketsphinx功能包 187 8.1.2 語音識別測試 188 8.1.3 創建語音庫 190 8.1.4 創建launch文件 192 8.1.5 語音指令識別 192 8.1.6 中文語音識別 192 8.2 通過語音控制機器人 193 8.2.1 編寫語音控制節點 193 8.2.2 語音控制小烏龜運動 194 8.3 讓機器人說話 195 8.3.1 sound_play功能包 195 8.3.2 語音播放測試 195 8.4 人工智能標記語言 196 8.4.1 AIML中的標簽 196 8.4.2 Python中的AIML解析器 197 8.5 與機器人對話 198 8.5.1 語音識別 199 8.5.2 智能匹配應答 201 8.5.3 文本轉語音 202 8.5.4 智能對話 203 8.6 讓機器人聽懂中文 204 8.6.1 下載科大訊飛SDK 204 8.6.2 測試SDK 206 8.6.3 語音聽寫 207 8.6.4 語音合成 209 8.6.5 智能語音助手 211 8.7 本章小結 213 第9章 機器人SLAM與自主導航 214 9.1 理論基礎 214 9.2 準備工作 216 9.2.1 傳感器信息 217 9.2.2 仿真平臺 219 9.2.3 真實機器人 222 9.3 gmapping 224 9.3.1 gmapping功能包 224 9.3.2 gmapping節點的配置與運行 227 9.3.3 在Gazebo中仿真SLAM 228 9.3.4 真實機器人SLAM 231 9.4 hector-slam 234 9.4.1 hector-slam功能包 234 9.4.2 hector_mapping節點的配置與運行 236 9.4.3 在Gazebo中仿真SLAM 237 9.4.4 真實機器人SLAM 238 9.5 cartographer 240 9.5.1 cartographer功能包 240 9.5.2 官方demo測試 241 9.5.3 cartographer節點的配置與運行 244 9.5.4 在Gazebo中仿真SLAM 246 9.5.5 真實機器人SLAM 247 9.6 rgbdslam 249 9.6.1 rgbdslam功能包 249 9.6.2 使用數據包實現SLAM 250 9.6.3 使用Kinect實現SLAM 252 9.7 ORB_SLAM 253 9.7.1 ORB_SLAM功能包 253 9.7.2 使用數據包實現單目SLAM 254 9.7.3 使用攝像頭實現單目SLAM 256 9.8 導航功能包 258 9.8.1 導航框架 258 9.8.2 move_base功能包 258 9.8.3 amcl功能包 260 9.8.4 代價地圖的配置 263 9.8.5 本地規劃器配置 266 9.9 在rviz中仿真機器人導航 267 9.9.1 創建launch文件 267 9.9.2 開始導航 268 9.9.3 自動導航 269 9.10 在Gazebo中仿真機器人導航 277 9.10.1 創建launch文件 277 9.10.2 運行效果 278 9.10.3 實時避障 279 9.11 真實機器人導航 280 9.11.1 創建launch文件 280 9.11.2 開始導航 282 9.12 自主探索SLAM 282 9.12.1 創建launch文件 282 9.12.2 通過rviz設置探索 ????目標 283 9.12.3 實現自主探索SLAM 284 9.13 本章小結 286 第10章 MoveIt!機械臂控制 287 10.1 MoveIt!系統架構 288 10.1.1 運動組(move_group) 288 10.1.2 運動規劃器(motion_planner) 290 10.1.3 規劃場景 291 10.1.4 運動學求解器 291 10.1.5 碰撞檢測 291 10.2 如何使用MoveIt! 292 10.3 創建機械臂模型 292 10.3.1 聲明模型中的宏 292 10.3.2 創建六軸機械臂模型 294 10.3.3 加入Gazebo屬性 299 10.3.4 顯示機器人模型 300 10.4 使用Setup Assistant配置機械臂 302 10.4.1 加載機器人URDF模型 303 10.4.2 配置自碰撞矩陣 304 10.4.3 配置虛擬關節 304 10.4.4 創建規劃組 304 10.4.5 定義機器人位姿 307 10.4.6 配置終端夾爪 308 10.4.7 配置無用關節 309 10.4.8 設置作者信息 309 10.4.9 生成配置文件 309 10.5 啟動MoveIt! 310 10.5.1 拖動規劃 311 10.5.2 隨機目標規劃 311 10.5.3 初始位姿更新 313 10.5.4 碰撞檢測 314 10.6 配置文件 315 10.6.1 SRDF文件 315 10.6.2 fake_controllers.yaml 316 10.6.3 joint_limits.yaml 317 10.6.4 kinematics.yaml 317 10.6.5 ompl_planning.yaml 318 10.7 添加ArbotiX關節控制器 318 10.7.1 添加配置文件 318 10.7.2 運行ArbotiX節點 318 10.7.3 測試例程 319 10.7.4 運行效果 321 10.8 配置MoveIt!關節控制器 322 10.8.1 添加配置文件 323 10.8.2 啟動插件 324 10.9 MoveIt!編程學習 324 10.9.1 關節空間規劃 324 10.9.2 工作空間規劃 328 10.9.3 笛卡兒運動規劃 333 10.9.4 避障規劃 338 10.10 pick and place示例 345 10.10.1 應用效果 345 10.10.2 創建抓取的目標物體 346 10.10.3 設置目標物體的放置位置 346 10.10.4 生成抓取姿態 346 10.10.5 pick 348 10.10.6 place 348 10.11 Gazebo中的機械臂仿真 349 10.11.1 創建配置文件 350 10.11.2 創建launch文件 350 10.11.3 開始仿真 351 10.12 使用MoveIt!控制Gazebo中的機械臂 353 10.12.1 關節軌跡控制器 354 10.12.2 MoveIt!控制器 355 10.12.3 關節狀態控制器 356 10.12.4 運行效果 357 10.13 ROS-I 358 10.13.1 ROS-I的目標 359 10.13.2 ROS-I的安裝 359 10.13.3 ROS-I的架構 360 10.14 本章小結 362 第11章 ROS與機器學習 363 11.1 AlphaGo的大腦——Tensor-Flow 364 11.2 TensorFlow基礎 364 11.2.1 安裝TensorFlow 364 11.2.2 核心概念 366 11.2.3 第一個TensorFlow程序 367 11.3 線性回歸 369 11.3.1 理論基礎 369 11.3.2 創建數據集 371 11.3.3 使用TensorFlow解決線性回歸問題 372 11.4 手寫數字識別 374 11.4.1 理論基礎 374 11.4.2 TensorFlow中的MNIST例程 377 11.4.3 基于ROS實現MNIST 381 11.5 物體識別 384 11.5.1 安裝TensorFlow Object Detection API 385 11.5.2 基于ROS實現動態物體識別 388 11.6 本章小結 390 第12章 ROS進階功能 391 12.1 action 391 12.1.1 什么是action 391 12.1.2 action的工作機制 392 12.1.3 action的定義 392 12.1.4 實現action通信 393 12.2 plugin 396 12.2.1 工作原理 396 12.2.2 如何實現一個插件 396 12.2.3 創建基類 397 12.2.4 創建plugin類 398 12.2.5 注冊插件 399 12.2.6 編譯插件的動態鏈接庫 399 12.2.7 將插件加入ROS 399 12.2.8 調用插件 400 12.3 rviz plugin 401 12.3.1 速度控制插件 402 12.3.2 創建功能包 402 12.3.3 代碼實現 402 12.3.4 編譯插件 407 12.3.5 運行插件 408 12.4 動態配置參數 409 12.4.1 創建配置文件 410 12.4.2 創建服務器節點 412 12.4.3 參數動態配置 413 12.5 SMACH 414 12.5.1 什么是SMACH 415 12.5.2 狀態機“跑”起來 415 12.5.3 狀態機實現剖析 416 12.5.4 狀態間的數據傳遞 419 12.5.5 狀態機嵌套 421 12.5.6 多狀態并行 422 12.6 ROS-MATLAB 423 12.6.1 ROS-MATLAB是什么 423 12.6.2 ROS-MATLAB可以做什么 424 12.6.3 連接MATLAB和ROS 425 12.6.4 MATLAB可視化編程 428 12.6.5 創建可視化界面 429 12.6.6 編輯控件的回調函數 431 12.6.7 運行效果 434 12.7 Web GUI 435 12.7.1 ROS中的Web功能包 435 12.7.2 創建Web應用 436 12.7.3 使用Web瀏覽器控制機器人 439 12.8 本章小結 440 第13章 ROS機器人實例 441 13.1 PR2 441 13.1.1 PR2功能包 442 13.1.2 Gazebo中的PR2 443 13.1.3 使用PR2實現SLAM 446 13.1.4 PR2機械臂的使用 448 13.2 TurtleBot 450 13.2.1 TurtleBot功能包 451 13.2.2 Gazebo中的TurtleBot 451 13.2.3 使用TurtleBot實現導航功能 453 13.2.4 嘗試TurtleBot 3 456 13.3 Universal Robots 457 13.3.1 Universal Robots功能包 458 13.3.2 Gazebo中的UR機器人 459 13.3.3 使用MoveIt!控制UR機器人 460 13.4 catvehicle 462 13.4.1 構建無人駕駛仿真系統 463 13.4.2 運行無人駕駛仿真器 465 13.4.3 控制無人駕駛汽車 466 13.4.4 實現無人駕駛汽車的SLAM功能 467 13.5 HRMRP 469 13.5.1 總體架構設計 469 13.5.2 SLAM與導航 471 13.5.3 多機器人擴展 472 13.6 Kungfu Arm 474 13.6.1 總體架構設計 474 13.6.2 具體層次功能 475 13.6.3 功夫茶應用展示 478 13.7 本章小結 478 第14章 ROS 2 479 14.1 ROS 1存在的問題 480 14.2 什么是ROS 2 481 14.2.1 ROS 2的設計目標 481 14.2.2 ROS 2的系統架構 482 14.2.3 ROS 2的關鍵中間件——DDS 483 14.2.4 ROS 2的通信模型 483 14.2.5 ROS 2的編譯系統 485 14.3 在Ubuntu上安裝ROS 2 487 14.3.1 安裝步驟 487 14.3.2 運行talker和listener例程 488 14.4 在Windows上安裝ROS 2 489 14.4.1 安裝Chocolatey 489 14.4.2 安裝Python 490 14.4.3 安裝OpenSSL 490 14.4.4 安裝Visual StudioCommunity 2015 491 14.4.5 配置DDS 491 14.4.6 安裝OpenCV 492 14.4.7 安裝依賴包 492 14.4.8 下載并配置ROS 2 492 14.4.9 運行talker和listener例程 493 14.5 ROS 2中的話題通信 494 14.5.1 創建工作目錄和功能包 494 14.5.2 創建talker 495 14.5.3 創建listener 497 14.5.4 修改CMakeLists.txt 497 14.5.5 編譯并運行節點 498 14.6 自定義話題和服務 499 14.6.1 自定義話題 499 14.6.2 自定義服務 499 14.6.3 修改CMakeLists.txt和package.xml 499 14.6.4 編譯生成頭文件 499 14.7 ROS 2中的服務通信 500 14.7.1 創建Server 500 14.7.2 創建Client 501 14.7.3 修改CMakeLists.txt 503 14.7.4 編譯并運行節點 503 14.8 ROS 2與ROS 1的集成 504 14.8.1 ros1_bridge功能包 504 14.8.2 話題通信 504 14.8.3 服務通信 504 14.9 本章小結 505 |
序: |
|