Hallo zusammen,
jona2004 hat geschrieben:Ob es den Aufwand wert ist da eigene Verbinder zu bauen lasse ich mal dahingestellt sein.
Essentiell ist es nicht, schön wäre es denke ich schon. Mal sehen was da draus wird.
jona2004 hat geschrieben:
Zum Thema - fischertechnik Blöcke:
Ich war nicht davon ausgegangen, dass die Blöcke die Farbe ändern, aber ich hatte erwartet, dass es einige spezifische Blöcke geben würde. Z.B. zur Ansteuerung von Motoren, damit man nicht immer beide Ausgänge "von Hand" ansteuern muss.
MasterOfGizmo hat geschrieben:Ich denke auch, dass es verschieden abstrakte Blöcke geben wird. Z.B. einen Turtle-Robot, bei dem man einfach einstellt, an welchen beiden Ausgängen die beiden Radmotoren hängen. Wie man das nachher darstellt muss man wohl klären, wenn es soweit ist.
Ja, solche Blöcke wird es geben. Vielleicht nicht direkt zum Start, aber später denke ich schon.
Die sind dann aber auch nicht wirklich Fischertechnik-spezifisch, sondern eher spezifisch für eine Klasse von Modellen (ein [Fahre X Schritte vorwärts] ist für einen Fahr-Roboter sinnvoll, für ein Industriemodell oder eine Kugelbahn eher nicht) oder sogar spezifisch für ein spezielles Modell (für ein [Dreh dich um X° nach rechts] muss man nicht nur wissen, an welchen Ausgängen die Fahrmotoren hängen, sondern auch, wieviele Motor-Schritte einem Zentimeter Bewegung von Radumfang/Kette entsprechen und wie weit die Räder voneinander entfernt sind).
Wie ich das am Besten abbilde weiß ich noch nicht. Möglicherweise über eine zusätzliche Konfigurationsseite, wo man genau solche Einstellungen machen kann (an welchen Ausgängen hängen Motoren, wieviele Motorschritte entsprechen einem Zentimeter Bewegung, welcher Eingang ist ein Schalter, welcher ist ein Widerstand, ...). Die Einstellungen wiederum wählen letztendlich aus, welche Blöcke und Blockeinstellungen man sieht (wenn das Modell keine Fahrmotoren hat, dann braucht man auch keine "Turtle-Blöcke", und wenn an O1 eine LED hängt, dann muss man in der Auswahl für die Motoren M1 auch nicht anzeigen).
Und wo ich diese Blöcke einsortiere weiß ich auch noch nicht genau. Ich tendiere zu allgemeinen Kategorien wie "Aktoren" und "Sensoren", aber da muss man eventuell einfach etwas experimentieren (oder sich von existierenden Projekt inspirieren lassen).
jona2004 hat geschrieben:
Das wirft für mich die Frage auf was genau das Einsatzgebiet sein soll.
Zum einen gibt es RoboPro - ist ja nicht tot - Da sind solche Dinge wie Motoren, Lampen, Fototransistoren recht übersichtlich grafisch und m.E. kindgerechter dargestellt.
Zum anderen textbasiertes Python.
Nicht jedes Kind mag RoboPro (mein Sohn mag es z.B. nicht

).
Und - wichtiger - um mit RoboPro den TXT zu programmieren, braucht man zwingend einen Windows-PC (oder zumindest Linux mit Wine - das geht zwar, aber nicht perfekt). Mein Ziel für die Community-Firmware ist, da Entwicklungsumgebungen mitzubringen für die man außer dem TXT nur "irgendwas mit einem Browser" braucht - egal ob das jetzt ein Windows-PC, Linux-PC, Mac, Tablet oder sogar ein Smartphone ist. Sicher, Einschränkungen wird es immer geben (Jupyter ist ohne Tastatur etwas unhandlich, und auch mit RoboBlocks wird man auf dem Winz-Bildschirm eines Smartphones wohl nicht allzu glücklich), aber im Prinzip will ich so viele Clients wie nur irgendwie möglich unterstützen.
Außerdem können wir mit unserer eigenen Umgebung auch neue Konzepte ausprobieren und umsetzen, während wir bei RoboPro darauf angewiesen sind, dass Fischertechnik diese Ideen ebenfalls gut findet und unterstützt. Ein Beispiel: Ich habe vor, in RoboBlocks von Anfang an ein eventbasiertes Programmiermodell zu verwenden, bei dem die einzelnen Codeblöcke dann gegebenenfalls auch parallel ausgeführt werden. Soweit ich weiß geht das in RoboPro nicht (ich kenne RoboPro allerdings auch nur oberflächlich, mag sein dass ich mich da irre und es doch Mutithreading gibt). Und wenn man erstmal so ein eventbasiertes System hat, dann ist der Schritt zu einem verteilten System - in dem dann mehrere TXTs über WLAN zusammenarbeiten - nicht mehr weit. Und
das geht mit RoboPro ganz definitiv nicht, während es mit der Community-Firmware und Blockly nicht allzu schwer umzusetzen ist.
Und zuguterletzt soll RoboBlocks auch den Übergang zu textbasiertem Programmieren unterstützen: Aus den Blöcken wird Python-Code generiert, und diesen Python-Code kann man sich selbstverständlich auch anschauen (dass der dann auch ansehnlich ist ist unsere Aufgabe). Und wenn man mit seinem Programm irgendwann an die Grenzen von RoboBlocks stößt, dann ändert man einfach den Programmtyp in den Metadaten von "RoboBlocks" auf "GenericPython", und entwickelt mit einer "klassischen" Python-IDE weiter - mit dem vorher von RoboBlocks erzeugten Python-Code als Basis.
jona2004 hat geschrieben:
Zum Thema BlockPy -
Der Sinn des Hinweises war einfach, ob man sich da was abschauen kann. BlockPy unterstützt z.B. Python list und dict. Aber wenn man so tief eintaucht, kann man da nicht gleich Python hacken?
Auch gibt es da Blöcke um Grafik und Text auf den Bildschirm zu kriegen.
Zudem ist alles opensource.
Ah, ok - danke. Nein, ich denke wir werden direkt von BlockPy eher nicht so viel abschauen können. Soweit ich das beim Überfliegen sehen kann, liegt bei BlockPy das Hauptaugenmerk auf generischer Python-Programmierung, während RoboBlocks klar auf die Steuerung von Modellen ausgelegt sein wird. Da gibt es nicht so arg viele Überschneidungen. Und auch für Text und Grafik haben wir mit dem kleinen TXT-Touchscreen und unserem Darstellungskonzept da auch eine eher ungewöhnlich Umgebung. Da ist (auch dank PyQt) selberbauen vermutlich ebenfalls einfacher, als irgendwas halbwegs passendes zu suchen und anzupassen. Genauso bei generischen Datenstrukturen - sowas ist schnell runtergeschrieben. Wenn wir es irgendwann tatsächlich brauchen (für den Anfang sehe ich das ehrlich gesagt nicht - noch nicht mal die Listen, die Blockly schon direkt mitbringt).
Ich denke wenn wir irgendwo was abgucken, dann eher bei
OpenRoberta oder ähnlichen Projekten. Und da dann auch eher Konzepte als Code.