本書以智能網(wǎng)聯(lián)汽車ROS基礎(chǔ)知識為核心內(nèi)容,介紹智能網(wǎng)聯(lián)汽車開發(fā)平臺ROS的基本概念和使用方法,包括節(jié)點(diǎn)、ROS通信機(jī)制、坐標(biāo)轉(zhuǎn)換等內(nèi)容。通過學(xué)習(xí)Linux操作指令、ROS指令、ROS通信管理機(jī)制、可視化工具和智能網(wǎng)聯(lián)汽車組成架構(gòu)等知識,完成智能網(wǎng)聯(lián)汽車虛擬化模型的搭建。
本書適合高職院校智能交通技術(shù)專業(yè)、汽車工程、無人駕駛等相關(guān)專業(yè)用作教材,也可作為智能網(wǎng)聯(lián)、無人駕駛相關(guān)的企業(yè)人才培訓(xùn)、技能認(rèn)證等的培訓(xùn)用書。
本書以實(shí)操的方式全面地介紹了自動駕駛汽車編程知識,而且配套了完備的教學(xué)資源,可幫助學(xué)生快速掌握自動駕駛車輛的基礎(chǔ)原理以及結(jié)構(gòu)組成,也可滿足自動駕駛、智能網(wǎng)聯(lián)汽車等相關(guān)課程的教學(xué)需求。
前言
隨著全球汽車保有量的快速增長,能源短缺、環(huán)境污染、交通擁堵、事故頻發(fā)等社會問題日益突出,現(xiàn)已成為汽車行業(yè)可持續(xù)發(fā)展的制約因素。智能網(wǎng)聯(lián)汽車被公認(rèn)為是這些問題的有效解決方案,代表著未來汽車行業(yè)的發(fā)展方向,也是我國目前汽車工業(yè)轉(zhuǎn)型的重要方向之一。
關(guān)于本書
智能網(wǎng)聯(lián)汽車是智能汽車和車聯(lián)網(wǎng)結(jié)合的產(chǎn)物,對智能網(wǎng)聯(lián)汽車行業(yè)來說,自動駕駛必將成為終極目標(biāo)。隨著自動駕駛技術(shù)的成熟,自動駕駛必將全面取代人工駕駛,到那時大量的相關(guān)產(chǎn)業(yè)就需要懂得自動駕駛技術(shù)的人才。
本書以實(shí)操的方式全面地介紹了自動駕駛汽車編程知識,而且配套了完備的教學(xué)資源,可幫助學(xué)生快速掌握自動駕駛車輛的基礎(chǔ)原理以及結(jié)構(gòu)組成,也可滿足自動駕駛、智能網(wǎng)聯(lián)汽車等相關(guān)課程的教學(xué)需求。通過對此類相關(guān)課程的學(xué)習(xí),學(xué)生畢業(yè)后可從事與自動駕駛相關(guān)產(chǎn)業(yè)的售后甚至研發(fā)工作,為自動駕駛產(chǎn)業(yè)爆發(fā)式增長積蓄人才。
本書按照循序漸進(jìn)、由淺入深的方式,介紹了ROS(機(jī)器人操作系統(tǒng))的概念、ROS工程的搭建和配置、編寫一個ROS節(jié)點(diǎn),以及ROS通信機(jī)制等知識,相信它會是一本非常實(shí)用的實(shí)踐教學(xué)用書。本書要求讀者具備一定的C 語言以及Linux基礎(chǔ),沒有安裝ROS的小伙伴可以參照ROS官網(wǎng)上的安裝步驟自行安裝,本教程使用的環(huán)境為Ubuntu16.04 ROSkinetic。ROS安裝參考鏈接:http://wiki.ros.org/cn/kinetic/Installation/Ubuntu。
本書的可操作性較強(qiáng),既可參照書中的內(nèi)容編程和學(xué)習(xí),也可快速更好地掌握智能網(wǎng)聯(lián)汽車知識,快速查到自己所關(guān)心的問題的相關(guān)解決辦法。
關(guān)于作者
曾子銘畢業(yè)于英國威爾士大學(xué),博士后,深圳市高層次人才,深圳市創(chuàng)業(yè)導(dǎo)師,現(xiàn)為深圳職業(yè)技術(shù)學(xué)院汽車與交通學(xué)院教師,研究方向?yàn)闊o人駕駛、人工智能和計算機(jī)視覺。曾主持或參與國家及省市級課題12項(xiàng),作為作者發(fā)表SCI、EI檢索論文20篇,獲發(fā)明專利3項(xiàng)、實(shí)用新型專利6項(xiàng)。
深圳市元創(chuàng)興科技有限公司創(chuàng)立于2006年,是一家從事智能控制、機(jī)器人及人工智能教育方案的國家高新技術(shù)企業(yè),致力于智能控制、機(jī)器人和人工智能等相關(guān)技術(shù)的研發(fā),為企業(yè)和高校提供設(shè)備定制、實(shí)驗(yàn)室建設(shè)等全方位服務(wù)。
致謝
本書在編寫過程中,引入企業(yè)實(shí)戰(zhàn)資源和圖片,在此特向其作者和圖片制作者表示誠摯的謝意。
由于時間倉促,書中不足之處在所難免,懇盼讀者給予指正。希望本書的出版能對普及智能網(wǎng)聯(lián)汽車知識,發(fā)展智能網(wǎng)聯(lián)汽車起到積極的引導(dǎo)和促進(jìn)作用。
作者
2021年5月
曾子銘 畢業(yè)于英國威爾士大學(xué),博士后,深圳市高層次人才,深圳市創(chuàng)業(yè)導(dǎo)師,現(xiàn)為深圳職業(yè)技術(shù)學(xué)院汽車與交通學(xué)院教師,研究方向?yàn)闊o人駕駛、人工智能和計算機(jī)視覺。曾主持或參與國家及省市級課題12項(xiàng),作為作者發(fā)表SCI、EI檢索論文20篇,獲發(fā)明專利3項(xiàng)、實(shí)用新型專利6項(xiàng)。
深圳市元創(chuàng)興科技有限公司 創(chuàng)立于2006年,是一家從事智能控制、機(jī)器人及人工智能教育方案的國家高新技術(shù)企業(yè),致力于智能控制、機(jī)器人和人工智能等相關(guān)技術(shù)的研發(fā),為企業(yè)和高校提供設(shè)備定制、實(shí)驗(yàn)室建設(shè)等全方位服務(wù)。
第1章智能網(wǎng)聯(lián)汽車ROS認(rèn)知1
1.1什么是ROS3
1.2ROS在智能網(wǎng)聯(lián)汽車開發(fā)中的角色3
1.3ROS的總體目標(biāo)和特點(diǎn)4
1.3.1ROS設(shè)計的總體目標(biāo)4
1.3.2ROS的特點(diǎn)5
課后練習(xí)8
第2章認(rèn)識ROS工程9
2.1ROS環(huán)境搭建與配置9
2.1.1將Linux系統(tǒng)安裝到移動U盤9
2.1.2在Linux系統(tǒng)中安裝ROS18
2.2ROS工程的基本概念20
2.3Catkin工作空間21
2.3.1新建一個工作空間21
2.3.2編譯工作空間21
2.3.3工作空間的結(jié)構(gòu)23
2.4Package功能包24
2.4.1Package的結(jié)構(gòu)24
2.4.2CMakeLists.txt文件25
2.4.3package.xml文件26
2.4.4創(chuàng)建Package功能包26
2.4.5Package相關(guān)命令27
課后練習(xí)28
第3章編寫一個ROS節(jié)點(diǎn)30
3.1節(jié)點(diǎn)及節(jié)點(diǎn)管理器30
3.2roscpp30
3.3節(jié)點(diǎn)編寫過程32
3.3.1初始化節(jié)點(diǎn)32
3.3.2關(guān)閉節(jié)點(diǎn)32
3.3.3NodeHandle常用成員函數(shù)32
3.3.4節(jié)點(diǎn)編寫33
3.3.5CMakeLists.txt文件的修改34
3.3.6運(yùn)行生成的節(jié)點(diǎn)35
3.3.7rosnode命令36
3.4頭文件引用37
3.4.1引用當(dāng)前包頭文件37
3.4.2引用同一工作空間內(nèi)其他軟件包的頭文件39
3.5第三方庫文件引用41
3.6launch文件編寫44
3.6.1﹤launch﹥標(biāo)簽45
3.6.2﹤node﹥標(biāo)簽45
3.6.3﹤include﹥標(biāo)簽48
3.6.4﹤param﹥標(biāo)簽51
3.6.5﹤arg﹥標(biāo)簽53
3.6.6﹤group﹥標(biāo)簽53
課后練習(xí)56
第4章ROS通信機(jī)制話題57
4.1話題通信原理57
4.2話題通信示例58
4.3rqt_graph和rqt_plot命令的使用61
4.4rostopic命令的使用62
4.5代碼解析64
4.5.1third_pkg.cpp源碼分析64
4.5.2subscrbe.cpp源碼分析65
4.6理解自定義消息類型66
4.6.1什么是消息66
4.6.2rosmsg命令66
4.7創(chuàng)建自定義消息類型67
課后練習(xí)70
第5章ROS通信機(jī)制服務(wù)72
5.1認(rèn)識服務(wù)基本概念72
5.2編寫ROS服務(wù)示例73
課后練習(xí)76
第6章參數(shù)服務(wù)器78
6.1roscpp中的rosparam78
6.1.1getParam()78
6.1.2Param()78
6.1.3setParam()79
6.1.4deleteParam()79
6.1.5hasParam()79
6.2通過launch加載參數(shù)79
6.3rosparam命令82
6.4動態(tài)參數(shù)調(diào)節(jié)83
課后練習(xí)88
第7章ROS通信機(jī)制動作89
7.1動作簡介89
7.2動作文件規(guī)范90
7.3編寫一個動作示例91
課后練習(xí)96
第8章什么是tf98
8.1tf介紹98
8.2tf示例98
8.2.1示例運(yùn)行98
8.2.2tf命令工具99
8.2.3tf中的消息101
8.3tf的C 接口102
8.3.1數(shù)據(jù)類型102
8.3.2數(shù)據(jù)轉(zhuǎn)換103
8.3.3tf類107
課后練習(xí)109
第9章ROS車型機(jī)器人建模110
9.1機(jī)器人組成架構(gòu)110
9.1.1常見執(zhí)行機(jī)構(gòu)111
9.1.2驅(qū)動系統(tǒng)實(shí)現(xiàn)112
9.1.3傳感器系統(tǒng)112
9.1.4控制系統(tǒng)實(shí)現(xiàn)114
9.2URDF描述語言解釋114
9.3創(chuàng)建URDF模型117
9.3.1創(chuàng)建機(jī)器人描述功能包117
9.3.2創(chuàng)建URDF模型118
9.3.3URDF解析121
9.3.4在rviz中顯示機(jī)器人模型122
9.4改進(jìn)URDF模型125
9.4.1使用xacro優(yōu)化URDF模型125
9.4.2引用xacro文件129
9.4.3顯示優(yōu)化后的模型129
9.5添加傳感器131
9.5.1添加攝像頭131
9.5.2添加激光雷達(dá)132
9.6gazebo仿真134
9.6.1給base_link添加慣性、碰撞及gazebo屬性134
9.6.2在gazebo中顯示機(jī)器人模型138
9.6.3gazebo常用插件139
9.7sw2urdf工具156
課后練習(xí)157
第10章常見運(yùn)動學(xué)解算159
10.1兩輪差動模型159
10.2三輪全向運(yùn)動模型161
10.3四輪全驅(qū)滑動運(yùn)動模型163
10.4四輪全向運(yùn)動模型165
課后練習(xí)169
參考文獻(xiàn)171