Unterschiede im Web-Editor- und IDE Compiler?

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

Einfach die Fehler beheben, dann läufts auf beiden.

Natürlich sind das andere Kompiler.
Xtensa vs. AVR
C++11 vs. C++17
Und dazu noch schärfere Warning/Error Einstellungen beim ESP

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.