在機(jī)器人的科研與工業(yè)應(yīng)用中,機(jī)器人仿真與編程技術(shù)發(fā)揮著無(wú)可替代的作用,因?yàn)樗环矫婺軌驅(qū)C(jī)器人控制算法進(jìn)行檢驗(yàn)測(cè)試,另一方面給機(jī)器人的研發(fā)與測(cè)試提供一個(gè)無(wú)風(fēng)險(xiǎn)且穩(wěn)定的平臺(tái)。
本書(shū)主要內(nèi)容分為三部分,分別介紹了基于MATLAB機(jī)器人工具箱的機(jī)器人仿真、3款常用的機(jī)器人仿真軟件、機(jī)器人操作系統(tǒng)(Robot Operating System,ROS)的基礎(chǔ)和應(yīng)用。本書(shū)所使用的工具包括MATLAB、Simulink、3款常用的機(jī)器人仿真軟件和機(jī)器人操作系統(tǒng)。
本書(shū)配套資源豐富,適合作為教材或教輔,也適合各階層的機(jī)器人開(kāi)發(fā)人員和機(jī)器人愛(ài)好者閱讀。
《機(jī)器人仿真與編程技術(shù)》主要分為三篇,*篇介紹了基于MATLAB機(jī)器人工具箱的機(jī)器人仿真,第二篇介紹了三款常用的機(jī)器人仿真軟件,第三篇介紹了機(jī)器人操作系統(tǒng)(Robot Operating System,簡(jiǎn)稱(chēng)ROS)的基礎(chǔ)和應(yīng)用!稒C(jī)器人仿真與編程技術(shù)》中所使用的工具包括了MATLAB/SIMULINK、幾款常用的機(jī)器人仿真軟件、機(jī)器人操作系統(tǒng)(ROS)。這些工具一方面可以用于機(jī)器人學(xué)的理論知識(shí)進(jìn)行實(shí)際驗(yàn)證與研究,另一方面用于對(duì)機(jī)器人的設(shè)計(jì)、仿真與測(cè)試。同時(shí),這些工具大多具有開(kāi)源的特點(diǎn),而且它們相互之間有方便快捷的接口,能夠發(fā)揮各自的優(yōu)勢(shì),實(shí)現(xiàn)更強(qiáng)大的仿真、編程功能。如今,這些仿真工具都已廣泛應(yīng)用于機(jī)器人設(shè)計(jì)、研發(fā)和科學(xué)研究等方面,尤其是機(jī)器人操作系統(tǒng)越來(lái)越成為機(jī)器人領(lǐng)域中重要的應(yīng)用系統(tǒng)。
前言
機(jī)器人技術(shù)是衡量一個(gè)國(guó)家科技創(chuàng)新和高端制造業(yè)水平的重要標(biāo)志。隨著機(jī)器人技術(shù)的快速發(fā)展,它的應(yīng)用領(lǐng)域涉及工業(yè)、服務(wù)、航空航天、軍事等方面,因此需要一批熟練掌握機(jī)器人技術(shù)的創(chuàng)新型人才。
傳統(tǒng)的機(jī)器人教材大多側(cè)重于對(duì)機(jī)器人學(xué)理論知識(shí)的探討,往往涉及比較多的矩陣?yán)碚、控制理論的知識(shí),對(duì)于讀者來(lái)說(shuō)比較抽象。另一方面,這些知識(shí)面難以培養(yǎng)讀者的動(dòng)手能力,難以取得良好的實(shí)踐效果。因此需要將理論與實(shí)踐相結(jié)合。本書(shū)將機(jī)器人學(xué)的理論和應(yīng)用相結(jié)合,一方面概要地介紹了機(jī)器人學(xué)的理論,另一方面著力于介紹機(jī)器人的仿真和編程技術(shù)。
在機(jī)器人的科研與工業(yè)應(yīng)用中,機(jī)器人仿真與編程技術(shù)發(fā)揮著無(wú)可替代的作用,這是因?yàn)樗环矫婺軌驅(qū)C(jī)器人控制算法進(jìn)行檢驗(yàn)測(cè)試,另一方面給機(jī)器人的研發(fā)與測(cè)試提供一個(gè)無(wú)風(fēng)險(xiǎn)且穩(wěn)定的平臺(tái)。本書(shū)所使用的工具包括MATLAB/Simulink、3款常用的機(jī)器人仿真軟件和機(jī)器人操作系統(tǒng)(Robot Operating System,ROS)。這些工具一方面可以用于將機(jī)器人學(xué)的理論知識(shí)進(jìn)行實(shí)際驗(yàn)證與研究,另一方面用于對(duì)機(jī)器人進(jìn)行設(shè)計(jì)、仿真與測(cè)試。同時(shí),這些工具大多具有開(kāi)源的特點(diǎn),而且它們相互之間有方便快捷的接口,能夠發(fā)揮各自的優(yōu)勢(shì),實(shí)現(xiàn)更強(qiáng)大的仿真、編程功能。如今,這些仿真工具都已廣泛應(yīng)用于機(jī)器人設(shè)計(jì)、研發(fā)和科學(xué)研究等方面,尤其是機(jī)器人操作系統(tǒng),成為機(jī)器人領(lǐng)域越來(lái)越重要的應(yīng)用系統(tǒng)。
本書(shū)的內(nèi)容主要分為三篇,第一篇介紹了基于MATLAB機(jī)器人工具箱的機(jī)器人仿真,第二篇介紹了3款常用的機(jī)器人仿真軟件,第三篇介紹了機(jī)器人操作系統(tǒng)的基礎(chǔ)和應(yīng)用。
在第一篇中,從機(jī)器人學(xué)的理論入手,講述了機(jī)器人學(xué)中的數(shù)學(xué)基礎(chǔ)、機(jī)器人運(yùn)動(dòng)學(xué)、機(jī)器人動(dòng)力學(xué)、機(jī)器人控制和軌跡。然后針對(duì)每一部分理論內(nèi)容,介紹了如何使用MATLAB機(jī)器人工具箱去解決相關(guān)的問(wèn)題。最后,以作者的一些科研成果作為實(shí)例,介紹了MATLAB機(jī)器人工具箱在科研中的應(yīng)用。
在第二篇中,介紹了3款機(jī)器人仿真軟件: VREP、Gazebo和OpenRAVE。它們作為機(jī)器人的仿真工具,能夠?qū)C(jī)器人及其工作平臺(tái)進(jìn)行3D建模和3D渲染,搭建與現(xiàn)實(shí)類(lèi)似的機(jī)器人模型,并具備豐富的物理引擎,能夠?qū)C(jī)器人在虛擬的物理?xiàng)l件下的運(yùn)動(dòng)進(jìn)行仿真。
在第三篇中,主要介紹了機(jī)器人操作系統(tǒng)。ROS是一個(gè)適用于機(jī)器人的開(kāi)源的操作系統(tǒng)。它提供了操作系統(tǒng)應(yīng)有的服務(wù),包括硬件抽象、底層設(shè)備控制、常用函數(shù)的實(shí)現(xiàn)、進(jìn)程間消息傳遞,以及包管理。它也提供用于獲取、編譯、編寫(xiě)和跨計(jì)算機(jī)運(yùn)行代碼所需的工具和庫(kù)函數(shù)。這部分主要講述了ROS的概念、應(yīng)用和相關(guān)的基礎(chǔ),然后以Baxter機(jī)器人為應(yīng)用對(duì)象,介紹了ROS在機(jī)器人中的相關(guān)編程技術(shù)。
本書(shū)適用于高校的教師作為教材或教輔,同時(shí)適合各層次的機(jī)器人開(kāi)發(fā)人員和機(jī)器人愛(ài)好者閱讀。教師在以本書(shū)作為教材時(shí),可以利用本書(shū)提供的工具,布置一些能夠鍛煉學(xué)生動(dòng)手能力、激勵(lì)學(xué)生創(chuàng)新思維的課程作業(yè)。初學(xué)機(jī)器人學(xué)的學(xué)生在閱讀本書(shū)時(shí),可以參考一些對(duì)于機(jī)器人學(xué)理論介紹更全面的書(shū)籍,同時(shí)要利用好本書(shū)介紹的工具,去動(dòng)手搭建機(jī)器人模型或編寫(xiě)相關(guān)代碼。
在本書(shū)的編寫(xiě)過(guò)程中得到了編者所在實(shí)驗(yàn)室曾超、羅晶、王行健、彭光柱、吳懷煒、陳垂?jié)伞㈥愋劬、葉宇航、王尊冉、黃典業(yè)、梁聰垣等的支持和幫助,編者在此表示謝意。
由于編者水平有限,對(duì)于書(shū)中存在的欠缺之處,敬請(qǐng)讀者批評(píng)指正。
作者
2017年11月
目錄
第一篇基于MATLAB工具箱的機(jī)器人仿真
第1章機(jī)器人學(xué)與MATLAB機(jī)器人工具箱
1.1MATLAB機(jī)器人工具箱的下載與安裝
1.2機(jī)器人學(xué)的數(shù)學(xué)基礎(chǔ)
1.2.1三維空間中的位置與姿態(tài)
1.2.2坐標(biāo)變換
1.2.3姿態(tài)的其他表示方法
1.2.4具體例子的應(yīng)用
1.3機(jī)器人運(yùn)動(dòng)學(xué)
1.3.1機(jī)械臂及運(yùn)動(dòng)學(xué)
1.3.2DH參數(shù)法
1.3.3機(jī)器人正運(yùn)動(dòng)學(xué)
1.3.4機(jī)器人逆運(yùn)動(dòng)學(xué)
1.3.5機(jī)器人的瞬態(tài)運(yùn)動(dòng)學(xué)
1.3.6具體例子的應(yīng)用
1.3.7機(jī)器人工具箱的Link類(lèi)
1.3.8機(jī)器人工具箱的SerialLink類(lèi)1
1.4機(jī)器人動(dòng)力學(xué)
1.4.1機(jī)器人動(dòng)力學(xué)概述
1.4.2機(jī)器人動(dòng)力學(xué)方程的建立方法
1.4.3狀態(tài)空間方程
1.4.4正向動(dòng)力學(xué)
1.4.5機(jī)器人工具箱的SerialLink類(lèi)2
1.5機(jī)器人的運(yùn)動(dòng)軌跡
1.5.1運(yùn)動(dòng)軌跡問(wèn)題
1.5.2關(guān)節(jié)空間的規(guī)劃方法
1.6機(jī)械臂關(guān)節(jié)控制
1.6.1機(jī)器人控制系統(tǒng)的構(gòu)成
1.6.2Simulink機(jī)器人模塊
1.6.3機(jī)器人的單關(guān)節(jié)控制
1.6.4機(jī)器人的多關(guān)節(jié)控制
1.7其他基于MATLAB的機(jī)器人工具箱
1.7.1Kuka控制工具箱(KCT)的介紹與測(cè)試
1.7.2其他機(jī)器人工具箱
本章小結(jié)
參考文獻(xiàn)
第2章MATLAB機(jī)器人工具箱的應(yīng)用
2.1基于學(xué)習(xí)算法的機(jī)器人觸覺(jué)識(shí)別算法研究
2.1.1引言
2.1.2背景
2.1.3算法設(shè)計(jì)
2.1.4實(shí)驗(yàn)設(shè)計(jì)
2.1.5實(shí)驗(yàn)與結(jié)果
2.2基于波動(dòng)變量和神經(jīng)網(wǎng)絡(luò)的遠(yuǎn)程控制系統(tǒng)
2.2.1引言
2.2.2遠(yuǎn)程操作系統(tǒng)的數(shù)學(xué)模型
2.2.3基于波動(dòng)變量的神經(jīng)控制設(shè)計(jì)
2.2.4實(shí)驗(yàn)設(shè)計(jì)
2.2.5仿真實(shí)驗(yàn)
2.3開(kāi)發(fā)混合運(yùn)動(dòng)捕捉方法使用MYO手環(huán)應(yīng)用于遠(yuǎn)程操作
2.3.1引言
2.3.2設(shè)計(jì)方法
2.3.3仿真系統(tǒng)設(shè)計(jì)
2.3.4仿真實(shí)驗(yàn)
2.4基于自適應(yīng)參數(shù)識(shí)別的Geomagic
Touch X觸覺(jué)裝置運(yùn)動(dòng)學(xué)建模
2.4.1引言
2.4.2建模步驟
2.4.3仿真設(shè)計(jì)
2.4.4實(shí)驗(yàn)和仿真
2.4.5可視化運(yùn)動(dòng)學(xué)模型與工作空間識(shí)別
2.5復(fù)雜擾動(dòng)環(huán)境中的新型機(jī)械臂混合自適應(yīng)控制器
2.5.1引言
2.5.2控制問(wèn)題
2.5.3自適應(yīng)控制
2.5.4仿真
2.5.5實(shí)驗(yàn)設(shè)計(jì)
2.5.6實(shí)驗(yàn)與結(jié)果
本章小結(jié)
參考文獻(xiàn)
第二篇機(jī)器人仿真軟件的基礎(chǔ)與應(yīng)用
第3章VREP在機(jī)器人仿真中的應(yīng)用
3.1VREP簡(jiǎn)介及安裝
3.1.1VREP的簡(jiǎn)介
3.1.2VREP的特性
3.1.3VREP的安裝
3.2VREP的用戶(hù)界面及位姿操作
3.2.1控制臺(tái)窗口
3.2.2對(duì)話框
3.2.3應(yīng)用程序窗口
3.2.4自定義用戶(hù)界面
3.2.5頁(yè)面與視圖
3.2.6對(duì)象/項(xiàng)目位置和方向操作
3.3VREP的場(chǎng)景與模型
3.3.1場(chǎng)景與模型的關(guān)系
3.3.2VREP的場(chǎng)景
3.3.3VREP的模型
3.3.4VREP的環(huán)境
3.4實(shí)體
3.4.1VREP的場(chǎng)景對(duì)象
3.4.2場(chǎng)景對(duì)象的性質(zhì)
3.4.3常用的場(chǎng)景對(duì)象形狀
3.4.4常用的場(chǎng)景對(duì)象關(guān)節(jié)
3.4.5VREP的集合
3.5VREP的六種計(jì)算模塊
3.5.1碰撞檢測(cè)模塊
3.5.2最小距離計(jì)算模塊
3.5.3逆向運(yùn)動(dòng)學(xué)模塊
3.5.4幾何約束求解模塊
3.5.5動(dòng)力學(xué)模塊
3.5.6路徑規(guī)劃模塊
3.6VREP中控制機(jī)器人仿真的方法
3.6.1嵌入式子腳本
3.6.2插件
3.6.3附加組件
3.6.4遠(yuǎn)程客戶(hù)端應(yīng)用程序接口
3.6.5通過(guò)ROS的節(jié)點(diǎn)
3.6.6自定義解決方案
3.7VREP的API框架
3.7.1常規(guī)API
3.7.2遠(yuǎn)程API
3.7.3ROS接口
3.7.4輔助API
3.7.5其他接口
3.8仿真模型的搭建
3.8.1從模型瀏覽器中加載現(xiàn)有模型
3.8.2從菜單欄中添加場(chǎng)景對(duì)象
3.8.3從Import命令中導(dǎo)入/導(dǎo)出其他軟件的CAD模型
3.9機(jī)器人的仿真
3.9.1物理引擎的選擇
3.9.2仿真參數(shù)的設(shè)置
3.9.3仿真的控制
3.10VREP的具體例子
3.10.1機(jī)械臂模型的構(gòu)建
3.10.2逆運(yùn)動(dòng)學(xué)建模
3.10.3VREP與MATLAB連接的例子
3.11VREP在人機(jī)交互中的應(yīng)用(一)
3.11.1觸覺(jué)學(xué)與Touch X
3.11.2Touch X的相關(guān)軟件在人機(jī)交互中的作用
3.11.3CHAI3D在人機(jī)交互中的作用
3.11.4VREP模塊
3.11.5Touch X控制VREP中KUKA機(jī)器人的實(shí)現(xiàn)
3.12VREP在人機(jī)交互中的應(yīng)用(二)
3.12.1體感技術(shù)與Kinect
3.12.2交互相關(guān)軟件的作用
3.12.3交互相關(guān)軟件的安裝與測(cè)試
3.12.4OpenNI/NITE中的人體骨架分析
3.12.5VREP與Kinect接口的安裝與測(cè)試
3.12.6Kinect與VREP交互的設(shè)計(jì)與實(shí)現(xiàn)
本章小結(jié)
參考文獻(xiàn)
第4章Gazebo在機(jī)器人仿真中的應(yīng)用
4.1Gazebo的介紹與安裝
4.1.1Gazebo的初步介紹
4.1.2Gazebo的安裝
4.1.3Gazebo與VREP的比較
4.2Gazebo的結(jié)構(gòu)
4.2.1Gazebo的運(yùn)行方法
4.2.2Gazebo的組成部分
4.2.3Gazebo的結(jié)構(gòu)
4.3創(chuàng)建機(jī)器人
4.3.1模型結(jié)構(gòu)和要求
4.3.2模型的上傳
4.3.3制作一個(gè)模型
4.3.4制作移動(dòng)機(jī)器人模型
4.3.5導(dǎo)入網(wǎng)格
4.3.6附加網(wǎng)格物體
4.3.7給機(jī)器人添加傳感器
4.3.8做一個(gè)簡(jiǎn)單的夾持器
4.3.9在機(jī)器人上構(gòu)建夾持器
4.3.10嵌套模型
4.3.11模型編輯器
4.3.12盒子的動(dòng)畫(huà)
4.3.13三角網(wǎng)格的慣性參數(shù)
4.3.14圖層可見(jiàn)性
4.4Gazebo中的模型編輯器
4.4.1模型編輯器
4.4.2SVG文件
4.5場(chǎng)景文件的創(chuàng)建
4.5.1創(chuàng)建一個(gè)場(chǎng)景
4.5.2修改場(chǎng)景
4.5.3如何在Gazebo中使用DEM
4.5.4模型群
4.5.5建筑編輯器
4.6插件的編寫(xiě)
4.6.1一個(gè)簡(jiǎn)單的插件: Hello WorldPlugin!
4.6.2插件的使用
4.6.3模型插件
4.6.4世界插件
4.6.5程序化場(chǎng)景控制
4.6.6系統(tǒng)插件
4.7傳感器
4.7.1傳感器噪聲模型
4.7.2接觸式傳感器
4.7.3攝像頭失真
4.8Gazebo的其他功能
4.8.1數(shù)學(xué)庫(kù)的使用
4.8.2用戶(hù)輸入
4.8.3連接到Player
本章小結(jié)
參考文獻(xiàn)
第5章OpenRAVE在機(jī)器人仿真中的應(yīng)用
5.1OpenRAVE簡(jiǎn)介
5.1.1OpenRAVE的應(yīng)用
5.1.2OpenRAVE的特性
5.1.3OpenRAVE的下載與安裝
5.2OpenRAVE概觀
5.2.1OpenRAVE基本架構(gòu)
5.2.2關(guān)于OpenRAVE中的一些說(shuō)明
5.2.3OpenRAVE公約與準(zhǔn)則
5.2.4OpenRAVE中機(jī)器人概述
5.2.5插件與接口說(shuō)明
5.2.6網(wǎng)絡(luò)協(xié)議和腳本
5.3OpenRAVE的基礎(chǔ)
5.3.1開(kāi)始使用OpenRAVE
5.3.2OpenRAVE的命令行工具
5.3.3寫(xiě)OpenRAVE文檔
5.3.4環(huán)境變量
5.4OpenRAVE運(yùn)用與展望
5.4.1OpenRAVE的運(yùn)用項(xiàng)目舉例
5.4.2OpenRAVE的展望
本章小結(jié)
參考文獻(xiàn)
第三篇機(jī)器人操作系統(tǒng)基礎(chǔ)與應(yīng)用
第6章機(jī)器人操作系統(tǒng)的基礎(chǔ)
6.1ROS的安裝與測(cè)試
6.1.1虛擬機(jī)與Ubuntu的安裝
6.1.2ROS的安裝
6.1.3turtlesim例子的測(cè)試
6.2ROS的基本概念與命令
6.2.1程序包(packages)
6.2.2節(jié)點(diǎn)(Nodes)和節(jié)點(diǎn)管理器(Master)
6.2.3消息(Messages)和主題(Topics)
6.2.4其他ROS的相關(guān)概念
6.2.5ROS的一些常用工具
6.3ROS的程序包的創(chuàng)建與編譯
6.3.1創(chuàng)建工作區(qū)和功能包
6.3.2ROS程序的編譯過(guò)程
6.4ROS與MATLAB集成
6.4.1RST的ROS功能介紹
6.4.2MATLAB與ROS通信的介紹
6.5ROS與VREP之間的集成
6.5.1VREP中的ROS程序包
6.5.2在ROS中安裝VREP
6.5.3在ROS中創(chuàng)建相關(guān)的VREP程序包
6.5.4使用ROS節(jié)點(diǎn)控制VREP模型的例子
6.5.5VREP ROS Bridge的簡(jiǎn)介及安裝
6.6ROS與Gazebo
6.6.1ROS集成概述
6.6.2安裝Gazebo_ros_pkgs
6.6.3ROS/Gazebo版本組合的選擇
6.6.4使用roslaunch
6.6.5ROS通信
6.6.6Gazebo中的URDF
6.7實(shí)時(shí)系統(tǒng)ROS 2.0的介紹
本章小結(jié)
參考文獻(xiàn)
第7章機(jī)器人操作系統(tǒng)的應(yīng)用
7.1Baxter機(jī)器人與ROS
7.1.1Baxter機(jī)器人
7.1.2Baxter機(jī)器人的控制系統(tǒng)總體框架
7.1.3相關(guān)的ROS代碼
7.2基于神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)對(duì)搖操作機(jī)器人進(jìn)行高性能控制
7.2.1控制系統(tǒng)的架構(gòu)
7.2.2實(shí)驗(yàn)設(shè)計(jì)與實(shí)現(xiàn)
7.2.3實(shí)驗(yàn)及結(jié)果
7.3規(guī)定全局穩(wěn)定性和運(yùn)動(dòng)精度的雙臂機(jī)器人的神經(jīng)網(wǎng)絡(luò)控制
7.3.1實(shí)驗(yàn)設(shè)計(jì)與實(shí)現(xiàn)
7.3.2實(shí)驗(yàn)結(jié)果
7.4基于人體運(yùn)動(dòng)捕獲對(duì)Baxter機(jī)器人的遠(yuǎn)程操作控制
7.4.1遠(yuǎn)程操作控制系統(tǒng)
7.4.2實(shí)驗(yàn)的設(shè)計(jì)與實(shí)現(xiàn)
7.4.3實(shí)驗(yàn)及結(jié)果
本章小結(jié)
參考文獻(xiàn)