定 價(jià):42 元
叢書名:新工科機(jī)器人工程專業(yè)規(guī)劃教材
- 作者:丁亮、曲明成、張亞楠、夏科睿
- 出版時(shí)間:2019/5/1
- ISBN:9787302527459
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP242
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
《ROS2源代碼分析與工程應(yīng)用》系統(tǒng)介紹ROS2.0結(jié)構(gòu)標(biāo)準(zhǔn)、接口、通信模塊,分析ROS2.0 的Ament、eProsima、ros、ros2等部分源代碼, 介紹ROS2.0工具包,并 從源代碼的層面講解如何基于ROS2.0實(shí)現(xiàn)機(jī)械臂運(yùn)動(dòng)學(xué)正解、逆解,機(jī)械臂無碰撞運(yùn)動(dòng)學(xué)逆解,機(jī)器人狀態(tài)和軌跡可視化,機(jī)械臂的驅(qū)動(dòng)開發(fā)。
《ROS2源代碼分析與工程應(yīng)用》從源代碼層面深入解析ROS2,并對(duì)常用的工具庫及操控機(jī)器人的常用模塊進(jìn)行了系統(tǒng)介紹。全書從基礎(chǔ)的ROS2知識(shí)進(jìn)階到高級(jí)的ROS2應(yīng)用編程技術(shù),并且基于JuLab系列機(jī)器人,介紹了ROS及ROS2在具體應(yīng)用場景的功能和相應(yīng)代碼。
前言
ROS是開源的機(jī)器人操作系統(tǒng)軟件平臺(tái),是機(jī)器人技術(shù)和人工智能技術(shù)的一個(gè)令人興奮的結(jié)合點(diǎn)。2007年前后,ROS起源于美國斯坦福大學(xué)人工智能實(shí)驗(yàn)室與Willow Garage公司的項(xiàng)目合作; 2013年,ROS的開發(fā)和維護(hù)工作被移交給了開源機(jī)器人基金會(huì)(Open Source Robotics Foundation)。十余年來,ROS在國際學(xué)者的大力支持下迅速發(fā)展。隨著機(jī)器人與人工智能熱潮的到來,基于ROS的開發(fā)與應(yīng)用近幾年在我國也開展得如火如荼。
ROS的主要目標(biāo)是為不同類型的機(jī)器人提供基礎(chǔ)中間件和應(yīng)用軟件,降低機(jī)器人的開發(fā)和應(yīng)用難度,避免重復(fù)開發(fā)。ROS定義抽象層,允許軟件被多種機(jī)器人重用。然而,現(xiàn)有ROS在設(shè)計(jì)軟件框架時(shí)未預(yù)料到會(huì)如此受歡迎,其已有的架構(gòu)越來越難以滿足眾多新用途和潛在的市場需求。例如,在ROS的masterslave架構(gòu)下,當(dāng)master節(jié)點(diǎn)發(fā)生問題時(shí),將產(chǎn)生系統(tǒng)通信中斷的嚴(yán)重后果,不適合多機(jī)器人協(xié)作的應(yīng)用場景。現(xiàn)有ROS的另一個(gè)重要瓶頸是實(shí)時(shí)性能差,難以應(yīng)用于對(duì)實(shí)時(shí)性能要求很高的領(lǐng)域。例如,運(yùn)行于復(fù)雜動(dòng)態(tài)環(huán)境中的高機(jī)動(dòng)移動(dòng)機(jī)器人、高速運(yùn)行的流水線作業(yè)機(jī)器人等,要求機(jī)器人以極快的速度對(duì)指令進(jìn)行響應(yīng),以極高的可靠性完成任務(wù)。
為了解決ROS的諸多不足,設(shè)計(jì)新的軟件框架以滿足目前及未來市場需求勢在必行,ROS2也因此應(yīng)運(yùn)而生。在ROS2開發(fā)過程中,對(duì)原ROS框架進(jìn)行了重大改進(jìn)。為了滿足多機(jī)器人協(xié)同工作的高可靠、實(shí)時(shí)性要求,ROS2摒棄了原來的masterslave架構(gòu),使用更加先進(jìn)的分布式架構(gòu),采用了數(shù)據(jù)分發(fā)服務(wù)(DDS)技術(shù),節(jié)點(diǎn)可以分布于不同主機(jī),可以互為服務(wù)器/客戶端,方便負(fù)載均衡,可降低中心節(jié)點(diǎn)失效導(dǎo)致slave節(jié)點(diǎn)通信失敗的風(fēng)險(xiǎn)。更為重要的是,ROS2提供對(duì)實(shí)時(shí)操作系統(tǒng)和嵌入式設(shè)備的支持,使得實(shí)時(shí)控制可以直接在ROS2上運(yùn)行,并支持節(jié)點(diǎn)間、進(jìn)程間實(shí)時(shí)通信。ROS2的第一個(gè)正式版本Ardent Apalone于2017年12月8日發(fā)布,該版本并未完全脫離ROS,而是繼承了ROS的眾多優(yōu)點(diǎn),如接口與編程語言無關(guān)、驅(qū)動(dòng)程序和算法可封裝成獨(dú)立的庫、方便移植、支持多語言等。
作為國內(nèi)機(jī)器人操作系統(tǒng)的積極應(yīng)用者和推動(dòng)者,研究團(tuán)隊(duì)一直關(guān)注ROS和ROS2的發(fā)展,并積極探索、改進(jìn)和應(yīng)用ROS及ROS2,開發(fā)了支持ROS和ROS2的JuLab系列機(jī)器人通用硬件平臺(tái)。為了更好地與對(duì)ROS2感興趣的相關(guān)人員分享開發(fā)與應(yīng)用ROS2的成果和經(jīng)驗(yàn),更深入地展示ROS2的架構(gòu)優(yōu)勢、運(yùn)行模式以及應(yīng)用方法,本書從源代碼層面深入解析ROS2,并對(duì)常用工具庫及操控機(jī)器人的常用模塊進(jìn)行了系統(tǒng)介紹;贘uLab系列機(jī)器人,進(jìn)行了具體應(yīng)用場景的代碼和功能介紹。
本書共包括6章。第1章介紹ROS2 Ardent版本、ROS2安裝及環(huán)境配置、基本命令等。第2章分析ROS2 Ardent的總體框架,進(jìn)行源代碼概述,開展ament、FastCDR、FastRTPS、RMW、robot_model、RCL、RCLcpp等代碼分析。第3章介紹ROS2常用工具庫中的orocos_kinematics_dynamics、POCO、urdfdom、PCL以及MoveIt。第4章闡述SLAM導(dǎo)航及應(yīng)用,通過ROS2發(fā)布里程計(jì)信息,基于JuLab1機(jī)器人完成SLAM開發(fā)。第5章介紹六軸機(jī)械臂軌跡規(guī)劃,基于JuLab1機(jī)器人完成實(shí)例開發(fā)。第6章介紹OpenCV圖像和視頻基礎(chǔ),圖像轉(zhuǎn)換,機(jī)器人3D視覺技術(shù)等。本書的電子文檔資源同步在www.airtros.com網(wǎng)站發(fā)布。本書深入淺出地分析了ROS2的核心功能,并結(jié)合了典型工程案例。書中實(shí)踐案例部分以JuLab機(jī)器人為載體,該機(jī)器人助力哈爾濱工業(yè)大學(xué)計(jì)算機(jī)學(xué)院兩支隊(duì)伍奪得了2018年全國大學(xué)生物聯(lián)網(wǎng)大賽總決賽一等獎(jiǎng)和二等獎(jiǎng)。
本書作者均為從事機(jī)器人、操作系統(tǒng)科研和教學(xué)工作的人員。第1章由丁亮、曲明成、夏科睿撰寫,第2章由曲明成、張亞楠、劉鵬飛撰寫,第3章由張亞楠、曲明成、夏科睿撰寫,第4章由丁亮、夏科睿、郭龍撰寫,第5章由曲明成、夏科睿、丁亮撰寫,第6章由張亞楠、夏科睿撰寫。全書由丁亮統(tǒng)稿,張亞楠組織編輯和校對(duì)。相關(guān)研究工作和本書的編著得到了哈工大機(jī)器人集團(tuán)董事長王飛、高級(jí)副總裁于振中等領(lǐng)導(dǎo)的大力支持,郭龍、金馬、王權(quán)、陳偉偉、蔣晨旭、彭超、侯旗、何婷婷、張韜庚、姬鵬鵬等參與了本書案例的開發(fā)和編寫工作,清華大學(xué)出版社的編輯對(duì)本書出版給予了大力支持,在此表示衷心的感謝!
本書涉及的研究工作得到了國家自然科學(xué)基金優(yōu)秀青年基金項(xiàng)目(51822502)、安徽省科技重大專項(xiàng)項(xiàng)目、合肥市廬州產(chǎn)業(yè)創(chuàng)新團(tuán)隊(duì)項(xiàng)目、哈工大機(jī)器人(合肥)國際創(chuàng)新研究院立項(xiàng)項(xiàng)目等資助,在此表示感謝!
由于作者水平所限,書中難免存在不足之處,敬請各位讀者批評(píng)指正。
作者2018年秋
丁亮(1980-),男,漢族。哈爾濱工業(yè)大學(xué)機(jī)電工程學(xué)院/機(jī)器人技術(shù)與系統(tǒng)國家重點(diǎn)實(shí)驗(yàn)室教授、博導(dǎo),哈工大機(jī)器人(合肥)國際創(chuàng)新研究院科研副院長。
先后主持國家青年自然科學(xué)基金青年、面上項(xiàng)目(青年面上連續(xù)資助),973項(xiàng)目子課題,黑龍江省博士后青年英才計(jì)劃項(xiàng)目,中國博士后特別、面上資助,國家重點(diǎn)實(shí)驗(yàn)室自主研究課題,與中國空間技術(shù)研究院合作課題等。作為骨干參與國家973課題、863計(jì)劃主題項(xiàng)目、探月工程二期/三期重大專項(xiàng)課題等。在IJRR、TIE等刊物發(fā)表學(xué)術(shù)論文120余篇,SCI論文近60篇;獲得授權(quán)發(fā)明專利30余項(xiàng)。 成果應(yīng)用于我國玉兔月球車、火星車、野外重載足式機(jī)器人等。獲得國家技術(shù)發(fā)明二等獎(jiǎng)(2011)、ISTVS S?hne-Hata- Jurecka Award(2017)、機(jī)械工程學(xué)會(huì)上銀優(yōu)秀博士論文佳作獎(jiǎng)(2011)、黑龍江省技術(shù)發(fā)明一等獎(jiǎng)(2009, 2013, 2015)、IEEE ARM國際會(huì)議最佳論文獎(jiǎng)(2016)、國家開發(fā)銀行科技創(chuàng)新獎(jiǎng)教金(2016)、黑龍江高等教育學(xué)會(huì)優(yōu)秀教育科研論文一等獎(jiǎng)(2012)等。指導(dǎo)和協(xié)助指導(dǎo)的碩士和博士研究生4人獲得國家獎(jiǎng)學(xué)金,1人獲得省
目錄
第1章ROS2簡介
1.1ROS2 Ardent Apalone概述
1.2ROS2安裝及環(huán)境配置
1.2.1安裝ROS2
1.2.2運(yùn)行talker和listener
1.3ROS2的基本命令
1.3.1ROS2核心命令
1.3.2ROS與ROS2交互相關(guān)命令
第2章ROS2 Ardent框架及功能的源碼分析
2.1ROS2 Ardent總體框架
2.2ROS2 Ardent源代碼概述
2.3ament代碼分析
2.3.1主要函數(shù)解析
2.3.2基于Google Mock的白盒測試
2.4FastCDR代碼分析
2.5FastRTPS代碼分析
2.5.1FastRTPS主要流程解析
2.5.2FastRTPS主要函數(shù)解析
2.6RMW代碼分析
2.7robot_model及狀態(tài)發(fā)布代碼分析
2.7.1robot_model模塊功能
2.7.2機(jī)器人狀態(tài)發(fā)布
2.7.3ROS與ROS2的橋接
2.8RCL代碼分析
2.9RCLcpp代碼分析
第3章第三方工具庫
3.1orocos_kinematics_dynamics庫
3.2POCO庫
3.3URDF
3.3.1URDF語法規(guī)范
3.3.2URDF創(chuàng)建機(jī)器人模型
3.4PCL庫
3.4.1PCL架構(gòu)
3.4.2PCL數(shù)據(jù)結(jié)構(gòu)
3.4.3PCL基礎(chǔ)
3.5MoveIt
第4章SLAM和導(dǎo)航
4.1SLAM導(dǎo)航簡介
4.2GMapping
4.2.1用tf配置機(jī)器人
4.2.2發(fā)布里程計(jì)信息
4.3SLAM實(shí)例
4.3.1激光建圖
4.3.2導(dǎo)航
4.3.3定位
第5章機(jī)械臂控制
5.1六軸機(jī)械臂軌跡規(guī)劃
5.1.1關(guān)節(jié)空間的軌跡規(guī)劃
5.1.2笛卡兒空間的軌跡規(guī)劃
5.2描述機(jī)械臂
5.3機(jī)械臂實(shí)例開發(fā)
5.3.1仿真環(huán)境下實(shí)例開發(fā)
5.3.2實(shí)際環(huán)境下實(shí)例開發(fā)
第6章機(jī)器人視覺
6.1OpenCV圖像、視頻基礎(chǔ)
6.1.1圖像處理
6.1.2視頻處理
6.1.3可移植的圖形工具包HighGUI
6.2圖像轉(zhuǎn)換
6.3機(jī)器人3D視覺
6.3.1libfreenect2簡介
6.3.2openni_camera簡介
6.3.3openni_tracker簡介
6.3.43D視覺設(shè)備使用實(shí)例
參考文獻(xiàn)