ESP32:Protocol version of client is unrecognized, expected Rev 1 (rosserial 0.5+)

时间:2022-11-18 20:59:12


问题

通过​​Baize_ServoDriver_esp32​​这块开发板与ROS进行串口通信的过程中,发现出现了如下错误

这个错误是在我运行了

rosrun rosserial_python serial_node.py /dev/ttyUSB0

 出现的

ESP32:Protocol version of client is unrecognized, expected Rev 1 (rosserial 0.5+)

通过分析,他的意思是,我们的通讯数据帧出现了问题。

然后通过多番查找资料之后(本来是解决另一个问题的,我的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

ESP32:Protocol version of client is unrecognized, expected Rev 1 (rosserial 0.5+)

修改为下列内容

// #if defined(ESP8266) or defined(ESP32) or defined(ROSSERIAL_ARDUINO_TCP)
#if defined(ROSSERIAL_ARDUINO_TCP)
#include "ArduinoTcpHardware.h"
#else
#include "ArduinoHardware.h"
#endif

 

ESP32:Protocol version of client is unrecognized, expected Rev 1 (rosserial 0.5+)

然后这个问题就被解决了。