ROS 2機(jī)器人開(kāi)發(fā):從入門(mén)到實(shí)踐 桑欣
定 價(jià):¥99
中 教 價(jià):¥59.40 (6.00折)
庫(kù) 存 數(shù): 32
機(jī)器人開(kāi)發(fā)是一項(xiàng)復(fù)雜的系統(tǒng)工程,ROS 2為智能機(jī)器人開(kāi)發(fā)提供了強(qiáng)有力的支持,極大地提高了機(jī)器人軟件開(kāi)發(fā)效率。本書(shū)首先對(duì)ROS 2的基礎(chǔ)概念、通信機(jī)制、常用庫(kù)和工具進(jìn)行介紹,帶領(lǐng)讀者入門(mén)ROS 2機(jī)器人開(kāi)發(fā);接著引導(dǎo)讀者完成移動(dòng)機(jī)器人的建模和仿真、建圖和導(dǎo)航、自定義控制器和規(guī)劃器等一系列實(shí)踐;然后在真機(jī)實(shí)戰(zhàn)環(huán)節(jié),通過(guò)制作一個(gè)基于ROS 2的真實(shí)機(jī)器人,幫助讀者打通仿真與真機(jī)之間的壁壘;最后,本書(shū)深入講解了ROS 2進(jìn)階使用的相關(guān)知識(shí),為讀者進(jìn)一步在實(shí)戰(zhàn)中使用ROS 2進(jìn)行機(jī)器人開(kāi)發(fā)打下夯實(shí)基礎(chǔ)。考慮讀者基礎(chǔ),書(shū)中示例均以C 和Python兩種語(yǔ)言實(shí)現(xiàn),同時(shí)加入了關(guān)于C 新特性、Git工具、多線(xiàn)程和回調(diào)函數(shù)等基礎(chǔ)知識(shí)的講解。
不同于其他書(shū)籍,本書(shū)更加以讀者的需求為導(dǎo)向。在編寫(xiě)過(guò)程中,作者根據(jù)原在線(xiàn)教程動(dòng)手學(xué)ROS 2的讀者反饋,對(duì)本書(shū)內(nèi)容進(jìn)行了大量的打磨。針對(duì)很多ROS 2 初學(xué)者容易受阻的編程,本書(shū)在前面幾章穿插介紹了Linux和Git等知識(shí);針對(duì)很多小伙伴反饋學(xué)完ROS 2不知道怎么用,本書(shū)加入了大量實(shí)踐環(huán)節(jié),例如,結(jié)合ROS 2 實(shí)現(xiàn)語(yǔ)音合成、人臉識(shí)別和界面繪制等,讓讀者可以真正學(xué)以致用;針對(duì)需要仿真的小伙伴,本書(shū)著重介紹了ROS 2仿真建模的過(guò)程,同時(shí)結(jié)合仿真介紹了ros2_control 的使用;針對(duì)對(duì)實(shí)體機(jī)器人硬件開(kāi)發(fā)感興趣的小伙伴,本書(shū)引入了micro-ROS 框架,從零介紹了實(shí)體機(jī)器人的軟件開(kāi)發(fā)流程;針對(duì)需要深入使用ROS 2 的小伙伴,本書(shū)在最后一章深入探討了ROS 2 進(jìn)階相關(guān)知識(shí),讓你可以輕松地在實(shí)際項(xiàng)目中使用ROS 2。
前 言為什么寫(xiě)這本書(shū)大家好,我是本書(shū)的作者小魚(yú)。我在學(xué)生時(shí)代就開(kāi)始接觸并使用ROS,隨后參加工作,在工作中又進(jìn)一步使用ROS進(jìn)行機(jī)器人開(kāi)發(fā)。2020年一個(gè)偶然的機(jī)會(huì),公司安排我來(lái)調(diào)查ROS的缺陷,以及替代方案,就在那時(shí)我被ROS 2的強(qiáng)大功能所吸引,為其提供的機(jī)器人開(kāi)發(fā)工具而興奮,于是開(kāi)始學(xué)習(xí)ROS 2。在后續(xù)的學(xué)習(xí)和使用過(guò)程中,我深感ROS 2的中文資料少之又少,于是在2021年7月發(fā)起了魚(yú)香ROS社區(qū),開(kāi)始分享機(jī)器人和ROS 2的相關(guān)知識(shí)。在學(xué)習(xí)ROS 2的過(guò)程中,我深知?jiǎng)邮謱?shí)踐的重要性,就發(fā)布了動(dòng)手學(xué)ROS 2一系列在線(xiàn)教程,希望讀者可以通過(guò)動(dòng)手實(shí)踐來(lái)掌握 ROS 2,同年又與睿慕課合作發(fā)布了相應(yīng)的視頻教程。隨著學(xué)習(xí)動(dòng)手學(xué)ROS 2課程的小伙伴越來(lái)越多,我收到了大量的反饋,通過(guò)反饋深知初學(xué)者入門(mén)ROS 2和機(jī)器人開(kāi)發(fā)的困難,以及動(dòng)手學(xué)ROS 2系列課程的不足之處。恰逢此時(shí),編輯找到我,我們一拍即合,打算從ROS 2入門(mén)角度出發(fā)寫(xiě)一本書(shū),帶領(lǐng)讀者通過(guò)學(xué)習(xí)ROS 2來(lái)入門(mén)機(jī)器人系統(tǒng)開(kāi)發(fā)。所以在本書(shū)中,不僅有ROS 2的基礎(chǔ)知識(shí)、機(jī)器人建模和仿真知識(shí)、還有從零實(shí)現(xiàn)一個(gè)真實(shí)機(jī)器人系統(tǒng)的開(kāi)發(fā)教程。本書(shū)主要內(nèi)容本書(shū)的內(nèi)容按照知識(shí)結(jié)構(gòu)可以分為五個(gè)部分。第一部分對(duì)應(yīng)第1~5章,主要講解ROS 2的基礎(chǔ)軟件庫(kù)和工具集的使用,通過(guò)該部分的學(xué)習(xí),可以讓你快速掌握ROS 2的核心部分。第二部分對(duì)應(yīng)第6章,主要結(jié)合ROS 2常用的建模工具,從零創(chuàng)建一個(gè)移動(dòng)機(jī)器人模型,然后在仿真工具中完成模型仿真,同時(shí)結(jié)合仿真機(jī)器人講解ros2_control開(kāi)源框架。第三部分對(duì)應(yīng)第7章和第8章,主要介紹基于ROS 2的導(dǎo)航框架Navigation 2,同時(shí)在第6章仿真移動(dòng)機(jī)器人的基礎(chǔ)上實(shí)現(xiàn)導(dǎo)航,最后在第8章介紹如何在Navigation 2中部署測(cè)試自定義的規(guī)劃算法和控制算法。第四部分對(duì)應(yīng)第9章,主要講解如何搭建一個(gè)實(shí)體機(jī)器人,著重介紹移動(dòng)機(jī)器人控制系統(tǒng)實(shí)現(xiàn)和使用micro-ROS接入ROS 2,最后介紹實(shí)體機(jī)器人的建圖和導(dǎo)航實(shí)現(xiàn)方法。第五部分對(duì)應(yīng)第10章,主要介紹ROS 2進(jìn)階相關(guān)知識(shí),包括服務(wù)質(zhì)量QoS、執(zhí)行器和回調(diào)組、生命周期節(jié)點(diǎn)、消息過(guò)濾器和ROS 2中間件DDS的進(jìn)階使用。本書(shū)的目標(biāo)讀者對(duì)于非機(jī)器人行業(yè)中對(duì)機(jī)器人感興趣并且想要入門(mén)機(jī)器人開(kāi)發(fā)的讀者,本書(shū)穿插講解了學(xué)習(xí)ROS 2所需的Linux和編程的基礎(chǔ)知識(shí),讓基礎(chǔ)薄弱的讀者也可以輕松學(xué)習(xí)。對(duì)于機(jī)器人從業(yè)者,不僅可以從本書(shū)中學(xué)習(xí)到ROS 2的基礎(chǔ)知識(shí),還可以通過(guò)本書(shū)深入學(xué)習(xí)ROS 2,并將其應(yīng)用到實(shí)際工程中。對(duì)于機(jī)器人相關(guān)專(zhuān)業(yè)的高校師生,本書(shū)中每一章都涉及大量的動(dòng)手實(shí)踐環(huán)節(jié),可以把本書(shū)當(dāng)作機(jī)器人操作系統(tǒng)的學(xué)習(xí)實(shí)驗(yàn)教材。對(duì)于那些對(duì)機(jī)器人感興趣的讀者,可以通過(guò)本書(shū)學(xué)習(xí)如何制作屬于自己的仿真和實(shí)體移動(dòng)機(jī)器人,并在此基礎(chǔ)上實(shí)現(xiàn)自主移動(dòng)導(dǎo)航。本書(shū)特色不同于其他書(shū)籍,本書(shū)更加以讀者的需求為導(dǎo)向。在編寫(xiě)過(guò)程中,我根據(jù)原在線(xiàn)教程動(dòng)手學(xué)ROS 2的讀者反饋,對(duì)本書(shū)內(nèi)容進(jìn)行了大量的打磨。針對(duì)很多ROS 2初學(xué)者容易受阻的編程,本書(shū)在前面幾章穿插介紹了Linux和Git等知識(shí);針對(duì)很多小伙伴反饋學(xué)完ROS 2不知道怎么用,本書(shū)加入了大量實(shí)踐環(huán)節(jié),例如,結(jié)合ROS 2實(shí)現(xiàn)語(yǔ)音合成、人臉識(shí)別和界面繪制等,讓讀者可以真正學(xué)以致用;針對(duì)需要仿真的小伙伴,本書(shū)著重介紹了ROS 2仿真建模的過(guò)程,同時(shí)結(jié)合仿真介紹了ros2_control的使用;針對(duì)對(duì)實(shí)體機(jī)器人硬件開(kāi)發(fā)感興趣的小伙伴,本書(shū)引入了micro-ROS框架,從零介紹了實(shí)體機(jī)器人的軟件開(kāi)發(fā)流程;針對(duì)需要深入使用ROS 2的小伙伴,本書(shū)在最后一章深入探討了ROS 2進(jìn)階相關(guān)知識(shí),讓你可以輕松地在實(shí)際項(xiàng)目中使用ROS 2。閱讀指南和配套資源本書(shū)用到的部分開(kāi)源庫(kù)托管到了GitHub,讀者在學(xué)習(xí)過(guò)程中如遇到網(wǎng)絡(luò)問(wèn)題,可以使用本書(shū)提供的專(zhuān)用代理工具,工具地址為http://github.fishros.org。在本書(shū)的代碼塊中,以$ 開(kāi)頭表示命令行,使用---分割命令和執(zhí)行結(jié)果,對(duì)于非命令行的代碼塊,粗體部分表示重點(diǎn)更新,...表示被省略掉的不重要代碼。本書(shū)提供了大量的配套資源,如配套視頻、ROS 2中文文檔、官方資料網(wǎng)站等,這些都統(tǒng)一放到了本書(shū)的交流社區(qū):https://fishros.org.cn。ROS如此璀璨,本人自知才疏學(xué)淺,本書(shū)難免有錯(cuò)誤和不足之處,讀者可以在社區(qū)中提出,除此之外,若在學(xué)習(xí)過(guò)程中遇到相關(guān)問(wèn)題,也可以通過(guò)社區(qū)和我交流。很多小伙伴都是從公眾號(hào)魚(yú)香ROS開(kāi)始認(rèn)識(shí)我的,小魚(yú)每天都會(huì)在公眾號(hào)分享機(jī)器人和 ROS 2相關(guān)的文章。因?yàn)槠蓿緯?shū)中刪減掉的內(nèi)容都會(huì)以文章的形式在公眾號(hào)中發(fā)表,歡迎訂閱獲取。致謝本書(shū)能夠編寫(xiě)完成和出版,最要感謝的是廣大魚(yú)粉對(duì)我的支持,沒(méi)有你們的反饋和鼓勵(lì),我很難將本書(shū)完成。其次要感謝的是一直站在我身邊的家人,感謝來(lái)自父親、母親和姐姐的鞭策,感謝幫助我整理稿件的魚(yú)嫂馬靖雯(也是本書(shū)的第一個(gè)讀者)的無(wú)條件支持。還要感謝在我的成長(zhǎng)路上提供很大幫助的老師,他們是高中時(shí)期帶我學(xué)習(xí)編程和參加比賽的老師趙言言、大學(xué)時(shí)期的老師殷華博士、工作時(shí)的導(dǎo)師陳養(yǎng)斌博士,以及趙洋、蘇琦、曾凡國(guó)、覃建州等為我提供過(guò)幫助的老師。同時(shí)感謝機(jī)械工業(yè)出版社對(duì)本書(shū)的大力支持。最后要感謝的是機(jī)器人和ROS生態(tài)的前行者和趕路人,他們是張新宇教授、胡春旭老師、張瑞雷老師、金海華、張鵬、熊穎、侯燕青、李德永等。除此之外,還有很多和我一起交流成長(zhǎng)和做出貢獻(xiàn)的愛(ài)好者、開(kāi)發(fā)者和教育者,此處無(wú)法一一列舉,但我都感恩在心。小魚(yú)2024年1月于廣東廣州
桑欣 魚(yú)香ROS機(jī)器人社區(qū)(公眾號(hào)、B站、知乎)發(fā)起人,一鍵安裝ROS等機(jī)器人開(kāi)源庫(kù)作者,擁有多年機(jī)器人與自動(dòng)化開(kāi)發(fā)經(jīng)驗(yàn)。他在網(wǎng)上發(fā)布有動(dòng)手學(xué)ROS2等機(jī)器人教程,還制作了開(kāi)源機(jī)器人FishBot,獲得了廣大機(jī)器人愛(ài)好者的一致好評(píng),深受機(jī)器人開(kāi)發(fā)者的喜愛(ài)。
目 錄 Contents推薦序一推薦序二前言第1章 啟程讓你的第一個(gè)機(jī)器人動(dòng)起來(lái) 11.1 ROS部落的自我介紹 11.1.1 機(jī)器人與ROS 21.1.2 ROS 2系統(tǒng)架構(gòu) 31.1.3 ROS 2的已發(fā)布版本 41.1.4 ROS 2機(jī)器人開(kāi)發(fā)特色 41.2 開(kāi)發(fā)環(huán)境搭建 51.2.1 準(zhǔn)備所需軟件 61.2.2 安裝虛擬機(jī)VirtualBox 61.2.3 在虛擬機(jī)中安裝Ubuntu 22.04 71.2.4 安裝ROS 2 111.3 運(yùn)行你的第一個(gè)機(jī)器人 141.3.1 啟動(dòng)海龜模擬器 141.3.2 使用鍵盤(pán)控制海龜 151.3.3 海龜例子的簡(jiǎn)單分析 161.4 ROS 2基礎(chǔ)之Linux 171.4.1 Linux終端基礎(chǔ)操作 171.4.2 在Linux中安裝軟件 201.4.3 在Linux中編寫(xiě)Python程序 231.4.4 在Linux中編寫(xiě)C 程序 261.4.5 Linux基礎(chǔ)之環(huán)境變量 281.5 小結(jié)與點(diǎn)評(píng) 29第2章 ROS 2基礎(chǔ)入門(mén)從第一個(gè)節(jié)點(diǎn)開(kāi)始 302.1 編寫(xiě)你的第一個(gè)節(jié)點(diǎn) 302.1.1 Python示例 302.1.2 C 示例 332.2 使用功能包組織Python節(jié)點(diǎn) 372.2.1 在功能包中編寫(xiě)Python節(jié)點(diǎn) 372.2.2 功能包結(jié)構(gòu)分析 402.3 使用功能包組織C 節(jié)點(diǎn) 412.3.1 在功能包中編寫(xiě)C 節(jié)點(diǎn) 412.3.2 功能包結(jié)構(gòu)分析 442.4 多功能包的最佳實(shí)踐Workspace 442.5 ROS 2基礎(chǔ)之編程 462.5.1 面向?qū)ο缶幊獭?62.5.2 用得到的C 新特性 532.5.3 多線(xiàn)程與回調(diào)函數(shù) 582.6 小結(jié)與點(diǎn)評(píng) 62第3章 訂閱和發(fā)布話(huà)題通信探索 633.1 話(huà)題通信介紹 633.2 Python話(huà)題訂閱與發(fā)布 663.2.1 通過(guò)話(huà)題發(fā)布小說(shuō) 663.2.2 訂閱小說(shuō)并合成語(yǔ)音 693.3 C 話(huà)題訂閱與發(fā)布 713.3.1 發(fā)布速度控制海龜畫(huà)圓 713.3.2 訂閱Pose實(shí)現(xiàn)閉環(huán)控制 743.4 話(huà)題通信最佳實(shí)踐 773.4.1 完成工程架構(gòu)設(shè)計(jì) 773.4.2 自定義通信接口 783.4.3 系統(tǒng)信息獲取與發(fā)布 813.4.4 在功能包中使用Qt 833.4.5 訂閱數(shù)據(jù)并用Qt顯示 843.5 ROS 2基礎(chǔ)之Git入門(mén) 873.5.1 新建代碼倉(cāng)庫(kù) 873.5.2 學(xué)會(huì)提交代碼 883.5.3 學(xué)會(huì)使用Git忽略文件 903.6 小結(jié)與點(diǎn)評(píng) 90第4章 服務(wù)和參數(shù)深入ROS 2通信 924.1 服務(wù)與參數(shù)通信介紹 924.1.1 服務(wù)通信介紹 924.1.2 基于服務(wù)的參數(shù)通信 954.2 用Python服務(wù)通信實(shí)現(xiàn)人臉檢測(cè) 974.2.1 自定義服務(wù)接口 984.2.2 人臉檢測(cè) 1004.2.3 人臉檢測(cè)服務(wù)實(shí)現(xiàn) 1024.2.4 人臉檢測(cè)客戶(hù)端的實(shí)現(xiàn) 1044.3 用C 服務(wù)通信做一個(gè)巡邏海龜 1064.3.1 自定義服務(wù)接口 1074.3.2 服務(wù)端代碼實(shí)現(xiàn) 1074.3.3 客戶(hù)端代碼實(shí)現(xiàn) 1094.4 在Python節(jié)點(diǎn)中使用參數(shù) 1114.4.1 參數(shù)聲明與設(shè)置 1124.4.2 訂閱參數(shù)更新 1134.4.3 修改其他節(jié)點(diǎn)的參數(shù) 1144.5 在C 節(jié)點(diǎn)中使用參數(shù) 1164.5.1 參數(shù)聲明與設(shè)置 1174.5.2 接收參數(shù)事件 1174.5.3 修改其他節(jié)點(diǎn)的參數(shù) 1194.6 使用launch啟動(dòng)腳本 1214.6.1 使用launch啟動(dòng)多個(gè)節(jié)點(diǎn) 1214.6.2 使用launch傳遞參數(shù) 1234.6.3 launch使用進(jìn)階 1244.7 小結(jié)與點(diǎn)評(píng) 126第5章 ROS 2常用開(kāi)發(fā)工具 1275.1 坐標(biāo)變換工具介紹 1275.1.1 通過(guò)命令行使用TF 1285.1.2 對(duì)TF 原理的簡(jiǎn)單探究 1315.2 Python中的手眼坐標(biāo)變換 1335.2.1 通過(guò)Python發(fā)布靜態(tài)TF 1335.2.2 通過(guò)Python發(fā)布動(dòng)態(tài)TF 1365.2.3 通過(guò)Python查詢(xún)TF關(guān)系 1375.3 C 中的地圖坐標(biāo)系變換 1395.3.1 通過(guò)C 發(fā)布靜態(tài)TF 1395.3.2 通過(guò)C 發(fā)布動(dòng)態(tài)TF 1415.3.3 通過(guò)C 查詢(xún)TF關(guān)系 1435.4 常用可視化工具rqt與RViz 1455.4.1 GUI框架rqt 1455.4.2 數(shù)據(jù)可視化工具RViz 1475.5 數(shù)據(jù)記錄工具ros2 bag 1495.6 ROS 2基礎(chǔ)之Git進(jìn)階 1535.6.1 查看修改內(nèi)容 1535.6.2 學(xué)會(huì)撤銷(xiāo)代碼 1545.6.3 進(jìn)階掌握Git分支 1565.7 小結(jié)與點(diǎn)評(píng) 158第6章 建模與仿真創(chuàng)建自己的機(jī)器人 1606.1 機(jī)器人建模與仿真概述 1606.1.1 移動(dòng)機(jī)器人的結(jié)構(gòu)介紹 1606.1.2 常用機(jī)器人仿真平臺(tái) 1616.2 使用URDF創(chuàng)建機(jī)器人 1626.2.1 幫機(jī)器人創(chuàng)建一個(gè)身體 1626.2.2 在RViz中顯示機(jī)器人 1656.2.3 使用Xacro簡(jiǎn)化URDF 1706.2.4 創(chuàng)建機(jī)器人及傳感器部件 1736.2.5 完善機(jī)器人執(zhí)行器部件 1776.2.6 貼合地面,添加虛擬部件 1796.3 添加物理屬性讓機(jī)器人更真實(shí) 1806.3.1 為機(jī)器人部件添加碰撞屬性 1806.3.2 為機(jī)器人部件添加質(zhì)量與慣性 1816.4 在Gazebo中完成機(jī)器人仿真 1836.4.1 安裝與使用Gazebo構(gòu)建世界 1846.4.2 在Gazebo中加載機(jī)器人模型 1896.4.3 使用Gazebo標(biāo)簽擴(kuò)展URDF 1916.4.4 使用兩輪差速插件控制機(jī)器人 1936.4.5 激光雷達(dá)傳感器仿真 1976.4.6 慣性測(cè)量傳感器仿真 2006.4.7 深度相機(jī)傳感器仿真 2036.5 使用ros2_control驅(qū)動(dòng)機(jī)器人 2056.5.1 ros2_control介紹與安裝 2056.5.2 使用Gazebo接入ros2_control 2096.5.3 使用關(guān)節(jié)狀態(tài)發(fā)布控制器 2136.5.4 使用力控制器控制輪子 2166.5.5 使用兩輪差速控制器控制機(jī)器人 2186.6 小結(jié)與點(diǎn)評(píng) 221第7章 自主導(dǎo)航讓機(jī)器人自己動(dòng)起來(lái) 2227.1 機(jī)器人導(dǎo)航介紹 2227.1.1 同步定位與地圖構(gòu)建 2227.1.2 機(jī)器人導(dǎo)航 2247.2 使用slam_toolbox完成建圖 2257.2.1 構(gòu)建第一張導(dǎo)航地圖 2257.2.2 將地圖保存為文件 2277.3 機(jī)器人導(dǎo)航框架Navigation 2 2297.3.1 Navigation 2介紹與安裝 2297.3.2 配置Navigation 2參數(shù) 2317.3.3 編寫(xiě)launch并啟動(dòng)導(dǎo)航 2327.3.4 進(jìn)行單點(diǎn)與路點(diǎn)導(dǎo)航 2347.3.5 導(dǎo)航過(guò)程中進(jìn)行動(dòng)態(tài)避障 2367.3.6 優(yōu)化導(dǎo)航速度和膨脹半徑 2377.3.7 優(yōu)化機(jī)器人到點(diǎn)精度 2397.4 導(dǎo)航應(yīng)用開(kāi)發(fā)指南 2407.4.1 使用話(huà)題初始化機(jī)器人位姿 2407.4.2 使用TF獲取機(jī)器人實(shí)時(shí)位置 2437.4.3 調(diào)用接口進(jìn)行單點(diǎn)導(dǎo)航 2447.4.4 使用接口完成路點(diǎn)導(dǎo)航 2507.5 導(dǎo)航最佳實(shí)踐之做一個(gè)自動(dòng)巡檢機(jī)器人 2537.5.1 完成機(jī)器人系統(tǒng)架構(gòu)設(shè)計(jì) 2537.5.2 編寫(xiě)巡檢控制節(jié)點(diǎn) 2537.5.3 添加語(yǔ)音播報(bào)功能 2587.5.4 訂閱圖像并記錄 2617.6 ROS 2基礎(chǔ)之Git倉(cāng)庫(kù)托管 2627.6.1 添加自描述文件 2627.6.2 將代碼托管在Gitee 2657.6.3 將代碼托管在GitHub 2667.7 小結(jié)與點(diǎn)評(píng) 270第8章 使用自己的規(guī)劃器和控制器導(dǎo)航 2718.1 掌握ROS 2插件機(jī)制 2718.1.1 pluginlib介紹與安裝 2718.1.2 定義插件抽象類(lèi) 2728.1.3 編寫(xiě)并生成第一個(gè)插件 2728.1.4 編寫(xiě)插件測(cè)試程序 2758.2 自定義導(dǎo)航規(guī)劃器 2768.2.1 自定義規(guī)劃器介紹 2768.2.2 搭建規(guī)劃器插件框架 2798.2.3 實(shí)現(xiàn)自定義規(guī)劃算法 2838.2.4 配置導(dǎo)航參數(shù)并測(cè)試 2848.3 自定義導(dǎo)航控制器 2868.3.1 自定義控制器介紹 2868.3.2 搭建控制器插件框架 2878.3.3 實(shí)現(xiàn)自定義控制算法 2928.3.4 配置導(dǎo)航參數(shù)并測(cè)試 2948.4 小結(jié)與點(diǎn)評(píng) 295第9章 搭建一個(gè)實(shí)體移動(dòng)機(jī)器人 2969.1 移動(dòng)機(jī)器人系統(tǒng)設(shè)計(jì) 2969.1.1 機(jī)器人傳感器 2969.1.2 機(jī)器人執(zhí)行器 2979.1.3 機(jī)器人決策系統(tǒng) 2989.2 單片機(jī)開(kāi)發(fā)基礎(chǔ) 2989.2.1 開(kāi)發(fā)平臺(tái)介紹與安裝 2989.2.2 第一個(gè)HelloWorld工程 3019.2.3 使用代碼點(diǎn)亮LED燈 3039.2.4 使用超聲波測(cè)量距離 3049.2.5 使用開(kāi)源庫(kù)驅(qū)動(dòng)IMU 3059.3 機(jī)器人控制系統(tǒng)的實(shí)現(xiàn) 3069.3.1 使用開(kāi)源庫(kù)驅(qū)動(dòng)多路電動(dòng)機(jī) 3079.3.2 電動(dòng)機(jī)速度測(cè)量與轉(zhuǎn)換 3089.3.3 使用PID控制輪子轉(zhuǎn)速 3119.3.4 運(yùn)動(dòng)學(xué)正逆解的實(shí)現(xiàn) 3159.3.5 機(jī)器人里程計(jì)計(jì)算 3209.4 使用micro-ROS接入ROS 2 3229.4.1 第一個(gè)節(jié)點(diǎn) 3239.4.2 訂閱話(huà)題控制機(jī)器人 3279.4.3 發(fā)布機(jī)器人里程計(jì)話(huà)題 3299.5 移動(dòng)機(jī)器人建圖與導(dǎo)航實(shí)現(xiàn) 3339.5.1 驅(qū)動(dòng)并顯示雷達(dá)點(diǎn)云 3349.5.2 移動(dòng)機(jī)器人的坐標(biāo)系框架介紹 3379.5.3 準(zhǔn)備機(jī)器人URDF 3389.5.4 發(fā)布里程計(jì)TF 3419.5.5 完成機(jī)器人建圖并保存地圖 3439.5.6 完成機(jī)器人導(dǎo)航 3479.6 小結(jié)與點(diǎn)評(píng) 348第10章 ROS 2使用進(jìn)階 34910.1 消息服務(wù)質(zhì)量之QoS 34910.1.1 QoS策略介紹 34910.1.2 QoS的兼容性 35210.1.3 Python QoS兼容性測(cè)試 35310.1.4 C QoS兼容性測(cè)試 35410.2 執(zhí)行器與回調(diào)組 35610.2.1 執(zhí)行器與回調(diào)組介紹 35610.2.2 在Python中使用回調(diào)組 35810.2.3 在C 中使用回調(diào)組 36110.3 生命周期節(jié)點(diǎn) 36410.3.1 生命周期節(jié)點(diǎn)介紹 36410.3.2 在Python中編寫(xiě)生命周期節(jié)點(diǎn) 36710.3.3 在C 中編寫(xiě)生命周期節(jié)點(diǎn) 36910.4 同一進(jìn)程組織多個(gè)節(jié)點(diǎn) 37110.4.1 使用執(zhí)行器組織多個(gè)節(jié)點(diǎn) 37110.4.2 使用組件運(yùn)行組合節(jié)點(diǎn) 37510.4.3 編寫(xiě)自己的組件 37810.5 使用消息過(guò)濾器同步數(shù)據(jù) 38010.5.1 消息過(guò)濾器介紹 38010.5.2 在Python中同步傳感器數(shù)據(jù) 38010.5.3 在C 中同步傳感器數(shù)據(jù) 38110.6 DDS中間件進(jìn)階 38410.6.1 使用不同的DDS進(jìn)行通信 38410.6.2 配置局域網(wǎng)通信 38610.6.3 調(diào)整DDS配置 38610.6.4 使用DDS共享內(nèi)存 38810.7 小結(jié)與點(diǎn)評(píng) 390