按着网上教程做:rosserial arduino的安装及使用(ROS控制arduino,arduino创建ROS结点)_蒋程扬的博客-CSDN博客这篇博客写的其实是ROS和arduino-uno这一类只有串口的板子的通讯教程。我手上暂时只有esp32的板子,前期按教程做遇见以下几点问题
-
assert failed: tcpip_send_msg_wait_sem IDF/components/lwip/lwip/src/api/tcpip.c:455 (Invalid mbox)esp运行时报错
-
redefinition of 'class ArduinoHardware'编译时报错
其实突破点在第二个错误ArduinoHardware。第一个错误是我取消注释,单片机上电运行时报的错,这个我后面想了想应该是esp32没有配置WiFi,使用而报错。
第二个错误我仔细看了重定义的地方,发现取消注释这一行在作妖
在ArduinoTcpHardware.h文件内定义了ArduinoHardware类,而ArduinoHardware.h也有一个ArduinoHardware类这就是重定义来源。TCP一看就是使用WiFi通讯的。一开始我只用include ros.h类板子是esp32,会定义ESP32这个宏,他调用了ArduinoTcpHardware.h,使用WIFI通讯,而我想用serial,还没有配置wifi自然就报错。解决办法就是修改ros.h,让程序调用使用串口的ArduinoHardware的class。注释掉//ArduinoTcpHardware.h,并include< ArduinoHardware.h>
运行结果图
排版不可能排版的,将就看看