报错情况:
1、Arduino IDE正常下载Rosserial Arduino Library 库时调用示例Hello World 打不开。
2、Arduino IDE验证示例Hello World 报错,报错如下
In file included from c:\Users\qizerone\Documents\Arduino\libraries\Rosserial_Arduino_Library\src/std_msgs/Time.h:7:0,
from c:\Users\qizerone\Documents\Arduino\libraries\Rosserial_Arduino_Library\src/ros/node_handle.h:40,
from c:\Users\qizerone\Documents\Arduino\libraries\Rosserial_Arduino_Library\src/ros.h:38,
from D:\ArdinoIDE\Ardion program\uart_test_1_3_16_test\sketch_mar16a\sketch_mar16a.ino:1:
c:\Users\qizerone\Documents\Arduino\libraries\Rosserial_Arduino_Library\src/ros/msg.h:40:10: fatal error: string: No such file or directory
#include <string>
^~~~~~~~
compilation terminated.
exit status 1
Compilation error: exit status 1
1、遇错情况:
笔者在配置ros-noetic与Arduino通讯时,在调用Aruino IDE中下载rosserial Arduino Library后调用示例库中示例Hello World时,无法打开示例。且在打开后验证报错。
2、解决方案:
1、解决办法1;无法打开Hello world示例。
解决思路:因为新版的Arduino IDE中对.pde文件不再支持,需要将Hello World.pde文件更改后缀为Hello World.ino文件
1、 先打开文件夹的首选项。
2、点击浏览项目文件夹位置。
3、在examples中打开Hello Wold示例。
4、将HelloWorld.pde文件重命名为HelloWorld.ino文件。
注意:如果没有显示文件没有后缀名的话需要设置一下显示条件,具体步骤如下。
保存后,可以再文件->示例->Rosserial Arduino Library->HelloWorld,就可以正常打开示例了。
1、解决办法2;编译验证HelloWorld报错。
编译后报错如下:
In file included from c:\Users\qizerone\Documents\Arduino\libraries\Rosserial_Arduino_Library\src/std_msgs/Time.h:7:0,
from c:\Users\qizerone\Documents\Arduino\libraries\Rosserial_Arduino_Library\src/ros/node_handle.h:40,
from c:\Users\qizerone\Documents\Arduino\libraries\Rosserial_Arduino_Library\src/ros.h:38,
from C:\Users\qizerone\AppData\Local\Temp\.arduinoIDE-unsaved2024216-21972-ssfg3a.msna\HelloWorld\HelloWorld.ino:6:
c:\Users\qizeorne\Documents\Arduino\libraries\Rosserial_Arduino_Library\src/ros/msg.h:40:10: fatal error: cstring: No such file or directory
#include <cstring>
^~~~~~~~~
compilation terminated.
exit status 1
Compilation error: exit status 1
1、打开Rosserial_Arduino_Library文件夹下的msg.h文件
这边需要打开Rosserial_Arduino_library -> src -> ros -> msg.h文件,打开Rosserial_Arduino_Library项目文件夹步骤,上面提到了,这边就不再赘述。总之就是要修改msg.h文件。
2、删除#include <cstring>
3、修改代码语段。
原本代码语段:
std::memcpy(&val, &f, sizeof(val));
将std::删除后的修改代码为:
memcpy(&val, &f, sizeof(val));
在Rosserial_Arduino_Library 0.9.1版本的情况下,需修改代码大概在68和182行左右,修改两处即可。
修改完后保存,回到Arduino IDE再编译。
编译通过。
就此问题解决,有用的话可以给笔者点个小小的赞,让笔者更有动力,如果能给笔者个关注,那笔者将会感激不尽,谢谢!