问题
通过Baize_ServoDriver_esp32这块开发板与ROS进行串口通信的过程中,发现出现了如下错误
这个错误是在我运行了
rosrun rosserial_python serial_node.py /dev/ttyUSB0
出现的
通过分析,他的意思是,我们的通讯数据帧出现了问题。
然后通过多番查找资料之后(本来是解决另一个问题的,我的esp32在发现串口话题通信有问题之后,我就没继续纠结,因为拿esp32做主控的初衷就是通过wifi进行话题通信,所以串口无法进行话题通信对我并没有影响。但是在写程序的时候,发现又出了其他问题,结果那个问题解决完发现这个问题也解决了,所以就验证了一下,果然这个方法可以解决这个问题),机缘巧合,这个问题被解决了。
原链接在这里:
ESP32 keep rebooting when trying to use rosserial · Issue #4807 · espressif/arduino-esp32 · GitHub
解决办法
据说是ros里硬件定义使得esp32通过串口连接进行wifi连接,因此产生了硬件的冲突,我们需要更改ros.h这个文件。
将如下文件内容
#if defined(ESP8266) or defined(ESP32) or defined(ROSSERIAL_ARDUINO_TCP)
#include "ArduinoTcpHardware.h"
#else
#include "ArduinoHardware.h"
#endif
修改为下列内容
// #if defined(ESP8266) or defined(ESP32) or defined(ROSSERIAL_ARDUINO_TCP)
#if defined(ROSSERIAL_ARDUINO_TCP)
#include "ArduinoTcpHardware.h"
#else
#include "ArduinoHardware.h"
#endif
然后这个问题就被解决了。
标签:Protocol,defined,ESP32,0.5,问题,串口,include,esp32 From: https://blog.51cto.com/u_15882586/5869269