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...