ROS學習 在同乙個節點實現發布 訂閱訊息

2021-10-05 19:37:37 字數 1307 閱讀 4310

在ros的應用中,常常會遇見乙個節點接收了某個資料後,經過處理再**出來。下面就這種情況給出在同乙個節點實現發布、訂閱訊息的例子。

#include

"ros/ros.h"

#include

"std_msgs/float64.h"

#include

class

tl1;

intmain

(int argc,

char

**ar**)

tl1::

tl1();

void tl1::

registernodehandle

(ros::nodehandle& _nh)

;void tl1::

registerpubsub()

;void tl1::

fcallback

(const std_msgs::float64::constptr& msg)

;void tl1::

inipub()

#include

"ros/ros.h"

#include

"std_msgs/float64.h"

class

tl1;

intmain

(int argc,

char

**ar**)

tl1::

tl1();

void tl1::

registernodehandle

(ros::nodehandle& _nh)

;void tl1::

registerpubsub()

;void tl1::

fcallback

(const std_msgs::float64::constptr& msg)

;

這裡注意一下registerpubsub中給sub_f64賦值的方法,最後乙個引數是this指標。有一種流行的說法是this指標指標指向類本身。當我們在類中需要指定類物件的時候,就可以用this指標代替那個我們不知道的物件。

可以注意到我在文章開頭說,有些資料收到後需要經過一系列處理,這裡我的處理就是+1了。

這裡注意到有乙個usleep(500000)代表休眠500ms,因為兩個節點的通過topic建立起來聯絡是需要時間的,所以這裡要留給節點接收訊息的時間。

參考文獻:

1.2.

在同乙個程式中結合C

在同乙個程式中結合c 和c 在同乙個程式中結合c 以及c我們需要注意的4大主題 1.name mangling 名稱重整 2.statics 靜態物件初始化 3.動態記憶體分配 4.資料結構的相容性。對於名稱重整 我們知道在c 中由於過載的存在我們需要對函式的名稱進行重整,但是c的函式我們就不需要重...

實現同乙個使用者只能有乙個登入

1.在登入系統時,得到username 資料庫唯一 宣告個map key為username value 為sessionid 並放入快取中。2.寫乙個filter 類 每次請求 用username 從快取 的map裡 取出sessionid 如果不一致。remove 當時的sessionid 3.登...

建立乙個ROS節點

mkdir p catkin ws srccd catkin ws src現在使用catkin create pkg命令來建立乙個名為 beginner tutorials 的新程式包,這個程式包依賴於std msgs roscpp和rospy catkin create pkg beginner ...