日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ROS2学习(七).ROS概念 - ROS客户端库(Ros Client Library)

發(fā)布時間:2023/12/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS2学习(七).ROS概念 - ROS客户端库(Ros Client Library) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ROS客戶端庫

  • 概述
  • 支持的客戶端庫
  • 通用功能:RCL
  • 語言特有功能
  • 同ROS 1的比較
  • 小結
  • 參考

概述

客戶端庫是開發(fā)者用以開發(fā)ROS代碼時使用的API,使用客戶端庫,開發(fā)者將接觸到ROS的相關概念例如節(jié)點、主題、服務等等。客戶端庫支持多種編程語言以便開發(fā)者更容易使用他們熟悉的環(huán)境進行開發(fā)。例如在原型迭代階段可以使用Python編寫可視化相關的代碼;而涉及效率相關的系統(tǒng)部分,C++會更適合。
使用不同的客戶端庫編寫的節(jié)點之間可以共享消息。因為所有的客戶端庫都實現(xiàn)了基于ROS接口的通信能力。
除了基于特定預研的通信工具外,客戶端庫還提供了ROS的核心功能。例如:

  • 名稱與名稱空間
  • 時間(真實/模擬)
  • 參數(shù)
  • 控制臺日志
  • 線程模型
  • 進程間通信

支持的客戶端庫

官方提供了兩種RCL的維護,rclcpp和rclpy。
社區(qū)提供了以下的RCL:

  • JVM and Android
  • Objective C and iOS
  • C#
  • Swift
  • Node.js
  • Ada
  • _.NET Core, UWP and C#
  • Rust

通用功能:RCL

大部分客戶端庫的功能與客戶端所用的編程語言無關。例如,參數(shù)的行為和名稱空間的邏輯在理想情況下在不同編程語言中應該是相同的。正因如此,客戶端庫使用公共的核心RCL接口以實現(xiàn)跨語言的ROS概念的行為與邏輯,而不是從頭開始開發(fā)。因此,客戶端庫只需要用外部函數(shù)接口將核心RCL進行二次包裝。這樣就保證了客戶端庫的輕量化,并使得客戶端庫更易開發(fā)。
為了上述目的,通用的RCL功能被封裝為C語言接口,因為C語言是最容易被不同客戶端庫所封裝的。
此外,公共核心保證了跨語言的客戶端庫之間行為的一致性。如果對核心RCL中功能的行為和邏輯進行了任何修改,所有使用RCL的客戶端庫都將反應這些更改。同時在bug修復時可以減少多個客戶端的維護工作量。
詳情可參考RCL API文檔。 1

語言特有功能

需要由語言特性描述的特性和屬性沒有在RCL中實現(xiàn)而是由各客戶端庫加以實現(xiàn)。例如,spin函數(shù)使用的線程模型在不同的客戶端庫中依賴于特定語言執(zhí)行。

同ROS 1的比較

在ROS 1中,所有的客戶端庫都是“從頭開始”開發(fā)的。例如python客戶端庫就完全使用純Python進行開發(fā),這帶來了一些好處,例如無需編譯。然而,命名約定和行為在客戶端間并不總是一致,因此修復問題時需要在多個地方進行,且很多功能僅存在于某一客戶端庫(例如UDPROS)。

小結

通過實現(xiàn)通用功能的核心ROS客戶端庫,客戶端庫能夠更好地適用于不同的編程語言,并且保持一致的行為特征。

參考


  • RCL API ??

  • 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

    總結

    以上是生活随笔為你收集整理的ROS2学习(七).ROS概念 - ROS客户端库(Ros Client Library)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。