Gibt es eine Standard Library für 3D Vektoren in C++, welche gut auf kleineren ARM-Controllern verwendet werden kann? Ich brauche ein paar Standard-Funktionen wie Multiplikation und Betragsbildung und will das Rad nicht neu erfinden.
Hallo Markus, guck Dir mal die Eigen Library an (http://eigen.tuxfamily.org/dox/). Aus zuverlässiger Quelle weiß ich, dass man das auch auf einem Cortex-M0 nutzen kann. mfg Torsten
Hallo Torsten, das sieht interessant, aber auch etwas zu kompliziert aus. Die Library scheint ziemlich mächtig und aus irgendwelchen Gründen befindet sich der gesamte Code in Header-Files anstatt in cpp-Files. Das erscheint mir etwas seltsam. Ich brauche eigentlich nur wenige Funktionen wie Skalarprodukt, Vektorprodukt und Drehoperatoren und das ganze sollte unter 1-2Kbyte Speicher belegen.
Markus schrieb: > Ich brauche eigentlich nur wenige Funktionen wie Skalarprodukt, > Vektorprodukt und Drehoperatoren und das ganze sollte unter 1-2Kbyte > Speicher belegen. Ist doch schnell selber programmiert? Dafür ist die eigen-Bibliothek tatsächlich etwas zu mächtig.
Moin, Ich hab jetzt nur nenn kurzen Blick drauf geworfen. Das alles in den Headern ist, liegt an den Templates. Wenn man die verwendet, kann man das nicht mehr in .h und .cpp aufteilen. Das bringt den Compiler durcheinander.
Markus schrieb: > das sieht interessant, aber auch etwas zu kompliziert aus. > Die Library scheint ziemlich mächtig und aus irgendwelchen Gründen > befindet sich der gesamte Code in Header-Files anstatt in cpp-Files. Das > erscheint mir etwas seltsam. Naja, dass ist eigentlich bei modernen C++ Libraries fast schon üblich. Mir ist aber nicht klar, was Du suchst. Es hat sich bestimmt noch niemand hingesetzt und eine Library geschrieben, die exakt die Handvoll Funktion enthält, die Du gerade jetzt brauchst. Entweder Du schreibst das selbst (und mit Schreiben ist es in der Regel nicht getan, da fehlt dann auch noch die Validieren, Dokumentation, Optimierung etc.), oder Du setzt Dich mal einen halben Tag hin und ließt die Dokumentation einer Library, die so etwas kann und dann hat Dein Werkzeugkasten wieder ein wertvolles Werkzeug mehr.
Und wenn ich mir die Beispiele hier: http://eigen.tuxfamily.org/dox/group__TutorialMatrixArithmetic.html mal angucke, sieht dass ganze doch extrem einfach aus.
Torsten R. schrieb: > Und wenn ich mir die Beispiele hier: > http://eigen.tuxfamily.org/dox/group__TutorialMatr... mal > angucke, sieht dass ganze doch extrem einfach aus. Ist es auch. Ich habe mich mal in eigen während meines Masters eingearbeitet, da ging es um Berechnung von Eigenwerten für eine Schwingungsanalyse. Hatte die Analyse zunächst in Matlab entwickelt und anschließend auf C++ mit eigen portiert. War kaum ein Tag arbeit. Die Dokumentation ist außerdem sehr gut und bei doofen Fragen findet man per google schnell Antwort :)
Eigen ist wirklich zu empfehlen. - Ist zwar sehr maechtig, aber hat auch den Vorteil, dass einfache Sachen dennoch relativ schnell machbar sind. Als Einstieg vielleicht die textuelle Quickreference: https://eigen.tuxfamily.org/dox-devel/AsciiQuickReference.txt Bsp Vektormultiplikation:
1 | #include <Eigen/Dense> |
2 | |
3 | int main(){ |
4 | Eigen::VectorXd a(2),b(2); //2 gibt die Dimension des Vekt an. |
5 | a << 1,2; b<<2,1; //Vekt befuellen |
6 | double resultDotProd = a.dot(b); // oder wahlweise auch einfach a.tranpose()*b; |
7 | |
8 | //Fuer das aeussere Prod. brauchts eine 2x2 Matrix
|
9 | Eigen::MatrixXd resultOuterProd(2,2); |
10 | resultOuterProd = a * b.transpose(); |
11 | }
|
lg
Markus schrieb: > das sieht interessant, aber auch etwas zu kompliziert aus. > Die Library scheint ziemlich mächtig und aus irgendwelchen Gründen > befindet sich der gesamte Code in Header-Files anstatt in cpp-Files. Das > erscheint mir etwas seltsam. Mhm, noch nicht viel Erfahrung mit C++? Markus schrieb: > Ich brauche eigentlich nur wenige Funktionen wie Skalarprodukt, > Vektorprodukt und Drehoperatoren und das ganze sollte unter 1-2Kbyte > Speicher belegen. Ja dann ist die Library doch perfekt, es wird dank Templates nur das Kompiliert was du nutzt, nicht mehr und nicht weniger.
>Autor: Bastler (Gast) >Torsten R. schrieb: >> Und wenn ich mir die Beispiele hier: >> http://eigen.tuxfamily.org/dox/group__TutorialMatr... mal >> angucke, sieht dass ganze doch extrem einfach aus. >Ist es auch. Ich habe mich mal in eigen während meines Masters >eingearbeitet, da ging es um Berechnung von Eigenwerten für eine >Schwingungsanalyse. Es ist genau dann einfach und universell, wenn man es in ein ARDUINO Programm integrieren kann. Dass das möglich ist, wage ich allerdings zu bezweifeln. Das Problem bei solch einer Bibliothek ist grundsätzlich, dass man am Anfang nicht weiß, ob sie für das eigene Problem zu gebrauchen ist. Das ist z.B. bei den ARDUINO-Libs sehr gut gelöst: einfach laden, compilieren, ausprobieren fertig. Eine Sache von ein paar Minuten.
Markus schrieb: > Es ist genau dann einfach und universell, wenn man es in ein ARDUINO > Programm integrieren kann. > Dass das möglich ist, wage ich allerdings zu bezweifeln. Probier es aus! C++ hat den Vorteil, dass Du in der Regel für nix zahlst, was Du nicht auch nutzt. Würde mich wundern, wenn eine selbst gestrickte Lösung schneller und effektiver wäre. Wie gesagt, so etwas kann man selbst auf einem Cortex M0 einsetzen. > Das Problem bei solch einer Bibliothek ist grundsätzlich, dass man am > Anfang nicht weiß, ob sie für das eigene Problem zu gebrauchen ist. Das > ist z.B. bei den ARDUINO-Libs sehr gut gelöst: einfach laden, > compilieren, ausprobieren fertig. Eine Sache von ein paar Minuten. Wo siehst Du jetzt den großen Unterschied zur Eigen-Library?
>Wo siehst Du jetzt den großen Unterschied zur Eigen-Library? In der Einfachheit des Vorgangs. Laden, Compile-Knopf drücken .. läuft. Zum ersten Ausprobieren ist es sehr gut, wenn man sich nicht um Verzeichnisse, Make-Files, Compilereinstellungen, welches Demo, Versionsnummern usw. kümmern muss. Bei Apple würde es wohl "Usabillity" heißen. >Probier es aus! C++ hat den Vorteil, dass Du in der Regel für nix >zahlst, was Du nicht auch nutzt. Würde mich wundern, wenn eine selbst >gestrickte Lösung schneller und effektiver wäre. Verstehe mich nicht falsch. Ich habe keine Zweifel daran, dass die Eigen-Library ziemlich ausgereift und akademisch anspruchsvoll ist. Meine Fragestellung ist nur: - Ist sie schnell? - braucht sie wenig Speicher? - Läuft sie auf einem Cortex M0 mit minimalem Platz und Resourcenverbrauch? - ist sie einfach zu integrieren? Wenn es ein Beispiel für eine Arduino Zero gäbe, wäre die Frage ziemlich schnell beantwortet. Das ist auch die Philosophie des ARDUINO-Systems: Löse das Problem schnell und effektiv, vermeide unnötige Technikprobleme wie z.B. die lange Suche nach Compiler-Configurationen, falsche Pfadeinstellungen, nicht aufzufindende Abhängigkeiten, zu großer Ramspeicherbedarf usw. Das Problem ist hier nur, dass ich mich vermutlich eine Woche mit der Eigen-Library beschäftigen muss, bis ich diese Fragen für mich beantworten kann. Dann investiere ich lieber einen halben Tag für die paar Funktionen die ich brauche und programmiere es selber.
Hier habe ich was gefunden. Es ist zwar kein C++ und spielt natürlich überhaupt nicht in der Eigen-Lib-Klasse, ist aber ziemlich einfach und übersichtlich: http://www.mrt-prodz.com/blog/view/2015/05/tiny-3d-engine-on-the-atmega328-arduino-uno Wer mag, kann es ja mal zeigen, wie "elegant" das mit der Eigen-Lib aussieht.
Der Vollständigkeit halber hier noch der direkte Link auf die GitHub-Lib: https://github.com/mrt-prodz/ATmega328-Tiny-3D-Engine
Markus schrieb: > Das Problem ist hier nur, dass ich mich vermutlich eine Woche mit der > Eigen-Library beschäftigen muss, bis ich diese Fragen für mich > beantworten kann. Äh, was? Bist du geistig eingeschränkt oder warum braucht das so lange? Letztens habe ich eine Library in ein Projekt eingebunden, die auf eigen basiert. Also musste Eigen in mein Projekt eingebunden werden. Das, wofür du eine Woche brauchen willst, beschränkt sich auf die Übergabe von 'pkg-config --cflags --libs eigen' an den Compiler. Dann noch ein include, und fertig. In einer Woche kann man alle 9000 Compiler Flags vom GCC lernen, Gott weiß warum du so lange brauchst um das einzige benötigte Flag -I zu finden, bzw. die Doku in der der pkg-config Aufruf steht. Die Installation von eigen ist sogar noch einfacher als die von Arduino Libs, da sie unter Linux ruck zuck per Paketmanager installiert werden kann.
>Äh, was? Bist du geistig eingeschränkt oder warum braucht das so lange? >Letztens habe ich eine Library in ein Projekt eingebunden, die auf eigen >basiert Na dann mach mal und binde die Lib mal schnell in eine kleines Arduino-Demo ein bevor alles nur leeres Gewäsch ist.
Markus schrieb: > Na dann mach mal und binde die Lib mal schnell in eine kleines > Arduino-Demo ein bevor alles nur leeres Gewäsch ist. Keine Ahnung wie man bei Arduino Compiler-Flags eingibt. Ich hab es daher so gemacht: * In Eclipse ein Projekt für den STM32F051 angelegt * In den Projekt-Einstellungen zu den Compiler-Flags `pkg-config --cflags eigen3` hinzugefügt Fertig. Jetzt kann Eigen verwendet werden. Hat 5 Minuten gedauert. So schnell kriegst du keine Matrix-Algorithmen implementiert. Hier noch ein sinnloses Dummy-Programm zur Demonstration dass es funktioniert:
1 | #include <Eigen/Dense> |
2 | |
3 | volatile float x; |
4 | |
5 | int main () { |
6 | Eigen::Matrix<float, 2, 2> m; |
7 | m(0, 0) = 3; |
8 | m(1, 0) = 2.5; |
9 | m(0, 1) = -1; |
10 | m(1, 1) = m(1, 0) + m(0, 1); |
11 | |
12 | Eigen::Matrix<float, 2, 1> v; |
13 | v(0, 0) = 1; |
14 | v(1, 0) = 2; |
15 | |
16 | Eigen::Matrix<float, 2, 1> w = m * v; |
17 | |
18 | while (1) { |
19 | // Dummy-Ausgabe
|
20 | x = w(0); |
21 | v += w; |
22 | w = m * v; |
23 | }
|
24 | }
|
Wenn du rausfindest wie man der Arduino-IDE Compiler-Flags eingibst, kannst du es 1:1 so machen. Aber dem TO ging es überhaupt nicht um Arduino, daher passt das so...
Dr. Sommer schrieb >Ich hab es daher so gemacht: Danke für die Code-Beispiele. >Keine Ahnung wie man bei Arduino Compiler-Flags eingibt. Siehst Du, genau an diesem Punkt unterscheidet sich die Theorie von der Praxis. Theoretisch ist es leicht und es geht, nur in der Praxis geht es nicht. Deshalb möchte ich mir erlauben, Dir für die Zukunft zu empfehlen, etwas weniger voreilig in der Wortwal zu sein: Dr. Sommer schrieb: >Äh, was? Bist du geistig eingeschränkt oder warum braucht das so lange?
Markus schrieb: > Theoretisch ist es leicht und es geht, nur in der Praxis geht es > nicht. Jetzt habe ich extra für dich herausgesucht, wie man in Arduino Libraries erstellt. Auch das hat keine Woche gedauert: 1. Aktuelle Eigen Version ( http://bitbucket.org/eigen/eigen/get/3.2.8.tar.bz2 ) herunterladen 2. Archiv entpacken 3. Den entpackten Ordner von "eigen-eigen-07105f7124f9" nach "Eigen3" umbenennen 4. Alles im Ordner löschen außer dem Unterordner "Eigen" 5. Eine Datei namens "Eigen3.h" im Ordner "Eigen3" anlegen, und hineinschreiben:
1 | #pragma push_macro("max")
|
2 | #pragma push_macro("min")
|
3 | #pragma push_macro("B1")
|
4 | #pragma push_macro("B2")
|
5 | #pragma push_macro("B3")
|
6 | |
7 | #undef max
|
8 | #undef min
|
9 | #undef B1
|
10 | #undef B2
|
11 | #undef B3
|
12 | |
13 | #include <Eigen/Eigen> |
14 | |
15 | #pragma pop_macro("max")
|
16 | #pragma pop_macro("min")
|
17 | #pragma pop_macro("B1")
|
18 | #pragma pop_macro("B2")
|
19 | #pragma pop_macro("B3")
|
Dies ist erforderlich, da die Arduino IDE Makros definiert, die den Eigen-Code verwirren. Hier sieht man sehr deutlich die Probleme, die die völlig unnötige Nutzung von Makros statt Funktionen/Konstanten verursachen. 6. Den gesamten Eigen3 Ordner in den "libraries" Ordner im Sketchbook, also zB $HOME/sketchbook/libraries, verschieben. Fertig. Jetzt kann man einen Beispiel-Arduino-Sketch anlegen:
1 | #include <Eigen3.h> |
2 | |
3 | |
4 | volatile float x; |
5 | |
6 | void setup() { |
7 | Eigen::Matrix<float, 2, 2> m; |
8 | m(0, 0) = 3; |
9 | m(1, 0) = 2.5; |
10 | m(0, 1) = -1; |
11 | m(1, 1) = m(1, 0) + m(0, 1); |
12 | |
13 | Eigen::Matrix<float, 2, 1> v; |
14 | v(0, 0) = 1; |
15 | v(1, 0) = 2; |
16 | |
17 | Eigen::Matrix<float, 2, 1> w = m * v; |
18 | |
19 | while (1) { |
20 | // Dummy-Ausgabe
|
21 | x = w(0); |
22 | v += w; |
23 | w = m * v; |
24 | }
|
25 | }
|
26 | |
27 | void loop() { |
28 | // put your main code here, to run repeatedly:
|
29 | delay(1000); |
30 | digitalWrite (13, HIGH); |
31 | delay (1000); |
32 | digitalWrite (13, LOW); |
33 | }
|
Und für einen der ARM-Arduinos, wie den Arduino Zero, kompilieren. Für geistig eingeschränkte wie dich habe ich den genannten "Eigen3" Ordner noch als ZIP-Archiv angehängt. Das kannst du in der Arduino-IDE mit "Sketch->Include Library->Add .ZIP Library..." automatisch entpacken, sodass du direkt mit dem Sketch-Schreiben beginnen kannst. Im ganzen Thread ging es überhaupt nicht um Arduino. Nur du hast damit angefangen, wie toll alles bei Arduino ist, und ich hatte dir gezeigt wie einfach es mit G++/Eclipse geht. Eine IDE, bei der man nichtmal Compiler-Flags eingeben kann, als Maß aller Dinge zu nehmen, finde ich etwas unrealistisch. Aber wie du siehst, ist es auch bei Arduino mit etwas mehr Frickelei schnell möglich. Selbst ein Genie hätte in der Zeit keine Matrix-Library mit allen nötigen Tests usw. implementieren können.
Hallo Markus, ich finde es schon gelinde gesagt etwas unhöflich, zuerst >Gibt es eine Standard Library für 3D Vektoren in C++, welche gut auf >kleineren ARM-Controllern verwendet werden kann? >Ich brauche ein paar Standard-Funktionen wie Multiplikation und >Betragsbildung und will das Rad nicht neu erfinden. nach einer c++ Standard Bibliothek zu fragen. Und dann, nachdem die hilfsbereiten Menschen hier genau diesen Wunsch passend und schnell erfüllt haben damit herauszurücken, dass es um eine schlüsselfertige Arduino-Bibliothek geht. Frech! vlg Timm
Dr. Sommer schrieb: > Aber dem TO ging es überhaupt nicht um Arduino, daher passt das so... Dr. Sommer schrieb: > Im ganzen Thread ging es überhaupt nicht um Arduino. Timm R. schrieb: > ich finde es schon gelinde gesagt etwas unhöflich... Huch, Markus ist ja der TO :D Das machts natürlich noch besser... Na eine schlüsselfertige und sehr mächtige Arduino-Library hat er jetzt ja mit Eigen...
>Für geistig eingeschränkte wie dich habe ich den genannten "Eigen3" >Ordner noch als ZIP-Archiv angehängt. Vielen Danke für das Zip-File, das hilft mir sehr weiter. Hier habe ich noch ein kleines Liedchen für Dich gefunden: https://www.youtube.com/watch?v=dapqMeQCdcs
Timm Reinisch (Firma: privatfrickler.de) (treinisch) >Hallo Markus, >ich finde es schon gelinde gesagt etwas unhöflich, zuerst >>Gibt es eine Standard Library für 3D Vektoren in C++, welche gut auf >>kleineren ARM-Controllern verwendet werden kann? >>Ich brauche ein paar Standard-Funktionen wie Multiplikation und >>Betragsbildung und will das Rad nicht neu erfinden. >nach einer c++ Standard Bibliothek zu fragen. Und dann, nachdem die >hilfsbereiten Menschen hier genau diesen Wunsch passend und schnell >erfüllt haben damit herauszurücken, dass es um eine schlüsselfertige >Arduino-Bibliothek geht. Hallo Timm, es ging in dem Thread gar nicht speziell um die Arduino-Library. Arduino ist nur ein Prüfstein, mit dem sich zeigen lässt dass etwas einfach zu benutzten ist. Fast alle Dinge sind dort so gemacht, dass sie sich einfach benutzen und testen lassen. Dieses Prinzip der einfachen "Usability" stünde vielen Open-Source-Projekten gut zu Gesicht. Dr. Sommer hat hier eine gute Arbeit geleistet, so dass viele Nutzer die Libray jetzt ohne großen Aufwand testen können. Allerdings muss ich sagen, dass ich seine Ausdrucksweise gelinde gesagt etwas "frech" finde. >Frech!
Markus schrieb: > Siehst Du, genau an diesem Punkt unterscheidet sich die Theorie von der > Praxis. > > Theoretisch ist es leicht und es geht, nur in der Praxis geht es > nicht. Das geht auch in der Praxis ganz einfach. Das einzige was hier der beschränkende Faktor ist, ist diese verkackte Arduino-IDE. Nimm eine andere IDE, oder noch besser, einen Textedior deiner Wahl und ein Makefile, und das Problem ist gelöst. Streng genommen gibt es nicht mal ein Problem, bzw. sind nicht die Compilerflags das Problem, sondern die Arduino-IDE. Weil es nicht vorgesehen ist, das du da was ändern könnne sollst. Soll ja schließlich idiotensicher und für jeden ganz einfach benutzbar sein. Wenn mans aber doch machen muss, kann man in der Datei platform.txt die Compilerflags eintragen...
Markus schrieb: > Dieses Prinzip der einfachen > "Usability" stünde vielen Open-Source-Projekten gut zu Gesicht. Was können denn die Macher eines Projektes dafür, wenn Du nicht mit deinen Werkzeugen (IDE, Compiler usw.) umgehen kannst?
Markus schrieb: > Arduino > ist nur ein Prüfstein, mit dem sich zeigen lässt dass etwas einfach zu > benutzten ist. Fast alle Dinge sind dort so gemacht, dass sie sich > einfach benutzen und testen lassen. Dieses Prinzip der einfachen > "Usability" stünde vielen Open-Source-Projekten gut zu Gesicht. Arduino ist ein "Spielzeug" für alle, die sich nicht weiter in die Thematik einarbeiten wollen. Du kannst den Arduino Workflow nicht mit dem einer echten IDE vergleichen. Desto einfacher die Programmierung/Nutzung ist, desto beschränkter ist man in den Möglichkeiten und genau an diese Grenze bist du mit der Lib gekommen.
>Arduino ist ein "Spielzeug" für alle, die sich nicht weiter in die >Thematik einarbeiten wollen. Das erinnert mich ein wenig an diese Physiker, die immer behaupten, Chemie sei eigentlich überflüssig, weil am Ende doch alles irgenwie Physik sei. Wenn sie dann mit ihrem physikalischen Handwerkszeug konkrete Problemstellungen aus der Chemie lösen sollen, kommt dabei aber meist nichts brauchbares heraus. Jedenfalls nicht in überschauberer Zeit.
Markus schrieb: > Gibt es eine Standard Library für 3D Vektoren in C++ Du suchtest eine Library. Eigen ist eine (Template-)Library, die Tiny-3D-Engine https://github.com/mrt-prodz/ATmega328-Tiny-3D-Engine die ich im Folgenden mit T3DE abkürzen werde, nicht. T3DE ist eine fertige Anwendung zur Animation vordefinierter Mesh-Modelle. Du kannst darraus natürlich den für dich relevanten Quellcode heraus- und in deine eigene Anwendung hineinkopieren. Das ist aber sicher nicht einfacher, als an den Anfang des Programms ein
1 | #include <Eigen/Dense> |
zu schreiben und ggf. den Include-Pfad passend zu setzen. Markus schrieb: > Ich brauche ein paar Standard-Funktionen wie Multiplikation und > Betragsbildung und will das Rad nicht neu erfinden. Eigen hat Betragsbildung, T3DE nicht. Markus schrieb: > Ich brauche eigentlich nur wenige Funktionen wie Skalarprodukt, > Vektorprodukt und Drehoperatoren Eigen hat das alles, in T3DE fehlen Skalarprodukt und Vektorprodukt komplett, Drehungen sind nur um die Koordinatenachsen möglich. Markus schrieb: > Das Problem bei solch einer Bibliothek ist grundsätzlich, dass man am > Anfang nicht weiß, ob sie für das eigene Problem zu gebrauchen ist. Das > ist z.B. bei den ARDUINO-Libs sehr gut gelöst: einfach laden, > compilieren, ausprobieren fertig. Eine Sache von ein paar Minuten. Festzustellen, dass T3DE deinen Anforderungen nicht entspricht, dauert für dich vermutlich deutlich länger als ein paar Minuten. Die 3D-Animation laufen zu lassen ist sicher kein Problem. Aber bist du danach gescheiter also vorher? Das Einzige, was du dann weißt, dass die enthaltenen Vektor- und Matrixfunktionen für exakt jene 3D-Animationen wie in der Demo geeignet ist. Nur noch ein paar Dinge, die mich persönlich an T3DE stören würden: - Es fehlen die meisten Grundfunktionen für Vektoren und Matrizen. - Da für Sinus und Cosinus Look-Up-Tabellen verwendet werden, ist die Winkelauflösung für Rotationen nur 1°. Für Animationen mag das reichen, für viele andere Anwendungen ist das zu grob. - Sämtliche Operationen (Skalierung, Translation und Rotation) werden auf eine 4×4-Matrix-Multiplikation zurückgeführt, was sehr ineffzient ist. - Da Rotationen nur um die Koordinatenachsen möglich sind, muss eine Rotation um eine andere Achse aus drei Einzelrotationen zusammengesetzt werden, was ebenfalls sehr ineffzient ist. - usw., wenn man ernsthaft damit arbeiten würde, würden einem sicher noch weitere Dinge negativ auffallen. Jetzt mal Hand auf's Herz: Wie lange hättest du gebraucht, um das selber herauszufinden? Wirklich nur ein paar Minuten? Programmieren ist eben trotz Arduino & Co. schon noch etwas mehr als nur Copy/Paste ;-) Markus schrieb: > Gibt es eine Standard Library für 3D Vektoren in C++ Markus schrieb: > Es ist genau dann einfach und universell, wenn man es in ein ARDUINO > Programm integrieren kann. > Dass das möglich ist, wage ich allerdings zu bezweifeln. Markus schrieb: > Wenn es ein Beispiel für eine Arduino Zero gäbe, wäre die Frage ziemlich > schnell beantwortet. Markus schrieb: > Na dann mach mal und binde die Lib mal schnell in eine kleines > Arduino-Demo ein bevor alles nur leeres Gewäsch ist Markus schrieb: > es ging in dem Thread gar nicht speziell um die Arduino-Library. Vielleicht ist es ja keine böse Absicht, aber du führst hier die Leute ganz schön an der Nase herum.
>Vielleicht ist es ja keine böse Absicht, aber du führst hier die Leute >ganz schön an der Nase herum. Ich weiß ehrlich gesagt nicht, was Du meinst. Ich halte die Integration einer Library in die Arduino-Umgebung nach wie vor für einen hervorragenden Test. Es kann damit nämlich gezeigt werden, dass - eine Library wenig Speicher verbraucht ( Arduino Uno, 32KFlash, 2kRam) - dass sie auch für 8Bit Prozessoren geeignet ist und bei richtiger Integration der Library: - Der One-Click-Test auf Eignung >Jetzt mal Hand auf's Herz: Wie lange hättest du gebraucht, um das selber >herauszufinden? Wirklich nur ein paar Minuten? Wie kommst Du auf den schmalen Grad? Gefühlsmässig habe ich dazu eine viertel Stunde gebraucht. Was mich an den Routinen gestört hat, ist das verwenden fester Typen und die starre Struktur. Meiner Meinung nach sind solche Threads sehr nützlich zu Materialsammlung. Das ist, was jeder Student lernt: Erst die Analyse des Standes der Technik durch umfangreiche Materialrecherche. Wenn ich mir diesen Thread so anschaue, gibt es genau einen Vorschlag: Die "Eigen Library" und ich kann mir kaum vorstellen, dass dies wirklich die einzige Software dieser Art ist.
Markus schrieb: >>Vielleicht ist es ja keine böse Absicht, aber du führst hier die Leute >>ganz schön an der Nase herum. > > Ich weiß ehrlich gesagt nicht, was Du meinst. > Ich halte die Integration einer Library in die Arduino-Umgebung nach wie > vor für einen hervorragenden Test. Ok, das ist jetzt im Nachhinein klar. Aber zwischen deinen Beiträgen vom 15.05.2016 18:43 (wo du das ersten Mal den Arduino ins Spiel brachtest) und vom 19.05.2016 10:14 (wo du erklärtest, dass der Arduino nur der Prüfstein sein soll), ging ich (und offensichtlich auch andere) davon aus, das der Arduino das Zielsystem ist. Mehr noch: Deine weiteren Beiträge ließen annehmen, dass die Bibliothek als vorgefertigtes Paket mit allen Arduino-spezifischen Compiler- und Linker-Einstellungen verfügbar sein soll, was die Auswahl natürlich sehr einschränkt. Markus schrieb: >>Jetzt mal Hand auf's Herz: Wie lange hättest du gebraucht, um das selber >>herauszufinden? Wirklich nur ein paar Minuten? > > Wie kommst Du auf den schmalen Grad? Gefühlsmässig habe ich dazu eine > viertel Stunde gebraucht. Die folgende Aussage erweckte aber den Eindruck, dass du in der Beurteilung fremder Software noch nicht ganz so fit bist: Markus schrieb: > Das Problem ist hier nur, dass ich mich vermutlich eine Woche mit der > Eigen-Library beschäftigen muss, bis ich diese Fragen für mich > beantworten kann. Und wenn du tatsächlich in einer Viertelstunde herausgefunden hast, dass der Code für dich nicht taugt, warum hast du das dann nicht gleich mit dazu geschrieben? So musste man davon ausgehen, dass dieser Code deinen Wünschen voll entspricht und du nur noch weitere Alternativen mit ähnlichem Funktionsumfang suchst. Markus schrieb: > Wenn ich mir diesen Thread so anschaue, gibt es genau einen Vorschlag: > Die "Eigen Library" Die Eigen ist halt die wahrscheinlich verbreitetste Lineare-Algebra- Bibliothek für C++. Es gibt davon sogar einen Branch für AVR-Arduinos, der zeigt, dass die Bibliothek auf AVRs tatsächlich lauffähig ist. Allerdings scheint das Prohekt eingeschlafen zu sein: https://github.com/vancegroup/EigenArduino > und ich kann mir kaum vorstellen, dass dies wirklich die einzige > Software dieser Art ist. Du kannst dir auch noch die Armadillo-Bibliothek anschauen, die dir aber vermutlich genauso wenig zusagen wird wie die Eigen: http://arma.sourceforge.net/ Markus schrieb: > Dann investiere ich lieber einen halben Tag für die paar Funktionen > die ich brauche und programmiere es selber. Wenn du tatsächlich nur die paar von dir genannten Funktionen brauchst, frage ich mich wirklich, warum du das nicht schon längst getan hast. Das ist auf jeden Fall weniger Aufwand als - erst hier im Forum nachzufragen, - mit anderen herumzudiskutieren, - (vielleicht) einen Kandidaten zu finden, der wenigstens halbwegs passend ist und - diesen Kandidaten schließlich noch an die eigenen Bedürfnisse anzupassen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.