ROS與Arduino學習(三)訂閱與發布

2022-07-20 15:42:11 字數 1593 閱讀 1306

ros與arduino學習(三)訂閱與發布

tutorial level:helloworld

next tutorial:用ros的cmake編譯程式

本節介紹如何在arduino中發布與訂閱訊息。他和ros通過串列埠進行節點通訊。

tips 1 訂閱

ros::subscribersub("wwww",&hhhhh);

其中wwww是話題的名稱,hhhhh是收到訊息後呼叫的函式函式名稱。sub是例項化訂閱物件的名字,也可以是別的名字。

是指傳輸的訊息型別。也可以是整形或者其他型別。
nh.subscribe(sub);

其中nh代表控制代碼的意思,每乙個節點有乙個控制代碼。此節點使用sub訂閱物件來訂閱世界中的話題。

tips 2 發布

ros::publisher chatter("chat",&str_msg);

其中「chat」為話題名稱,str_msg為訊息內容。chatter是例項化發布物件的名字。

nh.advertise(chatter)

其中nh代表控制代碼的意思,每乙個節點有乙個控制代碼。此節點使用chatter發布物件來向世界中的話題發布訊息。

chatter.publish(&str_msg);

發布訊息

tips 3 例項程式(控制燈)

整體思路為用arduino訂閱乙個主題「pc2arduino」,然後ubuntu發布乙個訊息到主題中,1代表亮,0代表滅。**比較簡答,不解釋。

**如下:

#include #include #include ros::nodehandle nh;

std_msgs::string str_msg;

//publish and subscribe

//ros::publisher pub("arduino2pc",&str_msg);

void control(const std_msgs::uint16& cmd_msg)

if(cmd_msg.data == 0) }

ros::subscriber sub("pc2arduino", &control );

char hello="hello world!";

void setup()

void loop()

tips 4 測試

#新終端開啟

$ roscore

#新終端開啟

$ rosrun rosserial_python serial_node.py _port:=/dev/ttyusb0

#新終端開啟

$ rostopic pub pc2arduino std_msgs/uint16 1

ROS與Arduino學習(六)Logging日誌

ros與arduino學習 六 logging日誌 tutorial level 客戶端與伺服器 next tutorial 小案例節點通訊 本節較為簡單告訴大家如何向系統發布日誌資訊。tips 1 日誌資訊發布 節點提供了五種日誌訊息,分別是debug information warn error...

Arduino與Vrep的ROS介面除錯

系統環境 ubuntu18.04 arduino uno ros melodic v rep 3.5.0 最近專案需要做個機械臂,於是就想藉此機會用ros把這個東西做出來,介於樹莓派對於舵機的控制效能實在有些尷尬,最後還是用了arduino作為乙個ros結點。1 arduino的ros介面除錯 主要...

ROS學習(三)了解ROS節點

節點 nodes 節點是使用ros與其他節點通訊的可執行檔案。訊息 messages 訂閱或發布主題 topic 時使用的ros資料型別。主題 topic 節點可以將訊息發布到主題,也可以訂閱主題以接收訊息。節點管理器 master ros的名稱服務 即幫助節點相互查詢 rosout 等效於stdo...