- ROS機器人項目開發(fā)11例(原書第2版)
- (印)拉姆庫瑪·甘地那坦 郎坦·約瑟夫
- 699字
- 2021-01-26 17:17:31
2.4 ROS-2客戶端庫
正如我們在前一章中所看到的,ROS客戶端庫只是用于實現(xiàn)ROS概念的API。因此,我們可以在用戶代碼中直接訪問ROS客戶端庫實現(xiàn)的ROS的相關(guān)概念,如節(jié)點、服務(wù)和話題。ROS客戶端庫提供了對多種編程語言的支持。
由于每種編程語言都有各自的優(yōu)缺點,所以用戶可以根據(jù)需要來決定選擇哪種語言。例如:如果系統(tǒng)關(guān)注效率和更快的響應(yīng)速度,則可以選擇rclcpp;如果系統(tǒng)考慮有限的開發(fā)時間要求原型開發(fā)優(yōu)先,則可以選擇rclpy。
ROS-2中的ROS客戶端庫分為兩部分:一部分是面向特定于語言的(如rclcpp、rclpy和rcljava),另一部分則是用C語言實現(xiàn)的通用功能。這種實現(xiàn)機制使得客戶端庫具有精簡、輕量級和易于開發(fā)的優(yōu)點。
開發(fā)人員在ROS中編寫代碼時,很有可能會對代碼進行各種迭代,有時還需要改變與網(wǎng)絡(luò)中其他節(jié)點或參與者的連接方式。為了滿足這些需求,可能需要更改在代碼中實現(xiàn)ROS概念的邏輯。由于接口層具有不同的語言支持,因此使用不同編程語言的開發(fā)人員僅需要關(guān)心代碼中的進程內(nèi)通信和線程處理,這是因為這些處理是基于特定語言實現(xiàn)的。例如,ros::spin()在C++和Python中可能有不同的實現(xiàn)方法。
ROS-2客戶端中的兩層實現(xiàn)機制使得上述在編程語言層所做的變化將不會影響到ROS概念層,因此當進行錯誤修復時,僅維護為數(shù)不多的幾個客戶端庫相對容易。
圖2.5展示了ROS-2的客戶端庫的結(jié)構(gòu),其中所有特定語言的ROS組件接口(rclcpp、rclpy、rcljava和rclcs)都位于用戶代碼下面的層上。下一個公共層rcl由C語言實現(xiàn),由特定的ROS函數(shù)組成,如名稱、名稱空間、服務(wù)、話題、時間、參數(shù)和日志信息。這種結(jié)構(gòu)使得任何特定語言接口層都能與rcl層連接,從而輕松地在不同節(jié)點或參與者之間建立通信。
圖2.5 ROS-2的客戶端庫架構(gòu)圖示
本節(jié)對ROS-2的基礎(chǔ)原理進行了概要論述,下面我們將對ROS-2工具進行介紹。
- TensorFlow學習指南:深度學習系統(tǒng)構(gòu)建詳解
- 深度學習與計算機視覺:項目式教材
- 劫持
- 智能浪潮:增強時代來臨
- AI時代程序員開發(fā)之道:ChatGPT讓程序員插上翅膀
- 計算社會學:系統(tǒng)應(yīng)用篇
- ChatGPT時代:ChatGPT全能應(yīng)用一本通
- AI虛擬仿真從入門到參賽
- 巧用ChatGPT快速提高職場晉升力
- TensorFlow神經(jīng)網(wǎng)絡(luò)到深度學習
- 這就是ChatGPT
- 人工智能
- 合成生物學智能化設(shè)計與應(yīng)用
- 智能家居產(chǎn)品 從設(shè)計到運營
- 智能化變革:人工智能技術(shù)進化與價值創(chuàng)造