Hallo zusammen,
ich habe meine Projekte bisher immer mit der Arduino IDE erstellt. Jetzt tüftle ich an einem iot-Projekt und habe dabei den Web-Editor genutzt. Leider sind dabei für mich undurchsichtige Fehlermeldungen aufgetaucht die ich mir nicht erklären kann.
Der Fehler lässt sich auch mit den Examples der Library nachstellen, so kann ich ausschließen dass ich irgendwelche Tippfehler oder ähnliches eingebaut habe.
Ich möchte die PID Library von Brett Beauregard auf einem ESP32 Devboard nutzen.
Als Example verwende ich "PID RelayOutput Example".
In der Arduino IDE läuft die Überprüfung anstandslos durch.
Im Web-Editor erscheint folgende Fehlermeldung:
/usr/local/bin/arduino-cli compile --fqbn esp32:esp32:esp32doit-devkit1 --build-cache-path /tmp --output-dir /tmp/1280425552/build --build-path /tmp/arduino-build-AFFA3031141DC949AB4606AFF082EAC7 /tmp/1280425552/PID_RelayOutput
In file included from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/CatmullRom.cpp:1:
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/CatmullRom.h:9:24: error: 'constexpr' needed for in-class initialization of static data member 'const float CatmullRom::END_STEP_SIZE' of non-integral type [-fpermissive]
static const float END_STEP_SIZE = 1;
^~~~~~~~~~~~~
In file included from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/DeadReckoner.cpp:1:
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/DeadReckoner.h:12:21: error: 'constexpr' needed for in-class initialization of static data member 'const float DeadReckoner::RAD_PER_SEC_TO_RPM' of non-integral type [-fpermissive]
static const float RAD_PER_SEC_TO_RPM = 30.0 / PI;
^~~~~~~~~~~~~~~~~~
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/DeadReckoner.cpp:7:56: error: default argument given for parameter 6 of 'DeadReckoner::DeadReckoner(volatile long unsigned int*, volatile long unsigned int*, int, double, double, long unsigned int)' [-fpermissive]
int tpr, double r, double l, unsigned long ci=50) {
^
In file included from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/DeadReckoner.cpp:1:
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/DeadReckoner.h:14:2: note: previous specification in 'DeadReckoner::DeadReckoner(volatile long unsigned int*, volatile long unsigned int*, int, double, double, long unsigned int)' here
DeadReckoner(volatile unsigned long *left, volatile unsigned long *right,
^~~~~~~~~~~~
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/DeadReckoner.cpp:12:56: error: default argument given for parameter 6 of 'void DeadReckoner::Init(volatile long unsigned int*, volatile long unsigned int*, int, double, double, long unsigned int)' [-fpermissive]
int tpr, double r, double l, unsigned long ci=50) {
^
In file included from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/DeadReckoner.cpp:1:
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/DeadReckoner.h:16:7: note: previous specification in 'void DeadReckoner::Init(volatile long unsigned int*, volatile long unsigned int*, int, double, double, long unsigned int)' here
void Init(volatile unsigned long *left, volatile unsigned long *right,
^~~~
In file included from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PurePursuit.h:6,
from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PreMo.h:9,
from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PreMo.cpp:1:
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/CatmullRom.h:9:24: error: 'constexpr' needed for in-class initialization of static data member 'const float CatmullRom::END_STEP_SIZE' of non-integral type [-fpermissive]
static const float END_STEP_SIZE = 1;
^~~~~~~~~~~~~
In file included from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PreMo.h:9,
from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PreMo.cpp:1:
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PurePursuit.h:13:24: error: 'constexpr' needed for in-class initialization of static data member 'const float PurePursuit::DEFAULT_INTERPOLATION_STEP' of non-integral type [-fpermissive]
static const float DEFAULT_INTERPOLATION_STEP = 20; // mm
^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PreMo.h:10,
from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PreMo.cpp:1:
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/DeadReckoner.h:12:21: error: 'constexpr' needed for in-class initialization of static data member 'const float DeadReckoner::RAD_PER_SEC_TO_RPM' of non-integral type [-fpermissive]
static const float RAD_PER_SEC_TO_RPM = 30.0 / PI;
^~~~~~~~~~~~~~~~~~
In file included from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PreMo.cpp:1:
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PreMo.h:68:21: error: 'constexpr' needed for in-class initialization of static data member 'const float PreMo::_END_STEP_ANGLE' of non-integral type [-fpermissive]
static const float _END_STEP_ANGLE = 0.001 * PI/180; // rad
^~~~~~~~~~~~~~~
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PreMo.h:84:21: error: 'constexpr' needed for in-class initialization of static data member 'const float PreMo::_TWIST_THRESHOLD_ANGLE' of non-integral type [-fpermissive]
static const float _TWIST_THRESHOLD_ANGLE = 2;
^~~~~~~~~~~~~~~~~~~~~~
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PreMo.cpp:134:63: error: default argument given for parameter 2 of 'void PreMo::twist(float, int)' [-fpermissive]
void PreMo::twist(float targetHeading, int direction=TWIST_MIN)
^
In file included from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PreMo.cpp:1:
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PreMo.h:32:7: note: previous specification in 'void PreMo::twist(float, int)' here
void twist(float targetHeading, int twist=TWIST_MIN);
^~~~~
In file included from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PurePursuit.h:6,
from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PurePursuit.cpp:2:
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/CatmullRom.h:9:24: error: 'constexpr' needed for in-class initialization of static data member 'const float CatmullRom::END_STEP_SIZE' of non-integral type [-fpermissive]
static const float END_STEP_SIZE = 1;
^~~~~~~~~~~~~
In file included from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PurePursuit.cpp:2:
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PurePursuit.h:13:24: error: 'constexpr' needed for in-class initialization of static data member 'const float PurePursuit::DEFAULT_INTERPOLATION_STEP' of non-integral type [-fpermissive]
static const float DEFAULT_INTERPOLATION_STEP = 20; // mm
^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PurePursuit.cpp:6:133: error: default argument given for parameter 5 of 'PurePursuit::PurePursuit(double*, double*, double*, double, long unsigned int, int)' [-fpermissive]
PurePursuit::PurePursuit(double* xPos, double* yPos, double *heading, double LOOK_AHEAD, unsigned long INTERVAL=50, int STOP_POINT=3)
^
In file included from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PurePursuit.cpp:2:
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PurePursuit.h:14:5: note: previous specification in 'PurePursuit::PurePursuit(double*, double*, double*, double, long unsigned int, int)' here
PurePursuit(double* xPos, double* yPos, double *heading, double LOOK_AHEAD, unsigned long INTERVAL=50, int STOP_POINT=3);
^~~~~~~~~~~
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PurePursuit.cpp:6:133: error: default argument given for parameter 6 of 'PurePursuit::PurePursuit(double*, double*, double*, double, long unsigned int, int)' [-fpermissive]
PurePursuit::PurePursuit(double* xPos, double* yPos, double *heading, double LOOK_AHEAD, unsigned long INTERVAL=50, int STOP_POINT=3)
^
In file included from /home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PurePursuit.cpp:2:
/home/builder/Arduino/libraries/premo_virtual_path_following_2_0_0/src/PurePursuit.h:14:5: note: previous specification in 'PurePursuit::PurePursuit(double*, double*, double*, double, long unsigned int, int)' here
PurePursuit(double* xPos, double* yPos, double *heading, double LOOK_AHEAD, unsigned long INTERVAL=50, int STOP_POINT=3);
^~~~~~~~~~~
Multiple libraries were found for "PID_v1.h"
Used: /home/builder/opt/libraries/premo_virtual_path_following_2_0_0
Not used: /home/builder/opt/libraries/pid_1_2_0
Error during build: exit status 1
Wenn ich im Web Editor ein anderes Board wähle, zum Beispiel einen Arduino Uno, läuft die Überprüfung anstandslos durch.
Hat jemand dafür eine Erklärung und vielleicht sogar eine Lösung?
Vielen Dank und viele Grüße Tom