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