機器人系統設計與製作:Python語言實現(原書第2版)
內容描述
機器人操作系統(ROS)是科研和工業領域非常受歡迎的機器人軟件框架。
該系統性能強大,可以在機器人中實現多種功能,而不需要從零開始實施。
本書首先介紹機器人操作系統的基礎知識,以便你了解差分驅動機器人的基本原理。
然後,介紹機器人建模知識以及如何使用機器人操作系統進行設計和模擬。
接著設計機器人硬件和接口驅動器。
之後,講述如何使用機器人操作系統對深度傳感器和激光雷達進行配置和編程。
最後,使用Qt框架為機器人創建圖形用戶界面。
學習完本書內容後,你將清楚地了解如何將所有元素集成和組裝到機器人中,以及如何捆綁軟件包。
目錄大綱
目錄
前言
第1章 ROS入門
1.1 技術要求
1.2 ROS概述
1.2.1 ROS框架
1.2.2 在Ubuntu上安裝ROS
1.2.3 什麼是catkin
1.2.4 創建ROS軟件包
1.2.5 什麼是Gazebo
1.3 本章小結
1.4 習題
第2章 差分驅動機器人的基礎知識
2.1 數學建模
2.2 正向運動學
2.3 逆向運動學
2.4 本章小結
2.5 習題
2.6 擴展閱讀
第3章 差分驅動機器人的建模
3.1 技術要求
3.2 服務機器人的設計要求
3.3 機器人的傳動裝置
3.3.1 選擇電機和輪子
3.3.2 設計小結
3.3.3 機器人底盤設計
3.4 安裝LibreCAD、Blender和MeshLab
3.4.1 安裝LibreCAD
3.4.2 安裝Blender
3.4.3 安裝MeshLab
3.5 用LibreCAD生成機器人的二維CAD圖
3.5.1 底座設計
3.5.2 底座連接桿設計
3.5.3 輪子、電機和電機夾具設計
3.5.4 腳輪設計
3.5.5 中間層設計
3.5.6 頂層設計
3.6 用Blender製作機器人的三維模型
3.6.1 在Blender中編寫Python腳本
3.6.2 Blender Python API
3.6.3 機器人模型的Python腳本
3.7 創建機器人的URDF模型
3.8 本章小結
3.9 習題
3.10 擴展閱讀
第4章 利用ROS模擬差分驅動機器人
4.1 技術要求
4.2 開始使用Gazebo仿真器
4.3 結合TurtleBot 2進行仿真工作
4.4 創建ChefBot仿真
4.4.1 深度圖像到激光掃描的轉換
4.4.2 Gazebo仿真的URDF標籤和插件
4.5 可視化機器人傳感器數據
4.5.1 即時定位與地圖構建
4.5.2 使用SLAM創建地圖
4.5.3 自適應蒙特卡羅定位
4.5.4 在Gazebo環境中實現AMCL
4.5.5 ChefBot在酒店中使用Gazebo進行自主導航
4.6 本章小結
4.7 習題
4.8 擴展閱讀
第5章 設計ChefBot的硬件和電路
5.1 技術要求
5.2 ChefBot硬件規格
5.3 機器人框圖
5.3.1 電機和編碼器
5.3.2 電機驅動器
5.3.3 嵌入式控制器板
5.3.4 超聲傳感器
5.3.5 慣性測量單元
5.3.6 Kinect/Orbbec Astra
5.3.7 中央處理單元
5.3.8 揚聲器和麥克風
5.3.9 電源和電池
5.4 ChefBot硬件的工作原理
5.5 本章小結
5.6 習題
5.7 擴展閱讀
第6章 將執行器和傳感器連接到機器人控制器
6.1 技術要求
6.2 直流減速電機接入Tiva-C開發板
6.2.1 差分驅動輪式機器人
6.2.2 安裝Energia IDE
6.2.3 電機接口代碼
6.3 正交編碼器接入Tiva-C開發板
6.3.1 編碼器數據的處理
6.3.2 正交編碼器接口代碼
6.4 使用Dynamixel執行器
6.5 使用超聲測距傳感器
6.6 使用紅外接近傳感器
6.7 使用慣性測量單元
6.7.1 慣性導航
6.7.2 將MPU 6050與Tiva-C開發板連接
6.7.3 在Energia中編寫接口代碼
6.8 本章小結
6.9 習題
6.10 擴展閱讀
第7章 視覺傳感器接入ROS
7.1 技術要求
7.2 機器人視覺傳感器和圖像處理庫
7.2.1 Pixy2/CMUcam5
7.2.2 羅技C920網絡攝像頭
7.2.3 Kinect
7.2.4 英特爾RealSense D400系列
7.2.5 Orbbec Astra深度傳感器
7.3 OpenCV、OpenNI和PCL概述
7.3.1 OpenCV
7.3.2 OpenNI
7.3.3 PCL
7.4 使用ROS、OpenCV和OpenNI進行Kinect的Python編程
7.4.1 啟動OpenNI驅動程序的方法
7.4.2 OpenCV的ROS接口
7.5 連接Orbbec Astra與ROS
7.6 使用Kinect、ROS、OpenNI和PCL處理點雲
7.7 將點雲數據轉換為激光掃描數據
7.8 使用ROS和Kinect實現SLAM算法
7.9 本章小結
7.10 習題
7.11 擴展閱讀
第8章 ChefBot硬件構建和軟件集成
8.1 技術要求
8.2 構建ChefBot硬件
8.3 配置ChefBot PC並設置ChefBot ROS軟件包
8.4 連接ChefBot傳感器和Tiva-C
8.5 編寫ChefBot的ROS Python驅動程序
8.6 了解ChefBot ROS啟動文件
8.7 使用ChefBot Python節點和啟動文件
8.7.1 使用SLAM在ROS上繪製房間地圖
8.7.2 使用ROS定位和導航
8.8 本章小結
8.9 習題
8.10 擴展閱讀
第9章 使用Qt和Python開發機器人GUI
9.1 技術要求
9.2在Ubuntu 16.04 LTS中安裝Qt
9.3 在Qt中使用Python綁定進行開發
9.3.1 PyQt
9.3.2 PySide
9.4 使用PyQt和PySide進行開發
9.4.1 Qt設計器
9.4.2 Qt信號與槽機制
9.4.3 將UI文件轉化為Python代碼
9.4.4 向PyQt代碼中添加槽定義
9.4.5 Hello World GUI應用程序的操作方法
9.5 使用ChefBot的控制GUI進行開發
9.6 在Ubuntu 16.04 LTS中安裝和使用rqt
9.7 本章小結
9.8 習題
9.9 擴展閱讀
習題解答
作者介紹
Lentin Joseph
是一位來自印度的作家、機器人學家和機器人企業家。
他在印度喀拉拉邦的高知市經營一家名為Qbotics Labs的機器人軟件公司。
他在機器人領域有8年的工作經驗,主要致力於ROS、OpenCV和PCL領域。
他寫過幾本關於ROS的書,分別是《機器人系統設計與製作:Python語言實現》
《精通ROS機器人編程》《ROS機器人項目開發11例》以及
《機器人操作系統(ROS)入門必備:機器人編程一學就會》。
他在印度獲得了機器人學和自動化專業碩士學位,
並在美國卡內基-梅隆大學的機器人研究所工作。
他也是TEDx演講者。