ROS學習 ROS Nodelet學習

2021-09-29 09:20:56 字數 1277 閱讀 3119

ros學習 《十一》 ros nodelet學習 (2017-08-02 10:26:41)

背景介紹:

ros是一種基於訊息傳遞的分布式多程序框架。ros node之間的通訊,是基於tcp/ip協議,在傳遞message或service時,都需要先打包,後解包。對資源有較大浪費,在實時性上也表現不佳。

在需要傳遞的資料附載小,頻率低時,這樣的資源和時間消耗還可以接受。但當傳遞的是影象,點雲等數量巨大的資料時,或實時性要求較高時,傳輸問題則必需要考慮。nodelet的出現,就是為解決此類問題。

ros nodelet簡介:

nodelet用來提供一種方式,讓多個演算法執行在同乙個程序內,他們之間資料實現zero copy 傳輸。

使用shared_ptr實現零copy傳輸(zero copy transport). 它使用外掛程式機制。

簡單的說:nodelet即為將之前啟動的多個node**到一起,由乙個manager管理。在同乙個manager內, topic資料更快,zero copy.

nodelet package既提供用來實現nodelet的nodelet base class。 又提供nodeletloader class用來例項化nodelet。

設計目標:

使用現有的ros c++ 介面。

在nodelet之間,實現零copy資料傳輸。

動態載入外掛程式, 以打破構建時間的依賴性。

寫node或nodelet**,差距最小化。

用法:nodelet usage:

nodelet load pkg/type manager - launch a nodelet of type pkg/type on manager manager

在manager內,載入乙個nodelet。pkg為包名,type為class名(或庫名)

nodelet standalone pkg/type - launch a nodelet of type pkg/type in a standalone node

以standalone模式load和啟動乙個nodelet

nodelet unload name manager - unload a nodelet a nodelet by name from manager

從manager內解除安裝乙個nodelet。

nodelet manager - launch a nodelet manager node

啟動乙個nodelet manager

可以在字元介面使用如:

rosrun nodelet nodelet manager

ROS nodelet 使用介紹

ros的底層通訊都是基於xml rpc協議實現的,以xml rpc的方式傳輸資料存在一定的延時和阻塞。在資料量小 頻率低的情況下,傳輸耗費的時間可以忽略不計。但當傳輸影象流,點雲等資料量較大的訊息,或者執行有一定的實時性要求的任務時,因傳輸而耗費的時間就不得不考慮。nodelet包就是為改善這一狀況...

ROS學習二 安裝ROS

執行備份命令 sudo cp etc apt sources.list etc apt sources.list.old 可以用vim,gedit,atom等工具開啟 sudo vim etc apt sources.list或 sudo gedit etc apt sources.list 或 你...

ROS學習 ROS通訊架構

作用 每個node啟動時都要想master註冊,管理node之間的通訊 可實現點對點通訊 roscore 啟動ros master pkg裡面的可執行檔案執行的例項。啟動乙個node rosrun 包名 節點名 rosnode rosnode list檢視當前執行的node資訊 rosnode in...