ROS2與Arduino除錯有成熟方案,一年多前寫過一篇博文詳細記錄,現在相關物聯網單片機課程(ESP32)已經開發和測驗完成,將之前的再回顧一遍吧(本文不含ROS1),
-
ROS2與Arduino發布訂閱(2019-09)
>ESP32_wifi代碼在文末<
2020年了,port也改成2020(默認為2018)測驗一下:



現在官方已經更新了,但是安裝和使用流程完全一致,參考官方教程即可(ros2arduino),
串口!



Due英文發布
當然,完全可以支持中文的,如下所示:

只需修改下面代碼對應位置即可:

開發板型別在右下角可以看到,
接著除錯一下ESP32,發現一樣OK,串口非常易用,效果很好的,

具體輸出如下:

無線局域網!
那么來測驗一下wifi吧,先調整一下代碼,如下所示:

發現一樣,直接成功沒有遇到任何問題!

注意,一定要啟動xrcedds哦,ESP32開發板IP地址如下:

目前,還不支持tcp,最好用udp,測驗非常穩定,
publisher_wifi_udpesp32.ino
#include <ros2arduino.h>
#include <WiFi.h>
#include <WiFiUdp.h>
#define PUBLISH_FREQUENCY 2 //hz
const char* SSID="*********";
const char* SSID_PW="*********";
#define AGENT_IP "172.20.10.3"
#define AGENT_PORT 2020 //AGENT port number
void publishString(std_msgs::String* msg, void* arg)
{
(void)(arg);
static int cnt = 0;
sprintf(msg->data, "來一起學習ros2吧(ESP32WiFi測驗) %d", cnt++);
}
class StringPub : public ros2::Node
{
public:
StringPub()
: Node("ros2arduino_pub_node")
{
ros2::Publisher<std_msgs::String>* publisher_ = this->createPublisher<std_msgs::String>("arduino_chatter");
this->createWallFreq(PUBLISH_FREQUENCY, (ros2::CallbackFunc)publishString, nullptr, publisher_);
}
};
WiFiUDP udp;
void setup()
{
Serial.begin(115200);
WiFi.begin(SSID, SSID_PW);
while(WiFi.status() != WL_CONNECTED)
{
Serial.print("\n正在連接 ");
Serial.println(SSID);
delay(500);
}
Serial.print("已經準備好,使用 ");
Serial.print(WiFi.localIP());
Serial.println(" 連接ROS2");
ros2::init(&udp, AGENT_IP, AGENT_PORT);
}
void loop()
{
static StringPub StringNode;
ros2::spin(&StringNode);
}
如果覺得這代碼太LOW,沒關系,還有下面配置模式,使用micro-ros2非常棒,有空再更新!


CSDN認證博客專家
不合格高校講師
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/200555.html
標籤:其他
上一篇:一文搞懂I2C通信
