ROS 機器人高效編程, 3/e (Effective Robotics Programming with ROS, 3/e)

阿尼爾·馬哈塔尼 (Anil Mahtani), 路易斯·桑切斯 (Luis S&nchez), 恩里克·費爾南德斯(Enrique Fernandez), 亞倫·馬丁內斯 (Aaron Martinez)

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

商品描述

本書包含了大量示例,幫助你開發機器人程序,並為你提供使用開源ROS庫和工具的完整解決方案。本書主要內容包括:ROS的概念、命令行工具、可視化GUI以及如何調試ROS,如何將機器人傳感器和執行器連接到ROS,如何從攝像頭和3D傳感器獲取數據並分析數據,如何在機器人/傳感器和環境模擬中使用Gazebo,如何設計機器人,如何使用OpenCV3.0為機器人添加視覺功能,如何使用新版本的PCL向機器人添加3D感知功能。本書適合各個階層的機器人開發人員和機器人愛好者閱讀。

目錄大綱

推薦序一
推薦序二
譯者序
前言
作者簡介
審校者簡介

第1章ROS入門1 
1.1 PC安裝教程3 
1.2使用軟件庫安裝ROS Kinetic 3 
1.2.1配置Ubuntu軟件庫4 
1.2.2添加軟件庫到sources.list文件中4 
1.2.3設置密鑰5 
1.2.4安裝ROS 5 
1.2.5初始化rosdep 6 
1.2.6配置環境6 
1.2.7安裝rosinstall 7 
1.3如何安裝VirtualBox和Ubuntu 8 
1.3.1下載VirtualBox 8 
1.3.2創建虛擬機9 
1.4通過Docker鏡像使用ROS 11 
1.4.1安裝Docker 11 
1.4.2獲取和使用ROS Docker鏡像和容器11 
1.5在BeagleBone Black上安裝ROS Kinetic 12 
1.5.1準備工作13 
1.5.2配置主機和source.list文件16 
1.5.3設置密鑰16 
1.5.4安裝ROS功能包17 
1.5.5為ROS初始化rosdep 17
1.5.6在BeagleBone Black中配置環境18 
1.5.7在BeagleBone Black中安裝rosinstall 18 
1.5.8 BeagleBone Black基本ROS示例18 
1.6本章小結19 

第2章ROS架構及概念20 
2.1理解ROS文件系統級20 
2.1. 1工作空間21 
2.1.2功能包22 
2.1.3元功能包23 
2.1.4消息24 
2.1.5服務25 
2.2理解ROS計算圖級25 
2.2.1節點與nodelet 27 
2.2.2主題28 
2.2.3服務29 
2.2.4消息29 
2.2.5消息記錄包30 
2.2.6節點管理器30 
2.2.7參數服務器30 
2.3理解ROS開源社區級31 
2.4 ROS試用練習32 
2.4.1 ROS文件系統導覽32 
2.4.2創建工作空間32 
2.4.3創建ROS功能包和元功能包33 
2.4.4編譯ROS功能包34 
2.4.5使用ROS節點35 
2.4.6如何使用主題與節點交互37 
2.4.7如何使用服務39
2.4.8使用參數服務器41 
2.4.9創建節點42 
2.4.10編譯節點44 
2.4.11創建msg和srv文件45 
2.4.12使用新建的srv和msg文件48 
2.4.13 launch文件51 
2.4.14動態參數53 
2.5本章小結57 

第3章可視化和調試工具58 
3.1調試ROS節點60 
3.1.1使用gdb調試器調試ROS節點60 
3.1.2在ROS節點啟動時調用gdb調試器61 
3.1.3在ROS節點啟動時調用valgrind分析節點62 
3.1.4設置ROS節點core文件轉儲62 
3.2日誌消息62 
3.2.1輸出日誌消息62 
3.2.2設置調試消息級別63 
3.2.3為特定節點配置調試消息級別64 
3.2.4消息命名65 
3.2.5按條件顯示消息與過濾消息65 
3.2.6顯示消息的方式——單次、可調以及其他組合66 
3.2.7使用rqt_console和rqt_logger_level在運行時修改調試級別66 
3.3檢測系統狀態69 
3.4設置動態參數73 
3.5當出現異常狀況時使用roswtf 75 
3.6可視化節點診斷77
3.7繪製標量數據圖78 
3.8圖像可視化81 
3.93D可視化83 
3.9.1使用rqt_rviz在3D世界中實現數據可視化83 
3.9.2主題與坐標系的關係86 
3.9.3可視化坐標變換87 
3.10保存與回放數據88 
3.10.1什麼是消息記錄包文件89 
3.10.2使用rosbag在消息記錄包文件中記錄數據89 
3.10.3回放消息記錄包文件90 
3.10.4查看消息記錄包文件的主題和消息91 
3.11應用rqt與rqt_gui插件93 
3.12本章小結93 

第4章3D建模與仿真95 
4.1在ROS中自定義機器人的3D模型95 
4.2創建第一個URDF文件95 
4.2.1解釋文件格式97 
4.2.2在rviz裡查看3D模型98 
4.2.3加載網格到機器人模型中100 
4.2.4使機器人模型運動100 
4.2.5物理和碰撞屬性101 
4.3 xacro——一種更好的機器人建模方法102 
4.3.1使用常量102 
4.3 .2使用數學方法103 
4.3.3使用宏103 
4.3.4使用代碼移動機器人103
4.3.5使用SketchUp進行3D建模107 
4.4在ROS中仿真109 
4.4.1在Gazebo中使用URDF 3D模型109 
4.4.2在Gazebo中添加傳感器112 
4.4.3在Gazebo中加載和使用地圖115 
4.4.4在Gazebo中移動機器人116 
4.5本章小結118 

第5章導航功能包集入門119 
5.1 ROS導航功能包集119 
5.2創建變換120 
5.2.1創建廣播器121 
5.2.2創建偵聽器121 
5.2.3查看坐標變換樹124 
5.3發布傳感器信息124 
5.4發布里程數據信息127 
5.4.1 Gazebo如何獲取里程數據128 
5.4.2使用Gazebo創建里程數據131 
5.4.3創建自定義里程數據132 
5.5創建基礎控制器135 
5.6使用ROS創建地圖139 
5.6.1使用map_server保存地圖141 
5.6.2使用map_server加載地圖141 
5.7本章小結142 

第6章導航功能包集進階144 
6.1創建功能包144 
6.2創建機器人配置144 
6.3配置全局和局部代價地圖147
6.3.1基本參數的配置147 
6.3.2全局代價地圖的配置148 
6.3.3局部代價地圖的配置149 
6.3.4底盤局部規劃器配置149 
6.4為導航功能包集創建啟動文件150 
6.5為導航功能包集設置rviz 151 
6.5.12D位姿估計152 
6.5.22D導航目標152 
6.5.3靜態地圖154 
6.5.4粒子云154 
6.5.5機器人佔地空間155 
6.5.6局部代價地圖156 
6.5.7全局代價地圖156 
6.5.8全局規劃157 
6.5.9局部規劃158 
6.5.10規劃器規劃158 
6.5.11當前目標159 
6.6自適應蒙特卡羅定位160 
6.7使用rqt_reconfigure修改參數161 
6.8機器人避障162 
6.9發送目標163 
6.10本章小結166 

第7章使用MoveIt!167 
7.1 MoveIt!體系結構167 
7.1.1運動規劃169 
7.1.2規劃場景169 
7.1.3世界幾何結構顯示器170 
7.1.4運動學170 
7.1.5碰撞檢測170
7.2在MoveIt!中集成一個機械臂171 
7.2.1工具箱裡有什麼171 
7.2.2使用設置助手生成一個MoveIt!功能包172 
7.2.3集成到RViz中176 
7.2.4集成到Gazebo或實際機械臂中179 
7.3簡單的運動規劃180 
7.3.1規劃單個目標181 
7.3.2規劃一個隨機目標181 
7.3.3規劃預定義的群組狀態183 
7.3.4顯示目標的運動183 
7.4考慮碰撞的運動規劃184 
7.4.1將對象添加到規劃場景中184 
7.4.2從規劃的場景中刪除對象185 
7.4.3應用點雲進行運動規劃186 
7.5抓取和放置任務187 
7.5.1規劃的場景188 
7.5.2要抓取的目標對象189 
7.5.3支撐面189 
7.5.4感知191 
7.5.5抓取191 
7.5.6抓取操作193 
7.5.7放置操作195 
7.5.8演示模式197 
7.5.9在Gazebo中仿真198 
7.6本章小結199 

第8章在ROS下使用傳感器和執行器200 
8.1使用遊戲桿或遊戲手柄200
8.1.1 joy_node如何發送遊戲桿動作消息201 
8.1.2使用遊戲桿數據移動機器人模型202 
8.2使用Arduino添加更多的傳感器和執行器206 
8.2.1創建使用Arduino的示例程序207 
8.2.2由ROS和Arduino控制的機器人平台210 
8.3使用9自由度低成本IMU 217 
8.3.1安裝Razor IMU ROS庫219 
8.3.2 Razor如何在ROS中發送數據221 
8.3.3創建一個ROS節點以使用機器人中的9DoF傳感器數據222 
8.3.4使用機器人定位來融合傳感器數據223 
8.4使用IMU——Xsens MTi 225 
8.5 GPS的使用226 
8.5.1 GPS如何發送信息228 
8.5.2創建一個使用GPS的工程示例229 
8.6使用激光測距儀——Hokuyo URG—04lx 230 
8.6.1了解激光如何在ROS中發送數據231 
8.6.2訪問和修改激光數據232 
8.7創建launch文件234 
8.8使用Kinect傳感器查看3D環境中的對象235 
8.8.1 Kinect如何發送和查看傳感器數據236 
8.8.2創建使用Kinect的示例238 
8.9使用伺服電動機——Dynamixel 239
8.9.1 Dynamixel如何發送和接收運動命令241 
8.9.2創建和使用伺服電動機示例241 
8.10本章小結243 

第9章計算機視覺244 
9.1 ROS攝像頭驅動程序支持245 
9.1.1 FireWire IEEE1394攝像頭245 
9.1.2 USB攝像頭249 
9.1.3使用OpenCV製作USB攝像頭驅動程序250 
9.2 ROS圖像255 
9.3 ROS中的OpenCV庫256 
9.3.1安裝OpenCV 3.0256 
9.3.2在ROS中使用OpenCV 256 
9.4使用rqt_image_view顯示攝像頭輸入的圖像257 
9.5標定攝像頭257 
9.5.1如何標定攝像頭258 
9.5.2雙目標定261 
9.6 ROS圖像管道264 
9.7計算機視覺任務中有用的ROS功能包269 
9.7.1視覺里程計270 
9.7.2使用viso2實現視覺里程計270 
9.7. 3攝像頭位姿標定271 
9.7.4運行viso2在線演示273 
9.7.5使用低成本雙目攝像頭運行viso2276 
9.8使用RGBD深度攝像頭實現視覺里程計276 
9.8.1安裝fovis 276
9.8.2用Kinect RGBD深度攝像頭運行fovis 277 
9.9計算兩幅圖像的單應性278 
9.10本章小結279 

第10章點雲280 
10.1理解點雲庫280 
10.1.1不同的點雲類型281 
10.1.2 PCL中的算法281 
10.1.3 ROS的PCL接口282 
10.2我的第一個PCL程序283 
10.2.1創建點雲284 
10.2.2加載和保存點雲到硬盤中287 
10.2.3可視化點雲290 
10.2.4濾波和縮減採樣294 
10.2.5配準與匹配298 
10.2.6點雲分區301 
10.3分割305 
10.4本章小結308